From a4c0d9c57dcbc02867bd6f8ca6fd455412605702 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期六, 30 十一月 2024 01:26:36 +0800
Subject: [PATCH] 任务分配支持选部门

---
 start/src/main/java/com/ycl/web/controller/system/SysUserController.java |    9 +++
 common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java    |   37 ++++++++++++
 start/src/main/java/com/ycl/web/controller/system/SysDeptController.java |    8 ++
 system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java |   55 +++++++++++++++++-
 system/src/main/java/com/ycl/system/service/ISysDeptService.java         |   18 ++++++
 5 files changed, 124 insertions(+), 3 deletions(-)

diff --git a/common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java b/common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java
new file mode 100644
index 0000000..4b3f460
--- /dev/null
+++ b/common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java
@@ -0,0 +1,37 @@
+package com.ycl.common.core.domain;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.ycl.common.core.domain.entity.SysDept;
+import com.ycl.common.core.domain.entity.SysMenu;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Treeselect鏍戠粨鏋勫疄浣撶被
+ *
+ * @author ycl
+ */
+@Data
+public class StringTreeSelect implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 鑺傜偣ID */
+    private String id;
+
+    /** 鑺傜偣鍚嶇О */
+    private String label;
+
+    private String parentId;
+
+    /** 瀛愯妭鐐� */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<StringTreeSelect> children = new ArrayList<>();
+
+
+
+}
diff --git a/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java b/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java
index 9eb0cea..66159d4 100644
--- a/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java
+++ b/start/src/main/java/com/ycl/web/controller/system/SysDeptController.java
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import com.ycl.common.base.Result;
+import com.ycl.common.core.domain.StringTreeSelect;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ArrayUtils;
@@ -52,6 +53,13 @@
         return success(depts);
     }
 
+    @GetMapping("/flowable/all")
+    public AjaxResult all()
+    {
+        List<StringTreeSelect> depts = deptService.flowableAll();
+        return success(depts);
+    }
+
     /**
      * 鏌ヨ閮ㄩ棬鍒楄〃锛堟帓闄よ妭鐐癸級
      */
diff --git a/start/src/main/java/com/ycl/web/controller/system/SysUserController.java b/start/src/main/java/com/ycl/web/controller/system/SysUserController.java
index 30c2fdc..98c0d3c 100644
--- a/start/src/main/java/com/ycl/web/controller/system/SysUserController.java
+++ b/start/src/main/java/com/ycl/web/controller/system/SysUserController.java
@@ -222,4 +222,13 @@
     public AjaxResult deptTree(SysDept dept) {
         return success(deptService.selectDeptTreeList(dept));
     }
+
+    /**
+     * 鑾峰彇閮ㄩ棬鏍戝垪琛紝娴佺▼閰嶇疆浣跨敤
+     */
+//    @PreAuthorize("@ss.hasPermi('system:user:list')")
+    @GetMapping("/flowable/deptTree")
+    public AjaxResult flowDeptTree(SysDept dept) {
+        return success(deptService.flowDeptTree(dept));
+    }
 }
diff --git a/system/src/main/java/com/ycl/system/service/ISysDeptService.java b/system/src/main/java/com/ycl/system/service/ISysDeptService.java
index 1b608dc..4e9bdcc 100644
--- a/system/src/main/java/com/ycl/system/service/ISysDeptService.java
+++ b/system/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import com.ycl.common.base.Result;
+import com.ycl.common.core.domain.StringTreeSelect;
 import com.ycl.common.core.domain.TreeSelect;
 import com.ycl.common.core.domain.entity.SysDept;
 
@@ -30,12 +31,22 @@
     public List<TreeSelect> selectDeptTreeList(SysDept dept);
 
     /**
+     * 娴佺▼閰嶇疆浣跨敤--鏍戠粨鏋�
+     *
+     * @param dept
+     * @return
+     */
+    List<StringTreeSelect> flowDeptTree(SysDept dept);
+
+    /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
      *
      * @param depts 閮ㄩ棬鍒楄〃
      * @return 鏍戠粨鏋勫垪琛�
      */
     public List<SysDept> buildDeptTree(List<SysDept> depts);
+
+
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
@@ -129,4 +140,11 @@
      * @return
      */
     Result all(SysDept dept);
+
+    /**
+     * flowable 鏌ユ墍鏈夐儴闂�
+     *
+     * @return
+     */
+    List<StringTreeSelect> flowableAll();
 }
diff --git a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
index f356ada..679a8a3 100644
--- a/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
+++ b/system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -1,11 +1,10 @@
 package com.ycl.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import com.ycl.common.base.Result;
+import com.ycl.common.core.domain.StringTreeSelect;
 import com.ycl.system.domain.base.BaseSelect;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -64,6 +63,42 @@
         return buildDeptTreeSelect(depts);
     }
 
+    @Override
+    public List<StringTreeSelect> flowDeptTree(SysDept dept) {
+        List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
+        List<StringTreeSelect> list = depts.stream().map(item -> {
+            StringTreeSelect d = new StringTreeSelect();
+            d.setId("dept:" + item.getDeptId());
+            d.setLabel(item.getDeptName());
+            d.setParentId("dept:" + item.getParentId());
+            return d;
+        }).collect(Collectors.toList());
+
+
+        Map<String, StringTreeSelect> nodeMap = new HashMap<>();
+        // 灏嗘墍鏈夎妭鐐规斁鍏ap涓紝鏂逛究鍚庣画鏌ユ壘
+        for (StringTreeSelect node : list) {
+            nodeMap.put(node.getId(), node);
+        }
+        List<StringTreeSelect> treeList = new ArrayList<>();
+        // 鏋勫缓鏍戠粨鏋�
+        for (StringTreeSelect node : list) {
+            StringTreeSelect root = null;
+            if ("dept:0".equals(node.getParentId()) || node.getParentId().isEmpty()) {
+                // 鏍硅妭鐐�
+                root = node;
+                treeList.add(root);
+            } else {
+                // 鎵惧埌鐖惰妭鐐癸紝骞跺皢褰撳墠鑺傜偣娣诲姞鍒扮埗鑺傜偣鐨刢hildren鍒楄〃涓�
+                StringTreeSelect parentNode = nodeMap.get(node.getParentId());
+                if (parentNode != null) {
+                    parentNode.getChildren().add(node);
+                }
+            }
+        }
+        return treeList;
+    }
+
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佹爲缁撴瀯
      *
@@ -90,6 +125,8 @@
         }
         return returnList;
     }
+
+
 
     /**
      * 鏋勫缓鍓嶇鎵�闇�瑕佷笅鎷夋爲缁撴瀯
@@ -354,4 +391,16 @@
         ).collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+
+    @Override
+    public List<StringTreeSelect> flowableAll() {
+        List<StringTreeSelect> list = deptMapper.selectDeptList(new SysDept()).stream().map(sysDept -> {
+            StringTreeSelect stringTreeSelect = new StringTreeSelect();
+            stringTreeSelect.setId("dept:" + sysDept.getDeptId());
+            stringTreeSelect.setLabel(sysDept.getDeptName());
+            return stringTreeSelect;
+        }).collect(Collectors.toList());
+        return list;
+    }
 }

--
Gitblit v1.8.0