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