其它

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());

    }
相关推荐
jyOverQ10 小时前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
东风破_18 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端
行百里er19 小时前
Gateway 上别硬塞 MVC:DeferredImportSelector 看菜下锅
spring boot·后端·开源
名字还没想好☜19 小时前
Java 遍历时删元素抛 ConcurrentModificationException:fail-fast 原理与三种正确删法
后端
IT_陈寒20 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端
码事漫谈20 小时前
本体论,彻底懂
后端
创新技术阁21 小时前
FastapiAdmin 系统日志体系与核心配置参数详解
前端·后端·fastapi
掘金者阿豪21 小时前
SQL Server 迁到金仓,真正麻烦的不是数据,而是这些 T-SQL
后端
Kyrie_kk21 小时前
Java--IO--Path文件访问
java·后端
wxwx_bscxy32221 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物