From 48e6a7175d35994d54d2dd86d7ee12f3f0cc50f3 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期五, 16 九月 2022 10:42:44 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/crm/common/utils/TreeUtils.java |  105 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 80 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/zy/crm/common/utils/TreeUtils.java b/src/main/java/com/zy/crm/common/utils/TreeUtils.java
index 4c97962..0520963 100644
--- a/src/main/java/com/zy/crm/common/utils/TreeUtils.java
+++ b/src/main/java/com/zy/crm/common/utils/TreeUtils.java
@@ -2,15 +2,17 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.zy.crm.system.entity.Dept;
-import com.zy.crm.system.service.DeptService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Component;
 import com.zy.crm.manager.entity.Node;
 import com.zy.crm.manager.entity.Tag;
 import com.zy.crm.manager.service.NodeService;
 import com.zy.crm.manager.service.TagService;
+import com.zy.crm.system.entity.Dept;
+import com.zy.crm.system.entity.User;
+import com.zy.crm.system.service.DeptService;
+import com.zy.crm.system.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
 
 import java.util.*;
 
@@ -27,6 +29,8 @@
     private NodeService nodeService;
     @Autowired
     private DeptService deptService;
+    @Autowired
+    private UserService userService;
 
     /******************************** 褰掔被鏍� *********************************/
 
@@ -34,15 +38,15 @@
      * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
      */
     @Cacheable(cacheNames="tagTree",key="#id")
