package foundation.org; import java.util.ArrayList; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; import foundation.util.Util; public class AccountMeta { protected static Logger logger; static { logger = LogManager.getLogger(AccountMeta.class); } public static enum Part { Master, Customer; } public static enum Level { Temp, Standard; } private Part part; private Level level; private String typeCode; private Mastership mastership; private String accountId; private String orgId; private List actors; public AccountMeta() { mastership = new Mastership(); } public static AccountMeta getCustomerInstance(Level level, Entity entity) { AccountMeta result = new AccountMeta(); result.part = Part.Customer; result.level = level; result.load(entity); return result; } public static AccountMeta getMasterInstance(Level level, Entity entity) { AccountMeta result = new AccountMeta(); result.part = Part.Master; result.level = level; result.load(entity); return result; } private void load(Entity entity) { //1. 加载归属关系 mastership.setCompanyId(entity.getString("company_id")); mastership.setCompanyName(entity.getString("company_name")); mastership.setBUId(entity.getString("bu_id")); mastership.setBUName(entity.getString("bu_name")); //2. 加载需求链角色码 typeCode = entity.getString("actor_code"); //3. 帐户ID accountId = entity.getString("id"); //4. 帐户所属公司主数据ID orgId = entity.getString("org_id"); } private void loadActors() throws Exception { actors = new ArrayList(); if (Util.isEmpty(typeCode)) { logger.error("account[{}]没有供应链角色", accountId); return; } DataObject dataObject = DataObject.getInstance("sys_right_actor_capacity"); EntitySet entitySet = dataObject.getTableEntitySet(new Filter("org_actor_code", typeCode)); for (Entity entity: entitySet) { String actorId = entity.getString("actor_id"); actors.add(actorId); } } public Part getPart() { return part; } public Level getLevel() { return level; } public String getTypeCode() { return typeCode; } public Mastership getMastership() { return mastership; } public String getAccountId() { return accountId; } public String getOrgId() { return orgId; } public List getActors() throws Exception { if (actors == null) { synchronized (this) { if (actors == null) { loadActors(); } } } return actors; } }