当前位置: 首页 > article >正文

级联树SELECTTREE格式调整

步骤:

1、将全部列表设置成Map<Long, List<Obejct>> map的格式,方便查看每个父级对应的子列表,减少循环次数

2、对这个map进行递归,重新进行级联树的集合调整,将子集放置在对应的childs里面。

    public DynamicDeployTable selectDynamicDeployTableTree(String formCode) {
        log.info("selectDynamicDeployTableTree:{}", formCode);
        // 顶级父节点
        DynamicDeployTable returnDynamicDeployTable = null;
        List<DynamicDeployTable> dynamicDeployTableList = selectDynamicDeployTableList(formCode);
        Map<Long, List<DynamicDeployTable>> dynamicDeployTableMap = new HashMap<>();

        for (DynamicDeployTable dynamicDeployTable : dynamicDeployTableList) {
            Long parentId = dynamicDeployTable.getParentId();
            if (parentId == 0L) {
                returnDynamicDeployTable = dynamicDeployTable;
                continue;
            }
            List<DynamicDeployTable> dynamicDeployTables = dynamicDeployTableMap.get(parentId);
            if (ObjectUtil.isNotEmpty(dynamicDeployTables)) {
                dynamicDeployTables.add(dynamicDeployTable);
            } else {
                dynamicDeployTables = ListUtil.createList();
                dynamicDeployTables.add(dynamicDeployTable);
                dynamicDeployTableMap.put(parentId, dynamicDeployTables);
            }
        }
        recursionFn(dynamicDeployTableMap, returnDynamicDeployTable);
        return returnDynamicDeployTable;
    }

    /**
     * 递归列表
     *
     * @param dynamicDeployTableMap 全部列表
     * @param parentDynamicDeployTable 父级对象
     */
    private void recursionFn(Map<Long, List<DynamicDeployTable>> dynamicDeployTableMap, DynamicDeployTable parentDynamicDeployTable) {
        List<DynamicDeployTable> dynamicDeployTables = dynamicDeployTableMap.get(parentDynamicDeployTable.getDynamicId());
        if (ObjectUtil.isEmpty(dynamicDeployTables)) {
            return;
        }
        parentDynamicDeployTable.setChildren(dynamicDeployTables);
        for (DynamicDeployTable deployTable : dynamicDeployTables) {
            recursionFn(dynamicDeployTableMap, deployTable);
        }
    }

2.根据根节点设置

    public List<WmsMaterialClass> getMaterialClassTreeList(WmsMaterialClassVo materialClassVo) {
        log.info("getMaterialClassTreeList,INPUT:{}", JSONObject.toJSONString(materialClassVo));
        List<WmsMaterialClass> initList = getMaterialClassList(materialClassVo);
        if (ObjectUtils.isEmpty(initList)) {
            return ListUtil.createList();
        }
        Map<Long, List<WmsMaterialClass>> matClasChildMap = new HashMap<>();
        for (WmsMaterialClass item : initList) {
            Long parentId = item.getParentId();
            List<WmsMaterialClass> materialClasses = matClasChildMap.get(parentId);
            if (ObjectUtil.isEmpty(materialClasses)) {
                materialClasses.add(item);
                matClasChildMap.put(parentId, materialClasses);
            } else {
                materialClasses.add(item);
            }
        }
        List<WmsMaterialClass> rootNodes = matClasChildMap.get(0L);
        if (ObjectUtils.isEmpty(rootNodes)) {
            return ListUtil.createList();
        }
        for (WmsMaterialClass rootNode : rootNodes) {
            childTree(matClasChildMap,rootNode);
        }
        return rootNodes;
    }

    private void childTree(Map<Long, List<WmsMaterialClass>> matClasChildMap,WmsMaterialClass node) {
        Long nodeId = node.getId();
        List<WmsMaterialClass> children = matClasChildMap.get(nodeId);
        if (!ObjectUtils.isEmpty(children)) {
            node.setChildren(children);
            for (WmsMaterialClass child : children) {
                childTree( matClasChildMap,child);
            }
        }
    }


http://www.kler.cn/a/584320.html

相关文章:

  • AI智能代码疫苗技术,赋能数字化应用内生安全自免疫
  • 通义万相 2.1 × 蓝耘智算:AIGC 界的「黄金搭档」如何重塑创作未来?
  • 解析富集分析中的过表达分析(ORA):原理、应用与优化
  • Axure PR 9 中继器 05 快捷查询
  • 从3b1b到课堂:教育3D化的理想与现实鸿沟
  • 深度学习 bert与Transformer的区别联系
  • 接入手机后,DeepSeek难“转正”
  • Pytorch中矩阵乘法使用及案例
  • Manus(一种AI代理或自动化工具)与DeepSeek(一种强大的语言模型或AI能力)结合使用任务自动化和智能决策
  • 视频理解之Actionclip(论文宏观解读)
  • 小米路由器SSH下安装DDNS-GO
  • 【学习笔记】语言模型的发展历程
  • vue2安装scss
  • Java 断言(Assert)机制
  • 西门子S7-1200 PLC远程调试技术方案(巨控GRM532模块)
  • 【蓝桥杯速成】| 1.暴力解题
  • 音视频入门基础:RTP专题(17)——音频的SDP媒体描述
  • NVIDIA k8s-device-plugin源码分析与安装部署
  • 要登录的设备ip未知时的处理方法
  • 浅谈 JavaScript 对象:属性、方法与创建模式