瀏覽代碼

登陆人列表审核权限获取调整

user5 2 年之前
父節點
當前提交
f1b5f531bd

+ 1 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/zs/zsReimbursement/approvalInfo/controller/ZsReimbursementInfoController.java

@@ -68,7 +68,7 @@ public class ZsReimbursementInfoController {
         IPage<ZsRetureListDto> iPage = service.list(page, dto);
         iPage.getRecords().stream().forEach(i -> {
             if (StringUtils.isNotBlank(i.getProcInsId()) && StringUtils.isNotBlank(i.getTaskId())) {
-                i.setAuditUserIds(flowTaskService.getTaskAuditUsers(i.getProcInsId(), i.getTaskId()));  // 获取数据审核人
+                i.setAuditUserIds(flowTaskService.getTaskAuditUsers(i.getTaskId()));  // 获取数据审核人
             }
         });
         return ResponseEntity.ok(iPage);

+ 10 - 157
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

@@ -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;
     }
 }