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