若依 ruoyi-vue 维护Ancestors字段 树转换成List

迁移部门表,没有ancestors字段,若依部门权限没办法做,写了一段代码维护ancestors字段。

调用的若依框架组成树的方法,拼接ancestors

java 复制代码
    public AjaxResult tree() {
        List<SysDept> depts = deptService.selectDeptTree();
        for (SysDept dept : depts) {
            //是顶级节点则设置为
            if (dept.getParentId().equals(0L)) {
                dept.setAncestors("0");
            }
            if (CollectionUtil.isNotEmpty(dept.getChildren())) {
                setAncestors(dept.getAncestors(), dept.getChildren());
            }
        }
        List<SysDept> sysDepts = treeToList(depts);
        for (SysDept sysDept : sysDepts) {
            deptService.updateDept(sysDept);
        }
        return success(depts);
    }
java 复制代码
    
    public void setAncestors(String parentAncestors, List<SysDept> children) {
        for (SysDept child : children) {
            // 将父节点的祖先节点字符串和子部门的父节点ID连接起来,以逗号分隔
            String ancestors = parentAncestors + "," + child.getParentId();
            // 设置当前子部门的祖先节点字符串
            child.setAncestors(ancestors);
            // 如果当前子部门有子部门,则递归调用该方法
            if (CollectionUtil.isNotEmpty(child.getChildren())) {
                setAncestors(ancestors, child.getChildren());
            }
        }
    }
java 复制代码
    public List<SysDept> treeToList(List<SysDept> depts) {
        List<SysDept> deptList = new ArrayList<>();
        if (CollectionUtil.isNotEmpty(depts)) {
            for (SysDept dept : depts) {
                // 将当前节点添加到列表中
                deptList.add(dept);
                // 如果当前节点有子节点,则递归将子节点添加到列表中
                if (CollectionUtil.isNotEmpty(dept.getChildren())) {
                    deptList.addAll(treeToList(dept.getChildren()));
                }
            }
        }
        return deptList;
    }
相关推荐
爱因斯坦乐5 分钟前
Vue项目整合
前端·javascript·vue.js
FlyWIHTSKY11 分钟前
TS、TSX、JS、JSX 文件扩展名详解
开发语言·javascript·ecmascript
无风听海13 分钟前
IndexedDB 深度指南 浏览器中的事务型对象数据库
前端·数据库
ct9781 小时前
组件间的通信
前端·javascript·vue.js
左手吻左脸。2 小时前
Vue 全栈面试题大全(2026 最新版最详细)
前端·javascript·vue.js
Aphasia3112 小时前
手写KeepAlive组件
前端·react.js·面试
两个西柚呀2 小时前
js中的同步和异步,三种处理异步任务的方式
前端·javascript
pe7er2 小时前
软件设计不要“既要又要”
前端·后端·架构
kyriewen2 小时前
从Webpack到Vite:我们迁移了一个10万行代码的项目,总结了这7个坑
前端·webpack·vite
IT_陈寒2 小时前
Java Stream并行流的坑:我花了3小时才找到的线程安全问题
前端·人工智能·后端