黄潞潞
2024-06-07 482f807361c9bc0dce2db949a29c755cf858548b
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
package foundation.user;
 
import foundation.capacity.ActorTarget;
import foundation.capacity.sight.Sight;
import foundation.json.IJSONProvider;
import foundation.json.IJSONWriter;
import foundation.org.Employee;
import foundation.org.Position;
import foundation.token.IOnlineUser;
import foundation.token.IUser;
import foundation.variant.provider.DataEvent;
 
public class OnlineUser extends IOnlineUser implements IJSONProvider {
 
    private String onlineCode;
    private User user;
    
    public OnlineUser(String onlineCode, IUser user) {  
        this.onlineCode = onlineCode;
        this.user = (User)user;
    }
    
    public static OnlineUser getInstance() {
        IOnlineUser one = localInstance.get();
        
        if (one == null) {
            return null;
        }
        
        OnlineUser onlineUser = (OnlineUser)one;
        return onlineUser;
    }
 
    public void collectActors() throws Exception {
        user.loadHierarchyAndCapacitys();
    }
 
    public ActorTarget getCurrentActor() throws Exception {
        return user.getCurrentActor(onlineCode);
    }
    
    public ActorTarget changeCurrentCapacity(String actorId) throws Exception {
        return user.changeCurrentActor(onlineCode, actorId);
    }
 
    public Sight getCurrentSight() throws Exception {
        return user.getCurrentSight(onlineCode);
    }
 
    public String getPassword() {
        return user.getPassword();
    }
 
    public void chagnePassword(String newPass) throws Exception {
        user.chagnePassword(newPass);
    }
    
    public String getOnlineCode() {
        return onlineCode;
    }
 
    public User getUser() {
        return user;
    }
    
    @Override
    public boolean isAdmin() {
        return user.isAdmin();
    }
    
    @Override
    public String getId() {
        return user.getId();
    }
    
    @Override
    public String getCode() {
        return user.getCode();
    }
    
    @Override
    public String getName() {
        return user.getName();
    }
 
    @Override
    public String getOrgId() {
        return user.getOrgId();
    }
    
    @Override
    public String getPositionId() throws Exception {
        Position position = user.getPosition(onlineCode);
        
        if (position == null) {
            return null;
        }
        
        return position.getId();
    }
    
    @Override
    public String getActorId() throws Exception {
        ActorTarget actor = user.getCurrentActor(onlineCode);
        
        if (actor == null) {
            return null;
        }
        
        return actor.getActorId();
    }
    
    @Override
    public String getPositionField() throws Exception {
        Position position = user.getPosition(onlineCode);
        
        if (position == null) {
            return null;
        }
        
        return position.getLevelField();
    }
 
    public Position getCurrentPosition() {
        return user.getCurrentPosition();
    }
    
    @Override
    public String getAccountId() throws Exception {
        ActorTarget actorTarget = user.getCurrentActor(onlineCode);
        
        if (actorTarget == null) {
            return null;
        }
        
        return actorTarget.getTargetId();
    }
 
    @Override
    public String getCompanyId() throws Exception {
        ActorTarget actorTarget = user.getCurrentActor(onlineCode);
        
        if (actorTarget == null) {
            return null;
        }
        
        return actorTarget.getCompanyId();
    }
 
    @Override
    public String getBUId() throws Exception {
        ActorTarget actorTarget = user.getCurrentActor(onlineCode);
        
        if (actorTarget == null) {
            return null;
        }
        
        return actorTarget.getBuId();
    }
    
    @Override
    public boolean isOrgFrozen() {
        boolean result = user.isOrgFrozen();
        return result;
    }
 
    @Override
    public boolean isAnymous() {
        return user.isAnymous();
    }
 
    @Override
    public boolean isLimitActive() {
        return user.isLimitActive();
    }
    
    @Override
    public String getEmployeeId() {
        Employee employee = user.getCurrentEmployee();
        if (employee == null) {
            return null;
        }
        return employee.getId();
    }
 
    public Employee getEmployee() {
        Employee employee = user.getCurrentEmployee();
        
        if (employee == null) {
            return null;
        }
        return employee;
    }
    
    @Override
    public String getEmployeeName() {
        Employee employee = user.getCurrentEmployee();
        
        if (employee == null) {
            return null;
        }
        return employee.getName();
    }
 
    @Override
    public Object getVariantValue(DataEvent dataEvent, String variantName) {
        return user.getVariantValue(dataEvent, variantName);
    }
 
    @Override
    public void writeJSON(IJSONWriter writer) {
        writer.beginObject();
        
        //1. user write
        user.writeJSONBody(writer);
        
        //2. online user write
        writeJSONBody(writer);
        
        writer.endObject();
    }
 
    private void writeJSONBody(IJSONWriter writer) {
        try {
            ActorTarget actor = user.getCurrentActor(onlineCode);
            if (actor != null) {
                writer.beginObject("currentActor");
                actor.writeJSONBody(writer);
                writer.endObject();
            }
            else {
                writer.writeNull("currentCapacity");
            }
            
            Employee employee = user.getCurrentEmployee();
            if (employee != null) {
                writer.beginObject("employee");
                employee.writeJSONBody(writer);
                writer.endObject();
            }
            else {
                writer.writeNull("employee");
            }
            
            
            
            writer.write("position_level_field", getPositionField());
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}