From 1215c74cb4a89d0f54da614ba5c7f4b9d6d2acb5 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Sat, 17 Jul 2021 11:42:40 +0800
Subject: [PATCH] 处警员树接口修改

---
 src/main/java/org/springblade/modules/catalog/service/catalogService.java          |    3 
 src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.xml             |  110 ++++++++++++++++++++-------
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.java                |    4 +
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml                 |   37 +++++++++
 src/main/java/org/springblade/modules/system/controller/DeptController.java        |   12 +++
 src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java     |   10 ++
 src/main/java/org/springblade/modules/system/service/IDeptService.java             |    5 +
 src/main/java/org/springblade/modules/catalog/controller/catalogController.java    |    5 
 src/main/java/org/springblade/modules/catalog/service/impl/CatalogServiceImpl.java |    3 
 src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.java            |    5 +
 10 files changed, 159 insertions(+), 35 deletions(-)

diff --git a/src/main/java/org/springblade/modules/catalog/controller/catalogController.java b/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
index f1296d6..657de8e 100644
--- a/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
+++ b/src/main/java/org/springblade/modules/catalog/controller/catalogController.java
@@ -37,6 +37,7 @@
 import org.springblade.modules.parcel.service.ParcelService;
 import org.springblade.modules.parcel.vo.ConditionVo;
 import org.springblade.modules.suser.service.ISuserService;
+import org.springblade.modules.system.vo.DeptVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -369,8 +370,8 @@
 	 * @return
 	 */
 	@GetMapping("/getBigTree")
-	public R<List<catalogVO>> getBigTree() {
-		List<catalogVO> tree = catalogService.getBigTree();
+	public R<List<DeptVO>> getBigTree() {
+		List<DeptVO> tree = catalogService.getBigTree();
 		return R.data(tree);
 	}
 
diff --git a/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.java b/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.java
index 0a98edd..4c6b33f 100644
--- a/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.java
+++ b/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.java
@@ -16,9 +16,11 @@
  */
 package org.springblade.modules.catalog.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.modules.catalog.entitly.catalog;
 import org.springblade.modules.catalog.vo.catalogVO;
+import org.springblade.modules.system.vo.DeptVO;
 
 import java.util.List;
 import java.util.Map;
@@ -48,5 +50,6 @@
 	 * 获取行政区--》客户--》部门机构 --》安保人员 树形数据
 	 * @return
 	 */
-	List<catalogVO> getBigTree();
+	@SqlParser(filter=true)
+	List<DeptVO> getBigTree();
 }
diff --git a/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.xml b/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.xml
index 1c1944f..509643d 100644
--- a/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.xml
+++ b/src/main/java/org/springblade/modules/catalog/mapper/catalogMapper.xml
@@ -126,42 +126,92 @@
     </insert>
 
     <!--获取行政区-》客户-》部门机构 -》安保人员 树形数据-->
+<!--    <select id="getBigTree" resultMap="treeNodeResultMap">-->
+<!--        (-->
+<!--            SELECT-->
+<!--                id,-->
+<!--                pId as parent_id,-->
+<!--                name AS title,-->
+<!--                id AS "value",-->
+<!--                id AS "key"-->
+<!--            FROM-->
+<!--                sys_catalog-->
+<!--        )-->
+
+<!--	    union all-->
+
+<!--        (-->
+<!--            select-->
+<!--                bu.id,-->
+<!--                sc.id as parent_id,-->
+<!--                bu.real_name AS title,-->
+<!--                bu.id AS "value",-->
+<!--                bu.id AS "key"-->
+<!--            from-->
+<!--                blade_user bu-->
+<!--            left join-->
+<!--                sys_catalog sc-->
+<!--            on-->
+<!--                sc.dept_id = SUBSTRING(bu.dept_id,-19)-->
+<!--            left join-->
+<!--			    blade_role br-->
+<!--	        on-->
+<!--			    bu.role_id = br.id-->
+<!--		    where-->
+<!--		        br.role_alias = '处警员'-->
+<!--		    and-->
+<!--		        bu.is_deleted=0-->
+<!--        )-->
+<!--    </select>-->
+
+
+    <!--获取行政区-》客户-》部门机构 -》安保人员 树形数据-->
     <select id="getBigTree" resultMap="treeNodeResultMap">
-        (
-            SELECT
-                id,
-                pId as parent_id,
-                name AS title,
-                id AS "value",
-                id AS "key"
-            FROM
-                sys_catalog
-        )
+        select DISTINCT  * from (
+            (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 and is_deleted = 0
+                        ) AS "has_children"
+                    FROM
+                        blade_dept dept
+                    WHERE
+                        dept.is_deleted = 0
+            )
 
-	    union all
+            union
 
-        (
-            select
+            (select
                 bu.id,
-                sc.id as parent_id,
-                bu.real_name AS title,
+				REVERSE(left(REVERSE(dept_id),LOCATE(',',REVERSE('dept_id'))-1)) as parent_id,
+                real_name AS title,
                 bu.id AS "value",
-                bu.id AS "key"
-            from
+                bu.id AS "key",
+                0 as "has_children"
+                from
                 blade_user bu
-            left join
-                sys_catalog sc
-            on
-                sc.dept_id = SUBSTRING(bu.dept_id,-19)
-            left join
-			    blade_role br
-	        on
-			    bu.role_id = br.id
-		    where
-		        br.role_alias = '处警员'
-		    and
-		        bu.is_deleted=0
-        )
+                left join
+                    blade_role br
+                    on
+                    bu.role_id = br.id
+                where
+                        br.role_alias = 'qfqkdw'
+                and
+                    bu.is_deleted=0
+            )
+        )c
     </select>
 
