xiangpei
2024-11-30 a4c0d9c57dcbc02867bd6f8ca6fd455412605702
任务分配支持选部门
4个文件已修改
1个文件已添加
127 ■■■■■ 已修改文件
common/src/main/java/com/ycl/common/core/domain/StringTreeSelect.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
start/src/main/java/com/ycl/web/controller/system/SysDeptController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
start/src/main/java/com/ycl/web/controller/system/SysUserController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/ISysDeptService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | 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;
    }
}