-    public ArrayList<Map> getTree(String id, Long hostId){
-        ArrayList<Map> result = new ArrayList<>();
+    public ArrayList<Map<String, Object>> getTree(String id, Long hostId){
+        ArrayList<Map<String, Object>> result = new ArrayList<>();
         Tag tag = tagService.selectById(id);
         // 涓昏妭鐐�
         Map<String, Object> map = new HashMap<>();
         map.put("title", tag.getName());
         map.put("id", tag.getId());
         map.put("spread", true);
-        List<Map> childrens = new ArrayList<>();
+        List<Map<String, Object>> childrens = new ArrayList<>();
         map.put("children", childrens);
         dealTag(tag, childrens, hostId);
         result.add(map);
@@ -54,7 +58,7 @@
     /**
      * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹�
      */
-    public void dealTag(Tag parent, List<Map> list, Long hostId) {
+    public void dealTag(Tag parent, List<Map<String, Object>> list, Long hostId) {
         Wrapper<Tag> wrapper = new EntityWrapper<Tag>()
                 .eq("parent_id", parent.getId())
                 .eq("status", "1");
@@ -67,7 +71,7 @@
             map.put("title", tag.getName());
             map.put("id", tag.getId());
             map.put("spread", true);
-            List<Map> childrens = new ArrayList<>();
+            List<Map<String, Object>> childrens = new ArrayList<>();
             map.put("children", childrens);
             dealTag(tag, childrens, hostId);
             list.add(map);
@@ -80,15 +84,15 @@
      * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
      */
     @Cacheable(cacheNames="nodeTree",key="#id")
-    public ArrayList<Map> getNodeTree(String id, Long hostId){
-        ArrayList<Map> result = new ArrayList<>();
+    public ArrayList<Map<String, Object>> getNodeTree(String id, Long hostId){
+        ArrayList<Map<String, Object>> result = new ArrayList<>();
         Node node = nodeService.selectById(id);
         // 涓昏妭鐐�
         Map<String, Object> map = new HashMap<>();
         map.put("title", node.getName());
         map.put("id", node.getId());
         map.put("spread", true);
-        List<Map> childrens = new ArrayList<>();
+        List<Map<String, Object>> childrens = new ArrayList<>();
         map.put("children", childrens);
         dealNode(node, childrens, hostId);
         result.add(map);
@@ -100,7 +104,7 @@
     /**
      * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹�
      */
-    public void dealNode(Node parent, List<Map> list, Long hostId) {
+    public void dealNode(Node parent, List<Map<String, Object>> list, Long hostId) {
         Wrapper<Node> wrapper = new EntityWrapper<Node>()
                 .eq("parent_id", parent.getId())
                 .eq("status", "1");
@@ -113,7 +117,7 @@
             map.put("title", node.getName());
             map.put("id", node.getId());
             map.put("spread", true);
-            List<Map> childrens = new ArrayList<>();
+            List<Map<String, Object>> childrens = new ArrayList<>();
             map.put("children", childrens);
             dealNode(node, childrens, hostId);
             list.add(map);
@@ -126,15 +130,15 @@
      * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
      */
     @Cacheable(cacheNames="deptTree",key="#id")
-    public ArrayList<Map> getDeptTree(String id, Long hostId){
-        ArrayList<Map> result = new ArrayList<>();
+    public ArrayList<Map<String, Object>> getDeptTree(String id, Long hostId){
+        ArrayList<Map<String, Object>> result = new ArrayList<>();
         Dept dept = deptService.selectById(id);
         // 涓昏妭鐐�
         Map<String, Object> map = new HashMap<>();
         map.put("title", dept.getName());
         map.put("id", dept.getId());
         map.put("spread", true);
-        List<Map> childrens = new ArrayList<>();
+        List<Map<String, Object>> childrens = new ArrayList<>();
         map.put("children", childrens);
         dealDept(dept, childrens, hostId);
         result.add(map);
@@ -146,10 +150,10 @@
     /**
      * 閫掑綊鑾峰彇瀛愯妭鐐规暟鎹�
      */
-    public void dealDept(Dept parent, List<Map> list, Long hostId) {
+    public void dealDept(Dept parent, List<Map<String, Object>> list, Long hostId) {
         Wrapper<Dept> wrapper = new EntityWrapper<Dept>()
                 .eq("parent_id", parent.getId())
-                .eq("status", "1");
+                .eq("status", 1);
         if (hostId != null) {
             wrapper.eq("host_id", hostId);
         }
@@ -159,13 +163,64 @@
             map.put("title", dept.getName());
             map.put("id", dept.getId());
             map.put("spread", true);
-            List<Map> childrens = new ArrayList<>();
+            List<Map<String, Object>> childrens = new ArrayList<>();
             map.put("children", childrens);
             dealDept(dept, childrens, hostId);
             list.add(map);
         }
     }
 
+    /******************************** 閮ㄩ棬 + 鍛樺伐 鏍� *********************************/
+
+    /**
+     * 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
+     */
+    @Cacheable(cacheNames="deptUserTree",key="#id")
+    public ArrayList<Map<String, Object>> getDeptUserTree(String id, Long hostId){
+        ArrayList<Map<String, Object>> result = new ArrayList<>();
+        Dept dept = deptService.selectById(id);
+        // 涓昏妭鐐�
+        Map<String, Object> map = new HashMap<>();
+        map.put("title", dept.getName());
+        map.put("id", dept.getId());
+        map.put("spread", true);
+        map.put("type", 0);
+        List<Map<String, Object>> childrens = new ArrayList<>();
+        map.put("children", childrens);
+        dealUserDept(dept, childrens, hostId);
+        result.add(map);
+        return result;
+    }
+
+    public void dealUserDept(Dept parent, List<Map<String, Object>> list, Long hostId) {
+        Wrapper<Dept> wrapper = new EntityWrapper<Dept>()
+                .eq("parent_id", parent.getId())
+                .eq("status", 1);
+        if (hostId != null) {
+            wrapper.eq("host_id", hostId);
+        }
+        List<Dept> depts = deptService.selectList(wrapper);
+
+        List<User> users = userService.getUserByDept(hostId, parent.getId());
+        for (User user : users) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("title", user.getNickname());
+            map.put("id", user.getId());
+            map.put("type", 1);
+            list.add(map);
+        }
+
+        for (Dept dept : depts) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("title", dept.getName());
+            map.put("id", dept.getId());
+            map.put("spread", true);
+            List<Map<String, Object>> childrens = new ArrayList<>();
+            map.put("children", childrens);
+            dealUserDept(dept, childrens, hostId);
+            list.add(map);
+        }
+    }
 
     // -------------------------------------------------------------------------------------------------------
 
@@ -173,12 +228,12 @@
      * 鏉′欢绛涢��
      */
     @SuppressWarnings("unchecked")
-    public void remove(String condition, List<Map> list) {
-        Iterator<Map> iterator = list.iterator();
+    public void remove(String condition, List<Map<String, Object>> list) {
+        Iterator<Map<String, Object>> iterator = list.iterator();
         while (iterator.hasNext()) {
-            Map map = iterator.next();
+            Map<String, Object> map = iterator.next();
             if (map.get("children") != null) {
-                List<Map> children = (List<Map>) map.get("children");
+                List<Map<String, Object>> children = (List<Map<String, Object>>) map.get("children");
                 if (children.size() > 0) {
                     remove(condition, children);
                 } else {

--
Gitblit v1.9.1