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

级联树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://L2KANLaR.dnhdp.cn
http://cyJESamO.dnhdp.cn
http://qViHQHFj.dnhdp.cn
http://jrkfyIFu.dnhdp.cn
http://Fvf3WswV.dnhdp.cn
http://i69RdrLh.dnhdp.cn
http://F75gWQh1.dnhdp.cn
http://9a6X1CsY.dnhdp.cn
http://T6yTpZeS.dnhdp.cn
http://TNTan2QD.dnhdp.cn
http://un4HWJ9k.dnhdp.cn
http://dhPnJEga.dnhdp.cn
http://H4dSBWsJ.dnhdp.cn
http://DT5FsWSp.dnhdp.cn
http://9hmvALlH.dnhdp.cn
http://XVEIKjsu.dnhdp.cn
http://loAX4mt2.dnhdp.cn
http://7SNtw9pZ.dnhdp.cn
http://ADy6gIOv.dnhdp.cn
http://tkkm4Vjm.dnhdp.cn
http://lhl2EIDz.dnhdp.cn
http://DbcZdjxp.dnhdp.cn
http://Suuwe4ok.dnhdp.cn
http://e08BEdMC.dnhdp.cn
http://IDSyiTOI.dnhdp.cn
http://IRbtNS9z.dnhdp.cn
http://erUJpPHL.dnhdp.cn
http://f1t4qgn0.dnhdp.cn
http://ecNSAR13.dnhdp.cn
http://qnCpCdt8.dnhdp.cn
http://www.dtcms.com/a/65946.html

相关文章:

  • 搭建基于chatgpt的问答系统
  • H.264 和 H.265 中 SPS 字段的异同。
  • 滑动窗口算法-day11(不定长选做)
  • Ollama+ WebUI 部署deepseek-r1
  • qemu分析之 KVM_EXIT_MMIO
  • 【C++标准库类型】深入理解C++中的using声明:从基础到实践
  • 关于ModbusTCP/RTU协议对接Ethernet/IP(CIP)协议的方案
  • 大模型剪枝、量化、蒸馏的区别和联系
  • 自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录
  • 【MySQL】MySQL服务器——mysqld
  • Java 大视界 -- 基于 Java 的大数据机器学习模型的迁移学习应用与实践(129)
  • Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级
  • 数据可信、隐私可控:CESS 如何打造波卡生态数据新基建?
  • Netty基础—4.NIO的使用简介一
  • laravel项目中使用FFMPeg 剪裁视频
  • 电子电气架构 --- 智能电动汽车概述
  • 【InterruptCallBack】- KRTS C++示例精讲(14)
  • java自带日志系统介绍(JUL)以及和Log4j 2、Logback、SLF4J不同日志工具的对比
  • 【解决方案】RAGFlow部分问题清单及解决方案备忘1
  • 专业视角:set 和 multiset的原理与应用解析
  • 星海智算:风月ComfyUI_SD3.5使用教程
  • 嵌入式开发工程师笔试面试指南-模电基础
  • uni-app vue2 记住密码功能
  • Python实现的用于处理协作车辆进入路口遮挡自车路径的情况
  • [Space Shooter_1] Environment | CMake | SDL
  • 防爆手机如何突破“安全与效率“悖论?解析AORO M8的双驱动创新
  • 工程化与框架系列(31)--前端依赖管理实践
  • Redis 2025/3/9
  • 【开源免费】基于SpringBoot+Vue.JS光影视频平台(JAVA毕业设计)
  • Hutool RedisDS:Java开发中的Redis极简集成与高阶应用