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 097a336..7725676 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 @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.RuRelation; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.utils.SysDeptAndUserUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RepositoryService; @@ -120,15 +121,10 @@ User user = userMapper.selectById(startUserId); //根据发起人查部门,根据部门查主管角色查主管,每个部门只有一个主管,根据角色和部门获取主管 //sys_role表tips字段区分角色,director定义为主管角色 - List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + - "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + - "JOIN sys_user su ON srr.USERID = su.ID " + - "WHERE sr.DEPT_ID = {0}" + - "AND sr.TIPS = {1}" + - "AND su.DEPT_ID = {0}", String.valueOf(user.getDeptId()), "director"); - Map idMap = list.get(0); - String id = String.valueOf(idMap.get("id")); - assigneeList.add(id); + String directorId = SysDeptAndUserUtil.getDeptDirectorIdByDeptId(user.getDeptId()); + if(!"".equals(directorId)){ + assigneeList.add(directorId); + } } else if (AssigneeSetTypeEnum.SELF_SELECT == settype) { // TODO: 2022/12/27 发起人自选审批人(需求暂无此功能) @@ -168,21 +164,17 @@ if(CollectionUtils.isEmpty(deptIds)){ deptIds.add(String.valueOf(deptId)); } - List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + - "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + - "JOIN sys_user su ON srr.USERID = su.ID " + - "WHERE (sr.DEPT_ID = {2} or sr.DEPT_ID in {0})" + - "AND sr.TIPS = {1}" + - "AND su.DEPT_ID = {2}", deptIds, "director", String.valueOf(deptId)); + List> list = SysDeptAndUserUtil.getUserIdsByDeptIdAndDeptIds(deptIds, deptId); if(CollectionUtils.isEmpty(list)){ break; } Map idMap = list.get(0); String id = String.valueOf(idMap.get("id")); - assigneeList.add(id); + list.forEach(l -> { + assigneeList.add(String.valueOf(l.get("id"))); + }); startUserId = id; } - // TODO: 2023/1/13 以上逻辑需联调测试验证 } } 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 097a336..7725676 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 @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.RuRelation; import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.utils.SysDeptAndUserUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RepositoryService; @@ -120,15 +121,10 @@ User user = userMapper.selectById(startUserId); //根据发起人查部门,根据部门查主管角色查主管,每个部门只有一个主管,根据角色和部门获取主管 //sys_role表tips字段区分角色,director定义为主管角色 - List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + - "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + - "JOIN sys_user su ON srr.USERID = su.ID " + - "WHERE sr.DEPT_ID = {0}" + - "AND sr.TIPS = {1}" + - "AND su.DEPT_ID = {0}", String.valueOf(user.getDeptId()), "director"); - Map idMap = list.get(0); - String id = String.valueOf(idMap.get("id")); - assigneeList.add(id); + String directorId = SysDeptAndUserUtil.getDeptDirectorIdByDeptId(user.getDeptId()); + if(!"".equals(directorId)){ + assigneeList.add(directorId); + } } else if (AssigneeSetTypeEnum.SELF_SELECT == settype) { // TODO: 2022/12/27 发起人自选审批人(需求暂无此功能) @@ -168,21 +164,17 @@ if(CollectionUtils.isEmpty(deptIds)){ deptIds.add(String.valueOf(deptId)); } - List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + - "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + - "JOIN sys_user su ON srr.USERID = su.ID " + - "WHERE (sr.DEPT_ID = {2} or sr.DEPT_ID in {0})" + - "AND sr.TIPS = {1}" + - "AND su.DEPT_ID = {2}", deptIds, "director", String.valueOf(deptId)); + List> list = SysDeptAndUserUtil.getUserIdsByDeptIdAndDeptIds(deptIds, deptId); if(CollectionUtils.isEmpty(list)){ break; } Map idMap = list.get(0); String id = String.valueOf(idMap.get("id")); - assigneeList.add(id); + list.forEach(l -> { + assigneeList.add(String.valueOf(l.get("id"))); + }); startUserId = id; } - // TODO: 2023/1/13 以上逻辑需联调测试验证 } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/SysDeptAndUserUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/SysDeptAndUserUtil.java new file mode 100644 index 0000000..206d766 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/SysDeptAndUserUtil.java @@ -0,0 +1,65 @@ +package com.casic.missiles.utils; + +import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/8/12 11:24 + */ +public class SysDeptAndUserUtil { + + /** + * 根据部门获取部门负责人id + * @param deptId + * @return + */ + public static String getDeptDirectorIdByDeptId(Long deptId){ + List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + +// "WHERE sr.DEPT_ID = {0}" + + "WHERE "+ + "sr.TIPS = {1}" + + "AND su.DEPT_ID = {0}", String.valueOf(deptId), "director"); + if(CollectionUtils.isEmpty(list)){ + return ""; + } + Map idMap = list.get(0); + return String.valueOf(idMap.get("id")); + } + + /** + * 根据用户id获取该用户为主管时的部门信息 + * @param userId + * @return + */ + public static Map getDirectDeptByUserId(Long userId) { + Map resultMap = SqlRunner.db().selectOne( + "SELECT su.DEPT_ID as deptId, sd.SIMPLE_NAME AS deptName FROM sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + + "JOIN sys_dept sd ON su.DEPT_ID = sd.ID " + + "WHERE su.ID = {0}" + + "AND sr.TIPS = {1}", String.valueOf(userId), "director"); + return resultMap; + } + + public static List> getUserIdsByDeptIdAndDeptIds(List deptIds, Long deptId){ + List> list = SqlRunner.db().selectList("select su.ID as id from sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + +// "WHERE (sr.DEPT_ID = {2} or sr.DEPT_ID in {0})" +//角色所在的组织机构及该结构的子结构 + "WHERE "+ + "sr.TIPS = {1}" + + "AND su.DEPT_ID = {2}", deptIds, "director", String.valueOf(deptId)); + return list; + } + + + +}