|
@@ -999,163 +999,16 @@ public class FlowTaskService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取数据的全部审核人
|
|
|
+ * 获取当前节点审核人id信息集合
|
|
|
+ * @param taskId
|
|
|
+ * @return
|
|
|
*/
|
|
|
- public List<String> getTaskAuditUsers(String procInsId, String taskId) {
|
|
|
- // 获取当前节点的所有审核人配置
|
|
|
- List<AssigneeDto> assigneeDtoList = flowMapper.getAssigneeDtoByTaskId(taskId);
|
|
|
- // 获取当前流程的发起人id
|
|
|
- String startUserId = flowMapper.getStarterByProcInsId(procInsId);
|
|
|
-
|
|
|
- HashSet<String> candidateUserIds = new LinkedHashSet<> ();
|
|
|
- for (AssigneeDto flowAssignee : assigneeDtoList) {
|
|
|
- switch (flowAssignee.getType ()) {
|
|
|
- case "user":
|
|
|
- candidateUserIds.addAll (Arrays.asList (flowAssignee.getAssignValue ().split (",")));
|
|
|
- break;
|
|
|
- case "post":
|
|
|
- if( StrUtil.isNotBlank (flowAssignee.getAssignValue ())){
|
|
|
- String postId = flowAssignee.getAssignValue ();
|
|
|
- List<UserDTO> userList = SpringUtil.getBean ( UserService.class).findListByPostId (postId );
|
|
|
- candidateUserIds.addAll ( com.jeeplus.flowable.common.handler.CollectionUtils.extractToList (userList, "id"));
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- case "company":
|
|
|
- if(StrUtil.isNotBlank (flowAssignee.getAssignValue ())){
|
|
|
- String companyId = flowAssignee.getAssignValue ();
|
|
|
- List<User> userList = SpringUtil.getBean (UserService.class).lambdaQuery ().eq ( User::getCompanyId, companyId ).list ();
|
|
|
- candidateUserIds.addAll (com.jeeplus.flowable.common.handler.CollectionUtils.extractToList (userList, "id"));
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- case "depart":
|
|
|
- if(StrUtil.isNotBlank (flowAssignee.getAssignValue ())){
|
|
|
- String officeId = flowAssignee.getAssignValue ();
|
|
|
- List<User> userList = SpringUtil.getBean (UserService.class).lambdaQuery ().eq ( User::getOfficeId, officeId ).list ();
|
|
|
- candidateUserIds.addAll (com.jeeplus.flowable.common.handler.CollectionUtils.extractToList (userList, "id"));
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- case "role":
|
|
|
- if(StrUtil.isNotBlank (flowAssignee.getAssignValue ())){
|
|
|
- String[] roleIds = flowAssignee.getAssignValue ().split (",");
|
|
|
- for(String roleId: roleIds){
|
|
|
- List<UserDTO> userList = SpringUtil.getBean (UserService.class).findListByRoleId ( roleId );
|
|
|
- candidateUserIds.addAll (com.jeeplus.flowable.common.handler.CollectionUtils.extractToList (userList, "id"));
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case "applyUserId":
|
|
|
- candidateUserIds.add (flowAssignee.getAssignValue ());
|
|
|
- break;
|
|
|
- case "previousExecutor":
|
|
|
- HistoricTaskInstance lastHisTask = SpringUtil.getBean (HistoryService.class).createHistoricTaskInstanceQuery ().processInstanceId (procInsId).finished ()
|
|
|
- .includeProcessVariables ().orderByHistoricTaskInstanceEndTime ().desc ().list ().get (0);
|
|
|
-
|
|
|
- candidateUserIds.add(lastHisTask.getAssignee ());
|
|
|
- break;
|
|
|
- case "currentUserId":
|
|
|
- candidateUserIds.add( UserUtils.getCurrentUserDTO ().getId ());
|
|
|
- break;
|
|
|
- case "sql":
|
|
|
- Map userMap = SpringUtil.getBean (JdbcTemplate.class).queryForMap (flowAssignee.getAssignValue ());
|
|
|
- candidateUserIds.add(userMap.get ("id").toString ());
|
|
|
- break;
|
|
|
- case "custom":
|
|
|
- //根据你的自定义标记,请自行实现
|
|
|
-
|
|
|
- //如果字符串中包含 "currentUserSql:" 则进行如下代码替换和处理
|
|
|
- if(flowAssignee.getAssignValue ().contains("currentUserSql:")){
|
|
|
- //对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
|
|
|
- //用于查询当前登录人的部门主任人员信息
|
|
|
- UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
|
|
|
- String sql = flowAssignee.getAssignValue ();
|
|
|
- if(sql.contains("@currentUser.id")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("currentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
|
|
|
- }
|
|
|
- List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
- for (Map<String, Object> map : maps) {
|
|
|
- candidateUserIds.add(map.get ("id").toString ());
|
|
|
- }
|
|
|
- }
|
|
|
- //如果字符串中包含 "cwCurrentUserSql:" 则进行如下代码替换和处理
|
|
|
- if(flowAssignee.getAssignValue ().contains("cwCurrentUserSql:")){
|
|
|
- //对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
|
|
|
- //用于查询当前登录人的部门主任人员信息
|
|
|
- UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
|
|
|
- String sql = flowAssignee.getAssignValue ();
|
|
|
- if(sql.contains("@currentUser.id")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("cwCurrentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
|
|
|
- }
|
|
|
- if(sql.contains("@currentUser.officeDTO.name")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("cwCurrentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.officeDTO.name","'" + currentUserDTO.getOfficeDTO().getName() + "'");
|
|
|
- }
|
|
|
- List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
- for (Map<String, Object> map : maps) {
|
|
|
- candidateUserIds.add(map.get ("id").toString ());
|
|
|
- }
|
|
|
- }
|
|
|
- if(flowAssignee.getAssignValue ().contains("zsbxCurrentUserSql:")){
|
|
|
- //对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
|
|
|
- //用于查询当前登录人的部门主任人员信息
|
|
|
- UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
|
|
|
- String sql = flowAssignee.getAssignValue ();
|
|
|
- if(sql.contains("@currentUser.id")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("zsbxCurrentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.id","'" + currentUserDTO.getId() + "'");
|
|
|
- }
|
|
|
- if(sql.contains("@currentUser.officeDTO.name")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("zsbxCurrentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.officeDTO.name","'" + currentUserDTO.getOfficeDTO().getName() + "'");
|
|
|
- }
|
|
|
- List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
- for (Map<String, Object> map : maps) {
|
|
|
- candidateUserIds.add(map.get ("id").toString ());
|
|
|
- }
|
|
|
- }
|
|
|
- //如果字符串中包含 "gsldbxCurrentUserSql:" 则进行如下代码替换和处理
|
|
|
- if(flowAssignee.getAssignValue ().contains("gsldbxCurrentUserSql:")){
|
|
|
- String sql = flowAssignee.getAssignValue ();
|
|
|
- if(StringUtils.isNotBlank(startUserId)){
|
|
|
- //通过查询流程发起人确认发起人所在部门以及部门分管领导信息
|
|
|
- if(sql.contains("@currentUser.id")){
|
|
|
- //将标志进行去除
|
|
|
- sql = sql.replaceAll("gsldbxCurrentUserSql:","");
|
|
|
- //将判断条件进行替换
|
|
|
- sql = sql.replaceAll("@currentUser.id","'" + startUserId + "'");
|
|
|
- }
|
|
|
- } else {
|
|
|
- //如果找不到发起人信息 则审核人默认为 角色 总经办人员信息
|
|
|
- sql = "SELECT su.* FROM sys_user_role a LEFT JOIN sys_role sr ON sr.id = a.role_id LEFT JOIN sys_user su ON su.id = a.user_id LEFT JOIN sys_office so ON so.id = su.office_id WHERE sr.en_name = 'zjb'";
|
|
|
- }
|
|
|
- //设定部门分管领导为审核人
|
|
|
- List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
- if(null == maps || maps.size()==0){
|
|
|
- sql = "SELECT su.* FROM sys_user_role a LEFT JOIN sys_role sr ON sr.id = a.role_id LEFT JOIN sys_user su ON su.id = a.user_id LEFT JOIN sys_office so ON so.id = su.office_id WHERE sr.en_name = 'zjb'";
|
|
|
- maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
- }
|
|
|
- for (Map<String, Object> map : maps) {
|
|
|
- candidateUserIds.add(map.get ("id").toString ());
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- List<String> candidateIds = new ArrayList<> (candidateUserIds);
|
|
|
- return candidateIds;
|
|
|
+ public List<String> getTaskAuditUsers(String taskId) {
|
|
|
+ List<String> assignList = Lists.newArrayList ();
|
|
|
+ //获取当前节点审核人id信息集合
|
|
|
+ taskService.getIdentityLinksForTask ( taskId ).forEach ( identityLink -> {
|
|
|
+ assignList.add ( identityLink.getUserId () );
|
|
|
+ } );
|
|
|
+ return assignList;
|
|
|
}
|
|
|
}
|