From 9c2530bafbd5f502fd9bdc9abaa7c357d6f91e86 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 06 八月 2024 17:46:00 +0800
Subject: [PATCH] 点位导入导出

---
 ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java |   76 ++++++++++++++++++++++++++++----------
 1 files changed, 56 insertions(+), 20 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java b/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
index e513424..0025f7a 100644
--- a/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -3,6 +3,7 @@
 import annotation.DataScope;
 import com.ycl.exception.ServiceException;
 import com.ycl.platform.base.BaseSelect;
+import com.ycl.platform.base.Cascader;
 import com.ycl.system.Result;
 import com.ycl.system.domain.TreeSelect;
 import com.ycl.system.entity.SysDept;
@@ -19,14 +20,12 @@
 import org.springframework.stereotype.Service;
 import utils.text.Convert;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
  * 閮ㄩ棬绠$悊 鏈嶅姟瀹炵幇
- * 
+ *
  * @author ruoyi
  */
 @Service
@@ -40,7 +39,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬淇℃伅闆嗗悎
      */
@@ -53,7 +52,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏍戠粨鏋勪俊鎭�
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 閮ㄩ棬鏍戜俊鎭泦鍚�
      */
@@ -66,7 +65,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
@@ -93,7 +92,7 @@
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
-     * 
+     *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 涓嬫媺鏍戠粨鏋勫垪琛�
      */
@@ -106,7 +105,7 @@
 
     /**
      * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 閫変腑閮ㄩ棬鍒楄〃
      */
@@ -119,7 +118,7 @@
 
     /**
      * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 閮ㄩ棬淇℃伅
      */
@@ -131,7 +130,7 @@
 
     /**
      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 瀛愰儴闂ㄦ暟
      */
@@ -143,7 +142,7 @@
 
     /**
      * 鏄惁瀛樺湪瀛愯妭鐐�
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -156,7 +155,7 @@
 
     /**
      * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉 true 瀛樺湪 false 涓嶅瓨鍦�
      */
@@ -169,7 +168,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -187,7 +186,7 @@
 
     /**
      * 鏍¢獙閮ㄩ棬鏄惁鏈夋暟鎹潈闄�
-     * 
+     *
      * @param deptId 閮ㄩ棬id
      */
     @Override
@@ -207,7 +206,7 @@
 
     /**
      * 鏂板淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -226,7 +225,7 @@
 
     /**
      * 淇敼淇濆瓨閮ㄩ棬淇℃伅
-     * 
+     *
      * @param dept 閮ㄩ棬淇℃伅
      * @return 缁撴灉
      */
@@ -254,7 +253,7 @@
 
     /**
      * 淇敼璇ラ儴闂ㄧ殑鐖剁骇閮ㄩ棬鐘舵��
-     * 
+     *
      * @param dept 褰撳墠閮ㄩ棬
      */
     private void updateParentDeptStatusNormal(SysDept dept)
@@ -266,7 +265,7 @@
 
     /**
      * 淇敼瀛愬厓绱犲叧绯�
-     * 
+     *
      * @param deptId 琚慨鏀圭殑閮ㄩ棬ID
      * @param newAncestors 鏂扮殑鐖禝D闆嗗悎
      * @param oldAncestors 鏃х殑鐖禝D闆嗗悎
@@ -286,7 +285,7 @@
 
     /**
      * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅
-     * 
+     *
      * @param deptId 閮ㄩ棬ID
      * @return 缁撴灉
      */
@@ -327,6 +326,43 @@
         return Result.ok().data(vos);
     }
 
+    @Override
+    public Result cascader() {
+        List<Cascader> data = deptMapper.cascader();
+        return Result.ok().data(this.buildTree(data));
+    }
+
+    public List<Cascader> buildTree(List<Cascader> cascaders) {
+        // 鍒涘缓涓�涓槧灏勶紝浠arentId涓洪敭锛屽搴旂殑瀛愯妭鐐瑰垪琛ㄤ负鍊�
+        Map<Long, List<Cascader>> map = new HashMap<>();
+        for (Cascader cascader : cascaders) {
+            Long parentId = cascader.getParentId();
+            map.computeIfAbsent(parentId, k -> new ArrayList<>()).add(cascader);
+        }
+
+        // 閫掑綊鍑芥暟锛岀敤浜庢瀯寤烘爲
+        List<Cascader> tree = new ArrayList<>();
+        for (Cascader cascader : cascaders) {
+            if (cascader.getParentId().equals(0L)) { // 鏍硅妭鐐�
+                tree.add(setChildren(cascader, map));
+            }
+        }
+
+        // 鏇存柊鍘熷鍒楄〃涓烘爲褰㈢粨鏋�
+        cascaders.clear();
+        cascaders.addAll(tree);
+        return cascaders;
+    }
+
+    private Cascader setChildren(Cascader cascader, Map<Long, List<Cascader>> map) {
+        List<Cascader> children = map.getOrDefault(cascader.getValue(), new ArrayList<>());
+        for (Cascader child : children) {
+            setChildren(child, map); // 閫掑綊璁剧疆瀛愯妭鐐圭殑瀛愯妭鐐�
+        }
+        cascader.setChildren(children);
+        return cascader;
+    }
+
     /**
      * 閫掑綊鍒楄〃
      */

--
Gitblit v1.8.0