From 0dc45111f75bf924d65cec00019f70c405e05225 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 05 三月 2025 16:02:14 +0800 Subject: [PATCH] 主公司可以查看、办理子公司的任务 --- flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | 9 +++++++-- system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java | 7 +++++++ start/src/main/java/com/ycl/web/controller/system/SysDeptController.java | 1 + start/src/main/java/com/ycl/web/controller/system/SysLoginController.java | 9 +++++++++ system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java | 4 ++++ system/src/main/java/com/ycl/system/service/ISysDeptService.java | 8 ++++++++ system/src/main/resources/mapper/system/SysDeptMapper.xml | 14 ++++++++++++++ 7 files changed, 50 insertions(+), 2 deletions(-) diff --git a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java index ed65499..a789590 100644 --- a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java +++ b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java @@ -11,6 +11,7 @@ import com.ycl.domain.vo.FormDetailVO; import com.ycl.flow.FindNextNodeUtil; import com.ycl.service.ISysFormService; +import com.ycl.system.service.ISysDeptService; import com.ycl.system.service.ISysDictDataService; import com.ycl.system.service.ISysDictTypeService; import com.ycl.system.service.ISysUserService; @@ -47,6 +48,7 @@ private final TaskService taskService; private final HistoryService historyService; private final ISysUserService sysUserService; + private final ISysDeptService deptService; private final ISysDictTypeService sysDictDService; /** @@ -321,14 +323,17 @@ * @return */ public List<String> getCurrentUserGroups() { - String deptId = "dept:" + SecurityUtils.getLoginUser().getDeptId(); List<String> roleIds; if (CollectionUtils.isEmpty(SecurityUtils.getLoginUser().getUser().getRoles())) { roleIds = new ArrayList<>(1); } else { roleIds = SecurityUtils.getLoginUser().getUser().getRoles().stream().map(role -> role.getRoleId() + "").collect(Collectors.toList()); } - roleIds.add(deptId); + if (Objects.nonNull(SecurityUtils.getLoginUser().getDeptId())) { + List<Long> deptIds = deptService.getChildIds(SecurityUtils.getLoginUser().getDeptId()); + List<String> deptIdList = deptIds.stream().map(id -> "dept:" + id).collect(Collectors.toList()); + roleIds.addAll(deptIdList); + } return roleIds; } diff --git a/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java b/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java index bc4529d..60fa39e 100644 --- a/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java +++ b/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java @@ -154,4 +154,5 @@ dept.setParentId(approvalPortId); return Result.ok().data(deptService.selectDeptListNoAuth(dept)); } + } diff --git a/start/src/main/java/com/ycl/web/controller/system/SysLoginController.java b/start/src/main/java/com/ycl/web/controller/system/SysLoginController.java index 03c5da3..378adac 100644 --- a/start/src/main/java/com/ycl/web/controller/system/SysLoginController.java +++ b/start/src/main/java/com/ycl/web/controller/system/SysLoginController.java @@ -1,8 +1,10 @@ package com.ycl.web.controller.system; import java.util.List; +import java.util.Objects; import java.util.Set; +import com.ycl.system.service.ISysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -33,6 +35,8 @@ private final ISysMenuService menuService; private final SysPermissionService permissionService; + + private final ISysDeptService deptService; /** * 鐧诲綍鏂规硶 @@ -66,6 +70,11 @@ ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); + // 鑾峰彇褰撳墠鐧婚檰浜虹殑褰撳墠閮ㄩ棬鍙婁笅绾ф墍鏈夐儴闂� + if (Objects.nonNull(user.getDept())) { + List<Long> deptIds = deptService.getChildIds(user.getDept().getDeptId()); + ajax.put("childDeptList", deptIds); + } return ajax; } diff --git a/system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java b/system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java index 3859b4d..7fee73e 100644 --- a/system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java +++ b/system/src/main/java/com/ycl/system/mapper/SysDeptMapper.java @@ -124,4 +124,11 @@ Long selectByName(@Param("name") String projectOwnerUnit); + + /** + * 鑾峰彇鏌愰儴闂ㄧ殑瀛愰儴闂� + * @param deptId + * @return + */ + List<Long> getChildIds(@Param("deptId") Long deptId); } diff --git a/system/src/main/java/com/ycl/system/service/ISysDeptService.java b/system/src/main/java/com/ycl/system/service/ISysDeptService.java index 0db2984..708eea0 100644 --- a/system/src/main/java/com/ycl/system/service/ISysDeptService.java +++ b/system/src/main/java/com/ycl/system/service/ISysDeptService.java @@ -160,4 +160,12 @@ * @return */ List<StringTreeSelect> flowableAll(); + + /** + * 鑾峰彇鏌愰儴闂ㄧ殑涓嬬骇閮ㄩ棬 + * + * @param deptId + * @return + */ + List<Long> getChildIds(Long deptId); } diff --git a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java index af26005..5283434 100644 --- a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java +++ b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java @@ -427,4 +427,8 @@ } + @Override + public List<Long> getChildIds(Long deptId) { + return deptMapper.getChildIds(deptId); + } } diff --git a/system/src/main/resources/mapper/system/SysDeptMapper.xml b/system/src/main/resources/mapper/system/SysDeptMapper.xml index f4faa92..3aa7471 100644 --- a/system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -116,6 +116,20 @@ SELECT dept_id FROM sys_dept WHERE dept_name = #{name} and del_flag = '0' limit 1 </select> + <select id="getChildIds" parameterType="long" resultType="long"> + WITH RECURSIVE temp_table AS ( + SELECT + dept_id FROM sys_dept WHERE dept_id = #{deptId} AND del_flag = '0' + UNION ALL + SELECT + so.dept_id FROM sys_dept so INNER JOIN temp_table tb ON so.parent_id = tb.dept_id AND so.del_flag = '0' + ) + SELECT + dept_id + FROM + temp_table + </select> + <insert id="insertDept" parameterType="SysDept"> insert into sys_dept( <if test="deptId != null and deptId != 0">dept_id,</if> -- Gitblit v1.8.0