+
+
+
 </mapper>
diff --git a/src/main/java/org/springblade/modules/catalog/service/catalogService.java b/src/main/java/org/springblade/modules/catalog/service/catalogService.java
index 526b86b..5b5ada6 100644
--- a/src/main/java/org/springblade/modules/catalog/service/catalogService.java
+++ b/src/main/java/org/springblade/modules/catalog/service/catalogService.java
@@ -19,6 +19,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.modules.catalog.entitly.catalog;
 import org.springblade.modules.catalog.vo.catalogVO;
+import org.springblade.modules.system.vo.DeptVO;
 
 import java.util.List;
 import java.util.Map;
@@ -46,5 +47,5 @@
 	 * 获取行政区--》客户--》部门机构 --》安保人员 树形数据
 	 * @return
 	 */
-    List<catalogVO> getBigTree();
+    List<DeptVO> getBigTree();
 }
diff --git a/src/main/java/org/springblade/modules/catalog/service/impl/CatalogServiceImpl.java b/src/main/java/org/springblade/modules/catalog/service/impl/CatalogServiceImpl.java
index b132783..0b544fd 100644
--- a/src/main/java/org/springblade/modules/catalog/service/impl/CatalogServiceImpl.java
+++ b/src/main/java/org/springblade/modules/catalog/service/impl/CatalogServiceImpl.java
@@ -23,6 +23,7 @@
 import org.springblade.modules.catalog.mapper.catalogMapper;
 import org.springblade.modules.catalog.service.catalogService;
 import org.springblade.modules.catalog.vo.catalogVO;
+import org.springblade.modules.system.vo.DeptVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -93,7 +94,7 @@
 	 * @return
 	 */
 	@Override
-	public List<catalogVO> getBigTree() {
+	public List<DeptVO> getBigTree() {
 		return ForestNodeMerger.merge(baseMapper.getBigTree());
 	}
 }
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 c6cf0e7..193b86f 100644
--- a/src/main/java/org/springblade/modules/system/controller/DeptController.java
+++ b/src/main/java/org/springblade/modules/system/controller/DeptController.java
@@ -141,6 +141,18 @@
 		return R.data(tree);
 	}
 
+
+	/**
+	 * 懒加载获取部门树形结构--关联组织机构(包含保安员信息)
+	 */
+	@GetMapping("/lazy-tree-security")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "懒加载树形结构", notes = "树形结构")
+	public R<List<DeptVO>> lazyTreeSecurity(String tenantId, Long parentId, BladeUser bladeUser) {
+		List<DeptVO> tree = deptService.lazyTreeSecurity(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
+		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 4ef9f45..a07289e 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -16,6 +16,7 @@
  */
 package org.springblade.modules.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.common.vo.DeptVo;
 import org.springblade.modules.system.entity.Dept;
@@ -87,4 +88,7 @@
 	List<DeptVo> selDeptList();
 
 	List<DeptVO> selectInfo();
+
+	@SqlParser(filter=true)
+	List<DeptVO> lazyTreeSecurity(String tenantId, Long parentId);
 }
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 1a13009..da3d47c 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -99,6 +99,43 @@
         ORDER BY dept.sort
     </select>
 
+
+    <select id="lazyTreeSecurity" resultMap="treeNodeResultMap" >
+        select DISTINCT  * from (
+            (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 and is_deleted = 0
+                        ) AS "has_children"
+                    FROM
+                        blade_dept dept
+                    WHERE
+                        dept.is_deleted = 0
+            )
+
+            union
+
+            (select
+                id,
+                dept_id  parent_id,
+                real_name AS title,
+                id AS "value",
+                id AS "key",
+                0 as "has_children"
+                from blade_user
+            )
+        )c
+    </select>
+
     <select id="getDeptNames" resultType="java.lang.String">
         SELECT
         dept_name
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 817c770..0387ea4 100644
--- a/src/main/java/org/springblade/modules/system/service/IDeptService.java
+++ b/src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -129,4 +129,9 @@
 	 * @return
 	 */
 	List<DeptVo> selDeptList();
+
+	/**
+	 * 懒加载获取部门树形结构--关联组织机构(包含保安员信息)
+	 */
+    List<DeptVO> lazyTreeSecurity(String toStrWithEmpty, Long parentId);
 }
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 8fcaa17..cd4f668 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
@@ -181,4 +181,14 @@
 		return baseMapper.selDeptList();
 	}
 
+	/**
+	 * 懒加载获取部门树形结构--关联组织机构(包含保安员信息)
+	 */
+	@Override
+	public List<DeptVO> lazyTreeSecurity(String tenantId, Long parentId) {
+		if (AuthUtil.isAdministrator()) {
+			tenantId = StringPool.EMPTY;
+		}
+		return ForestNodeMerger.merge(baseMapper.lazyTreeSecurity(tenantId, parentId));
+	}
 }

--
Gitblit v1.9.3