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<String> 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<String>();
|
|
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<String> getActors() throws Exception {
|
if (actors == null) {
|
synchronized (this) {
|
if (actors == null) {
|
loadActors();
|
}
|
}
|
}
|
|
return actors;
|
}
|
}
|