From 157b568be6abe0b759ab5cd3dd91ea829841cfa3 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 24 Jan 2024 14:38:01 +0800
Subject: [PATCH] 查询机构子机构及其本身

---
 src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml             |    2 
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.java                  |    2 
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml                   |   82 +++++++++++++++++++++++-----------------
 src/main/java/org/springblade/modules/district/service/impl/DistrictServiceImpl.java |   25 ++++--------
 src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java       |    3 -
 5 files changed, 58 insertions(+), 56 deletions(-)

diff --git a/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml b/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
index baeeace..244a2c4 100644
--- a/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
+++ b/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
@@ -71,7 +71,7 @@
         aoi_code aoiCode
         from jczz_district
         where is_deleted = 0
-        <if test="district.districtIdList!=null and district.districtIdList!=''">
+        <if test="district.districtIdList!=null and district.districtIdList.size() > 0">
             and id in
             <foreach collection="district.districtIdList" item="item" separator ="," open="("  close=")">
                 #{item}
diff --git a/src/main/java/org/springblade/modules/district/service/impl/DistrictServiceImpl.java b/src/main/java/org/springblade/modules/district/service/impl/DistrictServiceImpl.java
index aa068a7..0e9fa04 100644
--- a/src/main/java/org/springblade/modules/district/service/impl/DistrictServiceImpl.java
+++ b/src/main/java/org/springblade/modules/district/service/impl/DistrictServiceImpl.java
@@ -16,26 +16,20 @@
  */
 package org.springblade.modules.district.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.common.cache.SysCache;
-import org.springblade.common.node.TreeIntegerNode;
 import org.springblade.common.node.TreeStringNode;
 import org.springblade.common.utils.NodeTreeUtil;
-import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.modules.district.entity.DistrictEntity;
-import org.springblade.modules.district.vo.DistrictVO;
 import org.springblade.modules.district.mapper.DistrictMapper;
 import org.springblade.modules.district.service.IDistrictService;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.district.vo.DistrictVO;
 import org.springblade.modules.grid.service.IGridService;
 import org.springblade.modules.grid.vo.GridVO;
-import org.springblade.modules.property.service.IPropertyDistrictUserService;
-import org.springblade.modules.system.entity.Dept;
-import org.springblade.modules.system.service.IDeptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
 import java.util.Map;
@@ -55,13 +49,13 @@
 	@Override
 	public IPage<DistrictVO> selectDistrictPage(IPage<DistrictVO> page, DistrictVO district) {
 		List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
-		Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
-		List<DistrictVO> districtVOS = baseMapper.selectDistrictPage(page, district,regionChildCodesList,isAdministrator);
+		Integer isAdministrator = AuthUtil.isAdministrator() == true ? 1 : 2;
+		List<DistrictVO> districtVOS = baseMapper.selectDistrictPage(page, district, regionChildCodesList, isAdministrator);
 		// 遍历
 		for (DistrictVO districtVO : districtVOS) {
 			// 设置对应的网格名称
 			List<GridVO> gridVO = gridService.getGridListByAoiCode(districtVO.getAoiCode());
-			if (gridVO.size()>0) {
+			if (gridVO.size() > 0) {
 				StringBuilder builder = new StringBuilder();
 				for (GridVO vo : gridVO) {
 					builder.append(vo.getGridName()).append(",");
@@ -77,17 +71,12 @@
 
 	/**
 	 * 获取小区树
+	 *
 	 * @param district
 	 * @return
 	 */
 	@Override
 	public Object getDistrictTree(DistrictVO district) {
-		 String userRole = AuthUtil.getUserRole();
-		 if (userRole.equals("wygly")||userRole.equals("wyxmjl")) {
-		 	// 查询管理的小区  不好过滤小区
-			// todo
-			// district.setDistrictIdList(strings);
-		 }
 		Map<String, TreeStringNode> districtTree = baseMapper.getDistrictTree(district);
 		List<TreeStringNode> stringNodeTree = NodeTreeUtil.getStringNodeTree(districtTree);
 		stringNodeTree.forEach(node -> recursion(node));
@@ -97,6 +86,7 @@
 
 	/**
 	 * 去除空的数据组
+	 *
 	 * @param node
 	 */
 	private void recursion(TreeStringNode node) {
@@ -109,6 +99,7 @@
 
 	/**
 	 * 小区表 自定义获取详情
+	 *
 	 * @param district
 	 * @return
 	 */
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 7844f1b..44d4327 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -47,7 +47,7 @@
 	 * @param tenantId
 	 * @return
 	 */
-	List<DeptVO> tree(String tenantId, Long parentId, Long id);
+	List<DeptVO> tree(String tenantId, Long id);
 
 	/**
 	 * 懒加载获取树形节点
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 fd241a2..daa5053 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -39,17 +39,17 @@
 
     <select id="lazyList" resultMap="deptVOResultMap">
         SELECT
-            dept.* ,
-            (
-                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"
+        dept.* ,
+        (
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
         FROM
-            blade_dept dept
+        blade_dept
+        WHERE
+        parent_id = dept.id and is_deleted = 0
+        ) AS "has_children"
+        FROM
+        blade_dept dept
         WHERE dept.is_deleted = 0
         <if test="param1!=null and param1!=''">
             and dept.tenant_id = #{param1}
@@ -67,40 +67,52 @@
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">
-        select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
-        <if test="param1!=null and param1!=''">
-            and tenant_id = #{param1}
+
+        <if test="param2!=null">
+            SELECT
+            id,
+            dept_name AS title,
+            id AS "value",
+            id AS "key",
+            parent_id
+            FROM
+            ( SELECT * FROM blade_dept WHERE is_deleted = 0 AND tenant_id = #{param1} ORDER BY parent_id, id )
+            org_query,
+            ( SELECT @id := #{param2} ) initialisation
+            WHERE
+            (FIND_IN_SET( parent_id, @id ) > 0 or FIND_IN_SET( id, @id ) > 0)
+            AND @id := CONCAT(@id,',',id) ORDER BY sort
         </if>
 
-        <if test="param2!=null and param2!=''">
-            and parent_id = #{param2}
+        <if test="param2==null">
+            select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
+            <if test="param1!=null and param1!=''">
+                and tenant_id = #{param1}
+            </if>
+            ORDER BY sort
         </if>
 
-        <if test="param3!=null and param3!=''">
-            and id = #{param3}
-        </if>
-        ORDER BY sort
     </select>
 
-    <select id="lazyTree" resultMap="treeNodeResultMap" >
+    <select id="lazyTree" resultMap="treeNodeResultMap">
         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"
+        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 dept
+        blade_dept
         WHERE
-            dept.parent_id = #{param2} AND dept.is_deleted = 0
+        parent_id = dept.id and is_deleted = 0
+        ) AS "has_children"
+        FROM
+        blade_dept dept
+        WHERE
+        dept.parent_id = #{param2} AND dept.is_deleted = 0
         <if test="param1!=null and param1!=''">
             and dept.tenant_id = #{param1}
         </if>
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 d409db3..8862eeb 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
@@ -99,7 +99,6 @@
 
 	@Override
 	public List<DeptVO> tree(String tenantId) {
-		Long parentId = null;
 		Long id = null;
 		// 判断数据权限控制,非超管角色只可看到本级及以下数据
 //		if (!AuthUtil.isAdministrator()) {
@@ -120,7 +119,7 @@
 			id = Func.firstLong(AuthUtil.getDeptId());
 		}
 
-		return ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId, id));
+		return ForestNodeMerger.merge(baseMapper.tree(tenantId, id));
 	}
 
 	@Override

--
Gitblit v1.9.3