From e13e7c0bf71c7e72d08d6074056c07fdad63d9d2 Mon Sep 17 00:00:00 2001 From: wangqiong <1322446236@qq.com> Date: Fri, 21 Jun 2024 17:45:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96bom=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E6=A0=91=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BomTreeServiceImpl.java | 25 ++++++++++++++++--- .../kn/cost/manage/util/BomTreeBuilder.java | 8 +++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java index 154fc96..13fe9f5 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java @@ -8,11 +8,12 @@ import com.zzsmart.qomo.kn.cost.manage.service.BomTreeService; import com.zzsmart.qomo.kn.cost.manage.util.BomTreeBuilder; import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO; import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service public class BomTreeServiceImpl implements BomTreeService { @@ -38,7 +39,25 @@ public class BomTreeServiceImpl implements BomTreeService { wrapper.like("c2.version_number", version_number); } List costStandardDetailVOS = costStandardDetailMapper.queryListResult(wrapper); - List bomTreeInfoVOS = BomTreeBuilder.buildBomTree(costStandardDetailVOS); + //查询所有满足条件的父节点 + Map parentDataMap = new TreeMap<>(); + if ((StrUtil.isNotEmpty(materialNumber) || StrUtil.isNotEmpty(version_number)) && costStandardDetailVOS.size() > 0) { + parentDataMap = costStandardDetailVOS.stream().collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); + //查询所有父节点下的子节点 + QueryWrapper wrapper1 = new QueryWrapper<>(); + for (String materialNumber1 : parentDataMap.keySet()) { + wrapper1.like("parent_material_number", materialNumber1); + } + List costStandardDetails = costStandardDetailMapper.selectList(wrapper1); + costStandardDetailVOS=new ArrayList<>(); + for (int i=0;i bomTreeInfoVOS = BomTreeBuilder.buildBomTree(costStandardDetailVOS, parentDataMap); return bomTreeInfoVOS; } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java index 327111f..1d20494 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java @@ -11,15 +11,17 @@ import java.util.Map; import java.util.stream.Collectors; public class BomTreeBuilder { - public static List buildBomTree(List sourceData) { + public static List buildBomTree(List sourceData, Map parentDataMap) { List result = new ArrayList<>(); - if (sourceData == null || (sourceData != null && sourceData.size() < 1)) { + if ((sourceData == null || (sourceData != null && sourceData.size() < 1))&& (parentDataMap == null || (parentDataMap != null && parentDataMap.size() < 1))) { return result; } //1.把BOM信息分成按照物料号分组 Map materialMap = sourceData.stream().filter(s -> s.getMaterialNumber() != null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); //查找最顶端的父类节点 - Map parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); + if (parentDataMap == null || (parentDataMap != null && parentDataMap.size() < 1)) { + parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo)); + } //查找有父节点的子节点 Map> childDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() != null).collect(Collectors.groupingBy(CostStandardDetailVO::getParentMaterialNumber)); //查找有父节点的子节点