From 3b87848f6032c770b650d26eb5c05e12041b0397 Mon Sep 17 00:00:00 2001 From: jing's Date: Wed, 17 Jul 2024 20:50:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E6=9F=A5=E6=B1=87=E6=80=BB=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/api/user/BomReportApi.java | 20 ++++ .../bomnew/pojo/vo/ForwardReportVO.java | 16 +++ .../service/domain/BaseForwardReport.java | 25 +++- .../domain/EBom/EBomForwardReport.java | 112 ++++++++++++------ .../domain/PBom/PBomForwardReport.java | 102 +++++++++++----- 5 files changed, 210 insertions(+), 65 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java index 39585394..f8c86720 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/BomReportApi.java @@ -138,10 +138,30 @@ public class BomReportApi extends BaseApi { return resultBom1VO; } + if (query.getLeft().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.ALL.getValue()) == 0 + || query.getLeft().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.DEFINE.getValue()) == 0 ) { + if(StrUtil.isEmpty(query.getLeft().getBomVersion())) + return ResultVO.error(STATE.ParamErr, "比对左边请选择一个版本"); + } + + if (resultBom2VO != null) { return resultBom2VO; } + if (query.getRight().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.ALL.getValue()) == 0 + || query.getRight().getVersionStrategy().compareTo(ReportConstant.VersionStrategyEnum.DEFINE.getValue()) == 0 ) { + if(StrUtil.isEmpty(query.getRight().getBomVersion())) + return ResultVO.error(STATE.ParamErr, "比对右侧请选择一个版本"); + } + + + + + + + + if (!ObjectUtil.equal(query.getLeft().getQueryType(), query.getRight().getQueryType())) { return ResultVO.error(STATE.ParamErr, "查询方式不一致"); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java index 1a90a9ff..5fa73e91 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ForwardReportVO.java @@ -1,6 +1,7 @@ package com.nflg.product.bomnew.pojo.vo; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -31,6 +32,19 @@ public class ForwardReportVO extends BaseMaterialVO { @ApiModelProperty("层级") private Integer levelNum; + @ApiModelProperty("查询物料bom版本") + private String bomVersion; + + @ApiModelProperty("层级描述") + private String levelNumText; + + public String getLevelNumText(){ + if(Objects.nonNull(levelNum)){ + levelNumText=StrUtil.repeat(".",levelNum); + levelNumText=levelNumText+levelNum; + } + return levelNumText; + } @ApiModelProperty(value = "工厂编码") private String facCode; @@ -56,6 +70,8 @@ public class ForwardReportVO extends BaseMaterialVO { @ApiModelProperty(value = "数量") private BigDecimal num; + + public BigDecimal getNum(){ if(Objects.nonNull(num)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java index c75d4d02..0b5475bf 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java @@ -44,10 +44,33 @@ public abstract class BaseForwardReport { * @param bomList */ protected void sumLevel(List bomList) { + if(CollUtil.isEmpty(bomList)){ + return; + } //分层统计,避免使用遍历树统计 Map> listMap = bomList.stream().collect(Collectors.groupingBy(ForwardReportVO::getLevelNum)); + +// List>> sortList=new ArrayList<>(listMap.entrySet()); +// Collections.sort(sortList, new Comparator>>() { +// @Override +// public int compare(Map.Entry> o1, Map.Entry> o2) { +// return o1.getKey().compareTo(o2.getKey()); +// } +// }); + + //排序 层级升序 + Map> sortListMap= CollectionUtil.sort(listMap, new Comparator() { + @Override + public int compare( Integer o1, Integer o2) { + return o1.compareTo(o2 ); + } + }); + sortListMap.putAll(listMap); + + + Map> bomParentMap = bomList.stream().filter(u->Objects.nonNull(u.getParentRowId())&&u.getParentRowId()>0).collect(Collectors.groupingBy(ForwardReportVO::getParentRowId)); - listMap.forEach((key, value) -> { + sortListMap.forEach((key, value) -> { value.forEach(parent -> { List dataList = bomParentMap.get(parent.getBomRowId()); if (CollectionUtil.isNotEmpty(dataList) ) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java index 5ccdc860..fe7d3750 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomForwardReport.java @@ -294,17 +294,24 @@ public class EBomForwardReport extends BaseForwardReport { initMaterialInfo(parentChildList); initMaterialInfo(ImmutableList.of(parentFormal)); - AtomicInteger orderNum = new AtomicInteger(1); - parentFormal.setLevelNum(1); - parentFormal.setOrderNumber(orderNum.getAndIncrement() + ""); - nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal)); + if (CollectionUtil.isNotEmpty(parentChildList)) { + AtomicInteger orderNum = new AtomicInteger(1); + parentFormal.setLevelNum(1); + parentFormal.setOrderNumber(orderNum.getAndIncrement() + ""); + nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal)); - bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum); + bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum); + List nodeList = Convert.convert(new TypeReference>() { + }, parentChildList); + nodeList.forEach(item->{ + item.setBomVersion(parentFormal.getCurrentVersion()); + }); + + + nodesList.addAll(nodeList); + } - List nodeList = Convert.convert(new TypeReference>() { - }, parentChildList); - nodesList.addAll(nodeList); } @@ -469,7 +476,7 @@ public class EBomForwardReport extends BaseForwardReport { nodesList.addAll(nodeList); for (ForwardReportVO vo : nodeList) { - + vo.setBomVersion(parentFormal.getCurrentVersion()); // vo.setDeviseName(parentFormal.getDeviseName()); vo.setExpireEndTime(parentFormal.getConvertToEbomTime()); } @@ -489,40 +496,77 @@ public class EBomForwardReport extends BaseForwardReport { * @return */ ReportBomVO sumReport() { - List listParent = getParentV2(); - if (CollUtil.isEmpty(listParent)) { + + ReportBomVO multiReportObj = multiReport(); + + if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){ return null; } - BomNewEbomParentVO parentFormal0 = listParent.get(0); - ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0); - List nodesList = new ArrayList<>(); - for (BomNewEbomParentVO parentFormal : listParent) { + Map> bomVesionMap=multiReportObj.getChildNodes().stream().collect(Collectors.groupingBy(ForwardReportVO::getBomVersion)); + bomVesionMap.forEach((key, value) -> { - List bomList = bomDetailAndParent(parentFormal); - if (CollUtil.isEmpty(bomList)) { - continue; - } - List convertBomList = Convert.convert(new TypeReference>() { - }, bomList); - sumLevel(convertBomList); - //无子级的数据 - List nodeList = leafMergeMaterialNo(convertBomList); + if(CollUtil.isNotEmpty(value)){ + //无子级的数据 + List nodeList = leafMergeMaterialNo(value); - nodesList.addAll(nodeList); - AtomicInteger orderNum = new AtomicInteger(1); - for (ForwardReportVO vo : - nodeList) { + AtomicInteger orderNum = new AtomicInteger(1); + for (ForwardReportVO vo : + nodeList) { + + // vo.setLevelNum(1); + vo.setOrderNumber(orderNum.incrementAndGet() + ""); + + } + + nodesList.addAll(nodeList); - vo.setLevelNum(1); - vo.setOrderNumber(orderNum.incrementAndGet() + ""); - vo.setExpireEndTime(parentFormal.getConvertToEbomTime()); - // vo.setDeviseName(forwardReportVO.getDeviseName()); } - } - return buildReportBomVo(forwardReportVO, nodesList); + + }); + + + multiReportObj.getChildNodes().clear(); + multiReportObj.getChildNodes().addAll(nodesList); + + return multiReportObj; + +// List listParent = getParentV2(); +// if (CollUtil.isEmpty(listParent)) { +// return null; +// } +// BomNewEbomParentVO parentFormal0 = listParent.get(0); +// ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0); +// +// List nodesList = new ArrayList<>(); +// for (BomNewEbomParentVO parentFormal : listParent) { +// +// List bomList = bomDetailAndParent(parentFormal); +// if (CollUtil.isEmpty(bomList)) { +// continue; +// } +// List convertBomList = Convert.convert(new TypeReference>() { +// }, bomList); +// sumLevel(convertBomList); +// +// //无子级的数据 +// List nodeList = leafMergeMaterialNo(convertBomList); +// +// nodesList.addAll(nodeList); +// AtomicInteger orderNum = new AtomicInteger(1); +// for (ForwardReportVO vo : +// nodeList) { +// +// vo.setLevelNum(1); +// vo.setOrderNumber(orderNum.incrementAndGet() + ""); +// vo.setExpireEndTime(parentFormal.getConvertToEbomTime()); +// // vo.setDeviseName(forwardReportVO.getDeviseName()); +// } +// +// } +// return buildReportBomVo(forwardReportVO, nodesList); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomForwardReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomForwardReport.java index 8e627de5..ec58cf5b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomForwardReport.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomForwardReport.java @@ -311,14 +311,20 @@ public class PBomForwardReport extends BaseForwardReport { parentFormal.setOrderNumber(orderNum.getAndIncrement() + ""); nodesList.add(Convert.convert(ForwardReportVO.class, parentFormal)); bomUpAndLowLevel(ImmutableList.of(parentFormal), parentChildList, null, 2, orderNum); + List nodeList = Convert.convert(new TypeReference>() { + }, parentChildList); + nodeList.forEach(item->{ + item.setBomVersion(parentFormal.getCurrentVersion()); + }); + + nodesList.addAll(nodeList); } - List nodeList = Convert.convert(new TypeReference>() { - }, parentChildList); - nodesList.addAll(nodeList); + + } return buildReportBomVo(forwardReportVO,nodesList); } @@ -497,7 +503,7 @@ public class PBomForwardReport extends BaseForwardReport { for (ForwardReportVO vo : nodeList) { - + vo.setBomVersion(parentFormal.getCurrentVersion()); // vo.setDeviseName(parentFormal.getDeviseName()); // vo.setCreatedTime(parentFormal.getCreatedTime()); vo.setExpireEndTime(parentFormal.getReleaseTime()); @@ -517,41 +523,77 @@ public class PBomForwardReport extends BaseForwardReport { * @return */ ReportBomVO sumReport() { - List listParent=getParentV2(); - if (CollUtil.isEmpty(listParent)) { + + ReportBomVO multiReportObj = multiReport(); + + if(multiReportObj==null || CollUtil.isEmpty(multiReportObj.getChildNodes())){ return null; } - BomNewPbomParentVO parentFormal0=listParent.get(0); - ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0); + List nodesList = new ArrayList<>(); + Map> bomVesionMap=multiReportObj.getChildNodes().stream().collect(Collectors.groupingBy(ForwardReportVO::getBomVersion)); + bomVesionMap.forEach((key, value) -> { - List nodesList=new ArrayList<>(); - for (BomNewPbomParentVO parentFormal: - listParent ) { + if(CollUtil.isNotEmpty(value)) { + //无子级的数据 + List nodeList = leafMergeMaterialNo(value); + AtomicInteger orderNum = new AtomicInteger(1); + for (ForwardReportVO vo : + nodeList) { - List bomList = bomDetailAndParent(parentFormal ); + // vo.setLevelNum(1); + vo.setOrderNumber(orderNum.incrementAndGet() + ""); + + } + + nodesList.addAll(nodeList); - if(CollUtil.isEmpty(bomList)){ - continue; - } - List convertBomList = Convert.convert(new TypeReference>() { - }, bomList); - - sumLevel(convertBomList); - List nodeList = leafMergeMaterialNo(convertBomList); - nodesList.addAll(nodeList); - int noNum = 1; - for (ForwardReportVO vo : nodeList) { - vo.setOrderNumber(noNum + ""); - noNum++; - // vo.setDeviseName(forwardReportVO.getDeviseName()); - vo.setCreatedTime(parentFormal.getCreatedTime()); - vo.setExpireEndTime(parentFormal.getReleaseTime()); } + }); - } - return buildReportBomVo(forwardReportVO,nodesList); + multiReportObj.getChildNodes().clear(); + multiReportObj.getChildNodes().addAll(nodesList); + + return multiReportObj; + + + +// List listParent=getParentV2(); +// if (CollUtil.isEmpty(listParent)) { +// return null; +// } +// BomNewPbomParentVO parentFormal0=listParent.get(0); +// ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0); +// +// List nodesList=new ArrayList<>(); +// for (BomNewPbomParentVO parentFormal: +// listParent ) { +// +// +// List bomList = bomDetailAndParent(parentFormal ); +// +// if(CollUtil.isEmpty(bomList)){ +// continue; +// } +// List convertBomList = Convert.convert(new TypeReference>() { +// }, bomList); +// +// sumLevel(convertBomList); +// List nodeList = leafMergeMaterialNo(convertBomList); +// nodesList.addAll(nodeList); +// int noNum = 1; +// for (ForwardReportVO vo : nodeList) { +// vo.setOrderNumber(noNum + ""); +// noNum++; +// // vo.setDeviseName(forwardReportVO.getDeviseName()); +// vo.setCreatedTime(parentFormal.getCreatedTime()); +// vo.setExpireEndTime(parentFormal.getReleaseTime()); +// } +// +// +// } +// return buildReportBomVo(forwardReportVO,nodesList); }