diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index adea249..ce460af 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -133,25 +133,13 @@ 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定义为主管角色 - List directorId = SysDeptAndUserUtil.getDeptDirectorIdByDeptId(deptId); - if(!CollectionUtils.isEmpty(directorId)){ - assigneeList.addAll(directorId); + List directorIds = SysDeptAndUserUtil.getDeptDirectorIdByDeptId(deptId); + if(!CollectionUtils.isEmpty(directorIds)){ + assigneeList.addAll(directorIds); } } else if (AssigneeSetTypeEnum.SELF_SELECT == settype) { // TODO: 2022/12/27 发起人自选审批人(需求暂无此功能) @@ -165,18 +153,17 @@ //节点选择某级主管审批,级别最小是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 userId = String.valueOf(tIdMap.get("id")); - + String userId = directorIds.get(0); if (2 == directorLevel) { - userIdList.forEach(idMap -> { - assigneeList.add(String.valueOf(idMap.get("id"))); - }); + assigneeList.addAll(directorIds); } else if (3 == directorLevel) { List> tUserIdList = getLeaderByUserId(userId); if (!CollectionUtils.isEmpty(tUserIdList)) { @@ -286,6 +273,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