介绍
可处理人自定义,通过程序获取人员树
代码案例
package com.je.business.wf;
import com.je.common.base.util.SecurityUserHolder;
import com.je.core.entity.extjs.JSONTreeNode;
import com.je.rbac.model.AssignmentPermission;
import com.je.rbac.rpc.TreatableUserRpcServiceImpl;
import com.je.workflow.model.WorkFlowInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service(value = "myWorkFlowGetCustomUserParserService")
public class MyWorkFlowGetCustomUserParserServiceImpl implements MyWorkFlowGetCustomUserParserService {
@Autowired
private TreatableUserRpcServiceImpl treatableUserRpcService;
@Override
public JSONTreeNode getUsers(WorkFlowInfoVo workFlowInfoVo) {
//获取当前登录人的唯一id
String userDeptId = SecurityUserHolder.getCurrentAccount().getDeptId();
//是否包含当前登录人
Boolean addOwn = workFlowInfoVo.getAddOwn();
//是否是多人节点
Boolean multiple = workFlowInfoVo.getMultiple();
//业务bean信息
Map<String, Object> bean = workFlowInfoVo.getBean();
//当前节点id
String nodeId = workFlowInfoVo.getNodeId();
//当前节点名称
String nodeName = workFlowInfoVo.getNodeName();
//操作类型 2.2.3版本之后可用
WorkFlowInfoVo.ExecutionTypeEnum operationId = workFlowInfoVo.getOperationId();
AssignmentPermission permission = new AssignmentPermission();
//指定角色展示
String roleIds = "Ql0RYR3HggRgQ5wap9k";
JSONTreeNode roleJsonTree = findRoleUsersAndBuildTreeNode(userDeptId, roleIds, permission, true, multiple, addOwn);
//指定部门展示
String deptIds = "YEJoxnpY94uE3V4QGjh";
JSONTreeNode deptJsonTree = findDeptUsersAndBuildTreeNode(userDeptId, deptIds, permission, true, multiple, addOwn);
//指定人员展示
List<String> userDeptIds = new ArrayList<>();
userDeptIds.add("7cf7e4b9a8864354b58c813338ca0e1f");
userDeptIds.add("e0c50371df6f4aeaae6226985efcfc10");
JSONTreeNode userJsonTree = findUsersAndBuildTreeNodeByAccountIds(userDeptIds, true, multiple, addOwn);
//加载组织架构
JSONTreeNode orgJsonTree = findOrgStructureAndBuildTreeNode(userDeptId, permission, multiple, addOwn);
List<String> types = new ArrayList<>();
String starterUser = workFlowInfoVo.getStarterUser(); 2.2.3版本之后可用
types.add("LOGINED_USER");//当前登录人
types.add("DIRECT_LEADER");//直接领导
types.add("DEPT_LEADER");//部门领导
types.add("DEPT_MONITOR_LEADER");//监管部门领导
types.add("STARTER_USER");//流程启动人
types.add("TASK_ASSGINE");//指派人
types.add("TASK_ASSGINE_HEAD");//指派人直属领导
types.add("PREV_ASSIGN_USER");//前置任务指派人
types.add("PREV_ASSIGN_USER_DIRECT_LEADER");//前置任务指派人直接领导
types.add("DEPT_USERS");//本部门人员
types.add("DEPT_ALL_USERS");//本部门(包含子部门)人员
types.add("DEPT_MONITOR_USERS");//监管部门内人员
types.add("COMPANY_LEADERS");//本公司领导
types.add("COMPANY_MONITOR_LEADERS");//本公司监管领导
types.add("SUBSIDIARY");//所在子公司(展示组织结构)
JSONTreeNode specialJsonTree = findUserToSpecialProcessing(types, userDeptId, "", "",
starterUser, multiple, addOwn);
return null;
}
/**
* 指定角色展示
*
* @param userDeptId 用户唯一id,参照人员的id,用途 获取参照人信息,比如,获取参照人所在部门人员,获取参照人的直属领导等等
* @param roleIds 角色id,多个用,号分开
* @param perm 权限,不能为null
* @param orgFlag 是否按照公司结构展示
* @param multiple 是否是多人节点
* @param addOwn 是否过滤掉当前登录人
* @return
*/
private JSONTreeNode findRoleUsersAndBuildTreeNode(String userDeptId, String roleIds, AssignmentPermission perm, Boolean
orgFlag, Boolean multiple, Boolean addOwn) {
return treatableUserRpcService.findRoleUsersAndBuildTreeNode(userDeptId, roleIds, perm, orgFlag, multiple, addOwn);
}
/**
* 指定部门展示
*
* @param userDeptId 用户唯一id,参照人员的id,用途 获取参照人信息,比如,获取参照人所在部门人员,获取参照人的直属领导等等
* @param deptIds 部门id,多个用,号分开
* @param perm 权限,不能为null
* @param orgFlag 是否按照公司结构展示
* @param multiple 是否是多人节点
* @param addOwn 是否过滤掉当前登录人
* @return
*/
private JSONTreeNode findDeptUsersAndBuildTreeNode(String userDeptId, String deptIds, AssignmentPermission perm, Boolean
orgFlag, Boolean multiple, Boolean addOwn) {
return treatableUserRpcService.findDeptUsersAndBuildTreeNode(userDeptId, deptIds, perm, orgFlag, multiple, addOwn);
}
/**
* 指定人员展示
*
* @param userDeptIds 用户唯一id,参照人员的id,用途 获取参照人信息,比如,获取参照人所在部门人员,获取参照人的直属领导等等s
* @param orgFlag 是否按照公司结构展示
* @param multiple 是否是多人节点
* @param addOwn 是否过滤掉当前登录人
* @return
*/
private JSONTreeNode findUsersAndBuildTreeNodeByAccountIds(List<String> userDeptIds, Boolean orgFlag, Boolean
multiple, Boolean addOwn) {
return treatableUserRpcService.findUsersAndBuildTreeNodeByAccountIds(userDeptIds, orgFlag, multiple, addOwn);
}
/**
* 加载组织架构
*
* @param userDeptId 用户唯一id,参照人员的id,用途 获取参照人信息,比如,获取参照人所在部门人员,获取参照人的直属领导等等
* @param perm 权限,不能为null
* @param multiple 是否是多人节点
* @param addOwn 是否过滤掉当前登录人
* @return
*/
private JSONTreeNode findOrgStructureAndBuildTreeNode(String userDeptId, AssignmentPermission perm, Boolean
multiple, Boolean addOwn) {
return treatableUserRpcService.findOrgStructureAndBuildTreeNode(userDeptId, perm, multiple, addOwn);
}
/**
* 特殊处理
*
* @param types 参照以下类型:
* <p>
* LOGINED_USER("当前登录人","1"),
* DIRECT_LEADER("直接领导","2"),
* DEPT_LEADER("部门领导","3"),
* DEPT_MONITOR_LEADER("监管部门领导","4"),
* STARTER_USER("流程启动人","5"),
* TASK_ASSGINE("指派人","6"),
* TASK_ASSGINE_HEAD("指派人直属领导","7"),
* PREV_ASSIGN_USER("前置任务指派人","8"),
* PREV_ASSIGN_USER_DIRECT_LEADER("前置任务指派人直接领导","9"),
* DEPT_USERS("本部门人员","10"),
* DEPT_ALL_USERS("本部门(包含子部门)人员","11"),
* DEPT_MONITOR_USERS("监管部门内人员","12"),
* COMPANY_LEADERS("本公司领导","13"),
* COMPANY_MONITOR_LEADERS("本公司监管领导","14"),
* SUBSIDIARY("所在子公司(展示组织结构)","15")
* <p>
* @param userDeptId 用户唯一id,用于获取参照人信息,比如获取参照人所在部门人员,获取参照人的直属领导等等
* @param taskAssigner 任务指派人id上一个节点的提交人
* @param frontTaskAssigner 前置任务指派人id 上上个节点的提交人
* @param starterUser 流程启动人
* @param multiple 是否是多人节点
* @param addOwn 是否过滤掉当前登录人
* @return
*/
private JSONTreeNode findUserToSpecialProcessing(List<String> types, String userDeptId, String taskAssigner, String
frontTaskAssigner, String starterUser, Boolean multiple, Boolean addOwn) {
return treatableUserRpcService.findUserToSpecialProcessing(types, userDeptId, taskAssigner, frontTaskAssigner, starterUser, multiple, addOwn);
}
}
最后编辑: 于春辉 文档更新时间: 2024-11-08 17:00 作者:呼丽华