From 9c6a2288eec3ecfd42528d5d35b7d88fe897a475 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 26 Nov 2021 23:06:47 +0800
Subject: [PATCH] 部门tree 修改
---
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java | 10 ++
src/main/java/org/springblade/modules/system/vo/DeptVO.java | 1
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml | 138 +++++++++++++++++++++++++++++-----
src/main/java/org/springblade/modules/system/controller/DeptController.java | 4
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java | 33 ++++++++
src/main/java/org/springblade/modules/system/service/IDeptService.java | 2
6 files changed, 160 insertions(+), 28 deletions(-)
diff --git a/src/main/java/org/springblade/modules/system/controller/DeptController.java b/src/main/java/org/springblade/modules/system/controller/DeptController.java
index b4d5bf0..1b77122 100644
--- a/src/main/java/org/springblade/modules/system/controller/DeptController.java
+++ b/src/main/java/org/springblade/modules/system/controller/DeptController.java
@@ -191,8 +191,8 @@
*/
@GetMapping("/security_lazy-tree")
@ApiOperation(value = "懒加载树形结构", notes = "树形结构")
- public R<List<DeptVO>> securityLazyTree(String jurisdiction, Long parentId) {
- List<DeptVO> tree = deptService.securityLazyTree(jurisdiction, parentId);
+ public R<List<DeptVO>> securityLazyTree(String jurisdiction, Long parentId,Long deptId) {
+ List<DeptVO> tree = deptService.securityLazyTree(jurisdiction, parentId,deptId);
return R.data(tree);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
index b198041..9244c42 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -91,7 +91,8 @@
/**
* 懒加载获取部门树形结构,不包含顶级管理员公安局
*/
- List<DeptVO> securityLazyTree(@Param("jurisdiction") String jurisdiction, Long parentId);
+ List<DeptVO> securityLazyTree(@Param("jurisdiction") String jurisdiction,
+ @Param("parentId")Long parentId);
List<DeptVO> selectInfo();
List<DeptVO> selectInfos();
@@ -172,4 +173,11 @@
* @return
*/
List<DeptVO> lazyTreeByJurisdiction();
+
+ /**
+ * 查询所有的保安公司机构信息
+ * @return
+ */
+ List<DeptVO> securityDeptUnitList(@Param("parentId")Long parentId,
+ @Param("deptId")Long deptId);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
index 3c0a2ef..ba9ac4c 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -107,26 +107,64 @@
</select>
<!--查询保安公司列表,保安员管理-->
+<!-- <select id="securityLazyTree" resultMap="treeNodeResultMap">-->
+<!-- (-->
+<!-- SELECT-->
+<!-- id,-->
+<!-- parent_id,-->
+<!-- dept_name AS title,-->
+<!-- id AS "value",-->
+<!-- id AS "key",-->
+<!-- 0 AS "has_children"-->
+<!-- FROM-->
+<!-- blade_dept-->
+<!-- where is_deleted = 0-->
+<!-- and-->
+<!-- (id = 1413470343230877697-->
+<!-- or id = 1425366663452196865-->
+<!-- or id = 1420222768149966850-->
+<!-- or id = 1426354978959691778)-->
+<!-- )-->
+<!-- union-->
+<!-- (-->
+<!-- SELECT-->
+<!-- DISTINCT-->
+<!-- dept.id,-->
+<!-- dept.parent_id,-->
+<!-- dept.dept_name AS title,-->
+<!-- dept.id AS "value",-->
+<!-- dept.id AS "key",-->
+<!-- (-->
+<!-- SELECT-->
+<!-- CASE WHEN count(1) > 0 THEN 1 ELSE 0 END-->
+<!-- FROM-->
+<!-- blade_dept-->
+<!-- WHERE-->
+<!-- parent_id = dept.id and is_deleted = 0-->
+<!-- ) AS "has_children"-->
+<!-- FROM-->
+<!-- blade_dept dept-->
+<!-- left join-->
+<!-- sys_information si-->
+<!-- on-->
+<!-- si.departmentid = dept.id-->
+<!-- left join-->
+<!-- sys_jurisdiction sj-->
+<!-- on-->
+<!-- sj.id = si.jurisdiction-->
+<!-- WHERE-->
+<!-- 1=1-->
+<!-- and si.stats != 3 AND si.stats!=1-->
+<!-- AND dept.is_deleted = 0-->
+<!-- <if test="jurisdiction!=null and jurisdiction!='' and jurisdiction!='1372091709474910209'">-->
+<!-- and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})-->
+<!-- </if>-->
+<!-- )-->
+<!-- </select>-->
+
+
+ <!--查询保安公司列表,保安员管理-->
<select id="securityLazyTree" resultMap="treeNodeResultMap">
- (
- SELECT
- id,
- parent_id,
- dept_name AS title,
- id AS "value",
- id AS "key",
- 0 AS "has_children"
- FROM
- blade_dept
- where is_deleted = 0
- and
- (id = 1413470343230877697
- or id = 1425366663452196865
- or id = 1420222768149966850
- or id = 1426354978959691778)
- )
- union
- (
SELECT
DISTINCT
dept.id,
@@ -152,13 +190,69 @@
sys_jurisdiction sj
on
sj.id = si.jurisdiction
- WHERE
- 1=1
- and si.stats != 3 AND si.stats!=1
+ where
+ dept.dept_category != 0
AND dept.is_deleted = 0
+ and dept.id!= 1420222961377357825
+ and dept.parent_id!= 1420222961377357825
+ and dept.id!= 1418458374477549569
+ and dept.parent_id!= 1418458374477549569
+ and dept.id!= 1426355050199945218
<if test="jurisdiction!=null and jurisdiction!='' and jurisdiction!='1372091709474910209'">
and (sj.id = #{jurisdiction} or sj.parent_id = #{jurisdiction})
</if>
+ </select>
+
+
+ <!--查询所有的保安公司机构及子级信息-->
+ <select id="securityDeptUnitList" resultMap="treeNodeResultMap">
+ (
+ SELECT
+ id,
+ parent_id,
+ dept_name AS title,
+ id AS "value",
+ id AS "key",
+ 0 AS "has_children"
+ FROM
+ blade_dept
+ where id = #{deptId}
+ )
+ union
+ (
+ SELECT
+ dept.id,
+ dept.parent_id,
+ dept.dept_name AS title,
+ dept.id AS "value",
+ dept.id AS "key",
+ (
+ SELECT
+ CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+ FROM
+ blade_dept
+ WHERE
+ parent_id = dept.id
+ ) AS "has_children"
+ FROM
+ (
+ SELECT
+ id,parent_id,dept_name
+ FROM
+ (
+ SELECT
+ t1.id,t1.parent_id,t1.dept_name,
+ IF
+ ( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild
+ FROM
+ ( SELECT id, parent_id,dept_name FROM blade_dept t ORDER BY parent_id, id ) t1,
+ ( SELECT @pids := #{deptId} ) t2
+ ) t3
+ WHERE
+ ischild != 0
+ )
+ dept
+ where 1=1
)
</select>
diff --git a/src/main/java/org/springblade/modules/system/service/IDeptService.java b/src/main/java/org/springblade/modules/system/service/IDeptService.java
index ec16db1..16240e6 100644
--- a/src/main/java/org/springblade/modules/system/service/IDeptService.java
+++ b/src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -130,7 +130,7 @@
/**
* 懒加载获取部门树形结构,不包含顶级管理员公安局
*/
- List<DeptVO> securityLazyTree(String jurisdiction, Long parentId);
+ List<DeptVO> securityLazyTree(String jurisdiction, Long parentId,Long deptId);
List<DeptVO> selectInfo();
List<DeptVO> selectInfos();
List<DeptVo> selDeptList();
diff --git a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
index 8763098..16ca03a 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -234,10 +234,41 @@
* 懒加载获取部门树形结构,不包含顶级管理员公安局
*/
@Override
- public List<DeptVO> securityLazyTree(String jurisdiction, Long parentId) {
+ public List<DeptVO> securityLazyTree(String jurisdiction, Long parentId,Long deptId) {
+ //如果传了deptId
+ if (null!=deptId){
+ //递归查询
+// recursionDeptInfo(deptVOS, list);
+ //tree 组装并返回
+ return ForestNodeMerger.merge(baseMapper.securityDeptUnitList(null,deptId));
+ }
return ForestNodeMerger.merge(baseMapper.securityLazyTree(jurisdiction, parentId));
}
+ /**
+ * 递归查询子级菜单
+ * @param deptVOS
+ * @param list
+ * @return
+ */
+ private List<DeptVO> recursionDeptInfo(List<DeptVO> deptVOS,List<DeptVO> list) {
+ //如果有子级
+ if (list.size()>0){
+ deptVOS.addAll(list);
+ //遍历子级
+ for (int i = 0; i < list.size(); i++) {
+ //查看是否有子级
+ List<DeptVO> childList = baseMapper.securityDeptUnitList(list.get(i).getId(), null);
+ //如果有
+ if (childList.size()>0){
+ //递归
+ recursionDeptInfo(deptVOS,childList);
+ }
+ }
+ }
+ return deptVOS;
+ }
+
/**
* 懒加载获取部门树形结构(包含用户数据)
diff --git a/src/main/java/org/springblade/modules/system/vo/DeptVO.java b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
index dd451d5..ccb8d4f 100644
--- a/src/main/java/org/springblade/modules/system/vo/DeptVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
@@ -80,5 +80,4 @@
* 机构类型名称
*/
private String deptCategoryName;
-
}
--
Gitblit v1.9.3