P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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;
    }
}