common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
start/src/main/java/com/ycl/web/controller/system/SysDeptController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
start/src/main/java/com/ycl/web/controller/system/SysUserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
system/src/main/java/com/ycl/system/service/ISysDeptService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java
New file @@ -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<>(); } 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); } /** * 查询部门列表(排除节点) */ 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)); } } 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(); } 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<>(); // 将所有节点放入Map中,方便后续查找 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 { // 找到父节点,并将当前节点添加到父节点的children列表中 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; } }