BpmUserScript.java
4.43 KB
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
package com.hotent.runtime.script;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.hotent.base.feign.UCFeignService;
import com.hotent.base.groovy.IUserScript;
import com.hotent.base.util.AppUtil;
import com.hotent.base.util.BeanUtils;
import com.hotent.base.util.JsonUtil;
import com.hotent.bpm.api.cmd.ActionCmd;
import com.hotent.bpm.api.constant.BpmConstants;
import com.hotent.bpm.api.context.ContextThreadUtil;
import com.hotent.bpm.api.helper.identity.BpmIdentityConverter;
import com.hotent.bpm.api.model.identity.BpmIdentity;
import com.hotent.bpm.model.identity.DefaultBpmIdentity;
import com.hotent.uc.api.constant.GroupTypeConstant;
import com.hotent.uc.api.impl.model.UserFacade;
import com.hotent.uc.api.model.IGroup;
import com.hotent.uc.api.model.IUser;
import com.hotent.uc.api.service.IParamService;
import com.hotent.uc.api.service.IUserGroupService;
import com.hotent.uc.api.service.IUserService;
/**
* 人员脚本 作用:可用于节点处理人
* @author Administrator
*/
@Service
public class BpmUserScript implements IUserScript {
@Resource
IUserService userService;
@Resource
IUserGroupService userGroupService;
@Resource
UCFeignService ucFeignService;
@Resource
IParamService paramService;
/**
* 将用户列表转换成BpmIdentity列表
* @param list
* @return
*/
private Set<BpmIdentity> convertUserList(List<IUser> list){
Set<BpmIdentity> identitys = new LinkedHashSet<BpmIdentity>();
for (IUser iUser : list) {
if(BeanUtils.isNotEmpty(iUser) && BeanUtils.isNotEmpty(iUser.getStatus()) && iUser.getStatus()==1){
DefaultBpmIdentity bpmIdentity = new DefaultBpmIdentity();
bpmIdentity.setId(iUser.getUserId());
bpmIdentity.setName(iUser.getFullname());
bpmIdentity.setType(BpmIdentity.TYPE_USER);
identitys.add(bpmIdentity);
}
}
return identitys;
}
/**
* 根据角色编码获取人员列表
* @param roleId
* @return
*/
public Set<BpmIdentity> getListUserByRoleId(String roleCode) {
IGroup role = userGroupService.getGroupByIdOrCode(GroupTypeConstant.ROLE.key(), roleCode);
List<IUser> list = userService.getUserListByGroup(GroupTypeConstant.ROLE.key(), role.getGroupId(),role.getGroupCode());
return convertUserList(list);
}
/**
* 根据岗位编码获取人员列表
* @param roleId
* @return
*/
public Set<BpmIdentity> getListUserByRelCode(String relCode) {
ArrayNode array = ucFeignService.getUserByPost(relCode);
List<IUser> list = new ArrayList<IUser>();
if(BeanUtils.isNotEmpty(array)){
for (Object node : array) {
try {
ObjectNode obj = (ObjectNode) JsonUtil.toJsonNode(node);
UserFacade user = new UserFacade();
user.setId(obj.get("id").asText());
user.setUserId(obj.get("id").asText());
user.setAccount(obj.get("account").asText());
user.setFullname(obj.get("fullname").asText());
user.setStatus(BeanUtils.isNotEmpty(obj.get("status"))?obj.get("status").asInt():0);
list.add(user);
} catch (IOException e) {}
}
}
return convertUserList(list);
}
/**
* 获取当前用户上级部门中指角色编码的人员
* @param roleId
* @return
*/
public Set<BpmIdentity> getListUserByParentOrgRoleCode(String roleCode) {
IGroup role = userGroupService.getGroupByIdOrCode(GroupTypeConstant.ROLE.key(), roleCode);
List<IUser> list = userService.getUserListByGroup(GroupTypeConstant.ROLE.key(), role.getGroupId(),role.getGroupCode());
// 求解出当前用户主组织的上级部门的人员
return convertUserList(list);
}
/**
* 获取申请人所在主组织的副总(配置组织参数:副总裁实现)
* @param roleId
* @return
*/
public Set<BpmIdentity> getUserByOrgParamsAlias(String alias) {
ActionCmd taskCmd = ContextThreadUtil.getActionCmd();
String userId = (String) taskCmd.getVariables().get(BpmConstants.START_USER);
ObjectNode org = ucFeignService.getMainGroup(userId);
if(org==null){
return new LinkedHashSet<BpmIdentity>();
}
String value = paramService.getParamByGroup(org.get("groupId").asText(), alias)+"";
List<IUser> list = new ArrayList<IUser>();
IUser iUser = userService.getUserById(value);
list.add(iUser);
Set<BpmIdentity> set = convertUserList(list);
return set;
}
}