若依 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;
    }
相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A2 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄3 天前
JavaScript 隐式全局变量解析
javascript
honkun63 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net