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)); //查找有父节点的子节点