diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/flowable/CounterSignListener.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/flowable/CounterSignListener.java index d1bc6ee..a422a71 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/flowable/CounterSignListener.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/flowable/CounterSignListener.java @@ -125,19 +125,7 @@ User user = userMapper.selectById(startUserId); //申请人为部门负责人,审批人为上级部门负责人 - QueryWrapper ruRelationWrapper = new QueryWrapper<>(); - ruRelationWrapper.eq("userid", user.getId()); - List ruRelations = ruRelationMapper.selectList(ruRelationWrapper); - List roleIds = ruRelations.stream().map(RuRelation::getRoleId).collect(Collectors.toList()); - QueryWrapper roleWrapper = new QueryWrapper<>(); - roleWrapper.in("id", roleIds); - List roles = roleMapper.selectList(roleWrapper); - List collectTips = roles.stream().map(Role::getTips).collect(Collectors.toList()); - Long deptId = user.getDeptId(); - if (collectTips.contains("director")) { - Dept dept = deptMapper.selectById(deptId); - deptId = dept.getPid(); - } + Long deptId = getDirectorDeptId(user.getId(), user.getDeptId()); //根据发起人查部门,根据部门查主管角色查主管,每个部门只有一个主管,根据角色和部门获取主管 //sys_role表tips字段区分角色,director定义为主管角色 @@ -157,16 +145,24 @@ //节点选择某级主管审批,级别最小是2,需要保证每级必须有主管(后续可以优化为用父部门获取某级主管)。1级用直接主管配置节点即可 String startUserId = execution.getVariable("root", String.class); Integer directorLevel = nodeUserJsonObject.getInteger("directorLevel"); - List> userIdList = getLeaderByUserId(startUserId); - if (CollectionUtils.isEmpty(userIdList)) { +// List> userIdList = getLeaderByUserId(startUserId); + User user = userMapper.selectById(startUserId); + Long deptId = getDirectorDeptId(user.getId(), user.getDeptId()); + List directorIds = SysDeptAndUserUtil.getDeptDirectorIdByDeptId(deptId); + if (CollectionUtils.isEmpty(directorIds)) { return; } //取其中一个主管,为获取该主管的上级主管用 - Map tIdMap = userIdList.get(0); + String beforeUserId = directorIds.get(0); + List> beforeUserIdList = getLeaderByUserId(beforeUserId); + if (CollectionUtils.isEmpty(beforeUserIdList)) { + return; + } + Map tIdMap = beforeUserIdList.get(0); String userId = String.valueOf(tIdMap.get("id")); if (2 == directorLevel) { - userIdList.forEach(idMap -> { + beforeUserIdList.forEach(idMap -> { assigneeList.add(String.valueOf(idMap.get("id"))); }); } else if (3 == directorLevel) { @@ -278,6 +274,28 @@ } /** + * 申请人为部门负责人,审批人为上级部门负责人 + * @param userId 申请人id + * @param deptId 申请人部门id + * @return + */ + private Long getDirectorDeptId(Long userId, Long deptId) { + QueryWrapper ruRelationWrapper = new QueryWrapper<>(); + ruRelationWrapper.eq("userid", userId); + List ruRelations = ruRelationMapper.selectList(ruRelationWrapper); + List roleIds = ruRelations.stream().map(RuRelation::getRoleId).collect(Collectors.toList()); + QueryWrapper roleWrapper = new QueryWrapper<>(); + roleWrapper.in("id", roleIds); + List roles = roleMapper.selectList(roleWrapper); + List collectTips = roles.stream().map(Role::getTips).collect(Collectors.toList()); + if (collectTips.contains("director")) { + Dept dept = deptMapper.selectById(deptId); + deptId = dept.getPid(); + } + return deptId; + } + + /** * 递归获取匹配taskId的节点 * @param nodeConfig * @param taskId