其它

java 复制代码
    /**
     * 获取部门列表,支持模糊查询
     */
    public List<SysDeptVo> getDeptList(String deptName) {
        QueryWrapper<SysDeptEntity> wrapper = new QueryWrapper<>();
        wrapper.like(!StrUtil.isEmpty(deptName), "name", deptName);

        List<SysDeptEntity> list = sysDeptMapper.selectList(wrapper);

        List<SysDeptVo> voList = list.stream().map(entity -> {
            SysDeptVo vo = new SysDeptVo();
            BeanUtils.copyProperties(entity, vo);
            vo.setChildren(new ArrayList<>()); // 初始化子部门列表
            return vo;
        }).collect(Collectors.toList());


        Map<String, SysDeptVo> deptMap = voList.stream().collect(Collectors.toMap(SysDeptVo::getDeptId, vo -> vo));

        for (SysDeptVo vo : voList) {
            String parentId = vo.getParentId();
            SysDeptVo parentDept = deptMap.get(parentId);
            if (parentDept != null) {
                parentDept.getChildren().add(vo); // 将当前部门添加到父级部门的子部门列表中
            }
        }

        return voList.stream().filter(s -> {
            SysDeptVo sysDeptVo = deptMap.get(s.getParentId());
            return Objects.isNull(sysDeptVo);   // 筛选出没有父级部门的部门, 即:顶级部门
        }).collect(Collectors.toList());

    }
相关推荐
代码or搬砖2 分钟前
SpringBoot整合SpringMVC
java·spring boot·后端
程序定小飞2 分钟前
基于springboot的汽车资讯网站开发与实现
java·开发语言·spring boot·后端·spring
Moment11 分钟前
LangChain 1.0 发布:agent 框架正式迈入生产级
前端·javascript·后端
回家路上绕了弯12 分钟前
朋友圈更新怎么实时通知?从发布到接收的全链路解析
后端·微服务
小坏讲微服务31 分钟前
整合Spring Cloud Alibaba与Gateway实现跨域的解决方案
java·开发语言·后端·spring cloud·云原生·gateway
q***136132 分钟前
Spring Cloud Gateway 整合Spring Security
java·后端·spring
追逐时光者1 小时前
一个基于 .NET WPF 开源的本地硬盘千万级图库以图搜图小工具!
后端·.net
毕设源码-钟学长1 小时前
【开题答辩全过程】以 基于springboot的在线影院系统设为例,包含答辩的问题和答案
java·spring boot·后端
程序员爱钓鱼1 小时前
Python 实战:如何读取多格式 Excel 并实现跨表匹配合并(支持 XLS / XLSX)
后端·python·面试