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