From 3f6cde7e7a0efd0c94d26d2046a7719770bba5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 30 Aug 2024 09:36:09 +0800 Subject: [PATCH 01/27] =?UTF-8?q?pbom-=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/util/VersionUtil.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java index 2426a153..7ecdb7ec 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java @@ -122,4 +122,42 @@ public class VersionUtil { return Integer.compare(split1.length, split2.length); } + + /** + * 获取PBOM 升级版本号(PBOM升级版本号规则) + * @param version + * @return + */ + public static String getPBomUpgradNextVersion(String version) { + if (version == null || version.isEmpty()) { + throw new IllegalArgumentException("输入版本号不能为空"); + } + char lastChar = version.charAt(version.length() - 1); + boolean isLetter = Character.isLetter(lastChar); + if (!isLetter) { + return version + "a"; + } else { + int lastCharIndex = version.length() - 1; + char newLastChar = (char) (lastChar + 1); + + if (newLastChar > 'z') { + // Handle case where the last character is 'z' + StringBuilder sb = new StringBuilder(version.substring(0, lastCharIndex)); + sb.append("a").append('a'); + return sb.toString(); + } else { + return version.substring(0, lastCharIndex) + newLastChar; + } + } + } + + private static String getNextLetter(char currentLetter) { + char nextLetter = (char) (currentLetter + 1); + if (nextLetter > 'z') { + return "a" + getNextLetter('a'); + } else { + return "" + nextLetter; + } + } + } From 48d3a83e89e3571165d68655fbfae28a0b73644e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 30 Aug 2024 11:00:48 +0800 Subject: [PATCH 02/27] =?UTF-8?q?=E4=BB=99=E6=A1=83=E4=B8=8D=E5=AF=BC?= =?UTF-8?q?=E5=85=A51010=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/EBom/EBomToPBom.java | 52 +++++++++++++++++-- .../topbomnew/EBomToPBomForFormalNew.java | 52 +++++++++++++++++-- 2 files changed, 95 insertions(+), 9 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index dfdabd4e..399f4808 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -7,6 +7,7 @@ import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.ConvertToPBomModelEnum; +import com.nflg.product.bomnew.constant.EBomConstant; import com.nflg.product.bomnew.constant.PBomStatusEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; @@ -16,9 +17,7 @@ import com.nflg.product.bomnew.util.ListCommonUtil; import lombok.NoArgsConstructor; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -27,6 +26,7 @@ import java.util.stream.Collectors; @NoArgsConstructor public class EBomToPBom extends EBomToPbomBase { + private Map> facBomDataMp = new HashMap<>(); @@ -39,6 +39,39 @@ public class EBomToPBom extends EBomToPbomBase { initEBomVersion(); } + private void splitData() { + this.facCodes = new ArrayList<>(); + //1020数据 + List data1020 = new ArrayList<>(); + List deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃")).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(deliveryPackage1020)) { + facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + data1020.add(parent); + for (BomNewEbomParentVO data : deliveryPackage1020) { + List subVos = getResultAllSubIncludeSelf(data); + data1020.addAll(subVos); + } + facBomDataMp.put(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, data1020); + } + + //1010 数据 + List data1010 = new ArrayList<>(); + List deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); //&& !u.getMaterialName().contains("仙桃") + if (CollUtil.isNotEmpty(deliveryPackage1010)) { + facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010); + data1010.add(parent); + for (BomNewEbomParentVO data : deliveryPackage1010) { + List subVos = new ArrayList<>(); + if (!data.getMaterialName().contains("仙桃") ) { //只获取下降虚拟包(排除仙桃油漆包) + subVos=getResultAllSubIncludeSelf(data); + } + data1010.addAll(subVos); + } + facBomDataMp.put(EBomConstant.MAIN_FACTORY_CODE_1010, data1010); + } + + } + /** * 31項体层 @@ -53,11 +86,20 @@ public class EBomToPBom extends EBomToPbomBase { changeImpact(); //bom 提层 liftingLayer(); - List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + + splitData(); + List hasConvert = new ArrayList<>(); for (String facCode : facCodes) { - //buildPBomParent(parent, facCode); + //仙桃的不发1010工厂 + if(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) && parent.getMaterialName().contains("仙桃") ){ + continue; + } + List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + if(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode)){ + parentList = ListCommonUtil.toDistinct(facBomDataMp.get(facCode).stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + } for (BomNewEbomParentVO vo : parentList) { String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId()); if (hasConvert.contains(hasConvertKey)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java index 860fcd6b..e86d0d3c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java @@ -8,6 +8,7 @@ import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.ConvertToPBomModelEnum; +import com.nflg.product.bomnew.constant.EBomConstant; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.mapper.master.BomNewPbomParentMapper; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; @@ -18,9 +19,7 @@ import com.nflg.product.bomnew.util.ListCommonUtil; import lombok.NoArgsConstructor; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -30,6 +29,7 @@ import java.util.stream.Collectors; public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { + private Map> facBomDataMp = new HashMap<>(); public EBomToPBomForFormalNew(BomNewEbomParentVO inParent, List inAllBomDetail, List inFacCodes, Long parentRowId, ConvertToPBomModelEnum convertModelEnum) { @@ -42,6 +42,39 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { } + private void splitData() { + this.facCodes = new ArrayList<>(); + //1020数据 + List data1020 = new ArrayList<>(); + List deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃")).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(deliveryPackage1020)) { + facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + data1020.add(parent); + for (BomNewEbomParentVO data : deliveryPackage1020) { + List subVos = getResultAllSubIncludeSelf(data); + data1020.addAll(subVos); + } + facBomDataMp.put(EBomConstant.XIAN_TAO_FACTORY_CODE_1020, data1020); + } + + //1010 数据 + List data1010 = new ArrayList<>(); + List deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); //&& !u.getMaterialName().contains("仙桃") + if (CollUtil.isNotEmpty(deliveryPackage1010)) { + facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010); + data1010.add(parent); + for (BomNewEbomParentVO data : deliveryPackage1010) { + List subVos = new ArrayList<>(); + if (!data.getMaterialName().contains("仙桃") ) { //只获取下降虚拟包(排除仙桃油漆包) + subVos=getResultAllSubIncludeSelf(data); + } + data1010.addAll(subVos); + } + facBomDataMp.put(EBomConstant.MAIN_FACTORY_CODE_1010, data1010); + } + + } + /** * 31項体层 @@ -53,10 +86,21 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { check(); //bom 提层 liftingLayer(); - List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + + splitData(); + List hasConvert = new ArrayList<>(); for (String facCode : facCodes) { + //仙桃的不发1010工厂 + if(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) && parent.getMaterialName().contains("仙桃") ){ + continue; + } + List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + if(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode)){ + parentList = ListCommonUtil.toDistinct(facBomDataMp.get(facCode).stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + } + //buildPBomParent(parent, facCode); for (BomNewEbomParentVO vo : parentList) { String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId()); From 6f4e2a22ac1b5276ea75dfdea292a8844d0c5371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 30 Aug 2024 16:54:37 +0800 Subject: [PATCH 03/27] =?UTF-8?q?=E7=9B=B4=E5=8F=91=E5=8C=85=EF=BC=8C?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=89=8D=E8=A3=85=E9=85=8D=E5=8C=85=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewPbomParentService.java | 6 +++++- .../bomnew/service/domain/EBom/EBomToPBom.java | 10 +++++----- .../service/domain/EBom/EBomToPBomFor31.java | 7 ++++++- .../topbomnew/EBomToPBomForFormal31New.java | 16 ++++++---------- .../EBom/topbomnew/EBomToPBomForFormalNew.java | 18 +++++------------- .../EBom/topbomnew/FormalEBomToPbomBase.java | 8 ++++++++ 6 files changed, 35 insertions(+), 30 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index ae9bab04..05bc1ceb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -418,7 +418,7 @@ public class BomNewPbomParentService extends ServiceImplStrUtil.isBlank(u.getFacCode())).collect(Collectors.toList()).forEach(u->u.setFacCode(parent.getFacCode())); +// paramDTO.getChildList().stream().filter(u->StrUtil.isBlank(u.getFacCode())).collect(Collectors.toList()).forEach(u->u.setFacCode(parent.getFacCode())); List childList = Convert.toList(BomNewPbomChildEntity.class, paramDTO.getChildList()); List childIds = paramDTO.getChildList().stream().map(BomNewPbomParentVO::getRowId).collect(Collectors.toList()); List pChildList = Lists.newArrayList(); @@ -1204,6 +1204,10 @@ public class BomNewPbomParentService extends ServiceImpl newChildren = this.getBaseMapper().getParentChild(newPBom.getBomRowId()); List newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); + if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){ + newPBom.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); + } + Set oldChildSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNum()).collect(Collectors.toSet()); Set newChildSet = newBomNoTChildren.stream().map(u -> u.getMaterialNoAndNum()).collect(Collectors.toSet()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index 399f4808..0770b459 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -117,11 +117,11 @@ public class EBomToPBom extends EBomToPbomBase { //子级 List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); - List mergeChild = mergeChild(child); - //判断pbom 是否一致 -// if( compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){ -// continue; -// } + List mergeChild=child; + //直发包/发货前包不合并 + if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ + mergeChild = mergeChild(child); + } BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode,parentList); if(Objects.isNull(parentEnt)){ continue; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java index 0b43040d..08d51eff 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java @@ -117,7 +117,12 @@ public class EBomToPBomFor31 extends EBomToPbomBase { //子级 List child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); - List mergeChild = mergeChild(child); + List mergeChild=child; + //直发包/发货前包不合并 + if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ + mergeChild = mergeChild(child); + } + // if(compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){ // continue; // } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java index a3eb9778..e5bf8f23 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java @@ -114,16 +114,12 @@ public class EBomToPBomForFormal31New extends FormalEBomToPbomBase { } //子级 List child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); - List mergeChild = mergeChild(child); - //对比PBOM 版本是否一致(跟节点除外) -// if(!parent.getMaterialNo().equals(vo.getMaterialNo()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ -// continue; -// } -// if(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ -// if(compareContentIsSame(vo,mergeChild,facCode)){ -// continue; -// } -// } + List mergeChild=child; + //直发包/发货前包不合并 + if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ + mergeChild = mergeChild(child); + } + BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode,parentList); if(Objects.isNull(parentEnt)){ continue; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java index e86d0d3c..c3f85d46 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java @@ -115,19 +115,11 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { } //子级 List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); - List mergeChild = mergeChild(child); - - //对比PBOM 版本是否一致(跟节点除外) -// if(!parent.getMaterialNo().equals(vo.getMaterialNo()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ -// continue; -// } -// if(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ -// if(compareContentIsSame(vo,mergeChild,facCode)){ -// continue; -// } -// } - - + List mergeChild=child; + //直发包/发货前包不合并 + if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ + mergeChild = mergeChild(child); + } BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode,parentList); if(Objects.isNull(parentEnt)){ continue; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 5010cdad..9568eeec 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -131,6 +131,14 @@ public abstract class FormalEBomToPbomBase { return false; + } + + /** + * pbom- 排除工艺包,新增行,更新行的处理 + * 1、 + */ + private void pBomHandler(BomNewEbomParentVO pVo){ + } //合并子级 From 4bc3d6c99bb00ffdd843dad436f84b7e00a0eddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 30 Aug 2024 17:14:10 +0800 Subject: [PATCH 04/27] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/nflg/product/bomnew/util/VersionUtil.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java index 7ecdb7ec..f79fad4a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java @@ -135,7 +135,7 @@ public class VersionUtil { char lastChar = version.charAt(version.length() - 1); boolean isLetter = Character.isLetter(lastChar); if (!isLetter) { - return version + "a"; + return version + ".a"; } else { int lastCharIndex = version.length() - 1; char newLastChar = (char) (lastChar + 1); @@ -143,6 +143,9 @@ public class VersionUtil { if (newLastChar > 'z') { // Handle case where the last character is 'z' StringBuilder sb = new StringBuilder(version.substring(0, lastCharIndex)); + if(!sb.toString().contains(".")) { + sb.append("."); + } sb.append("a").append('a'); return sb.toString(); } else { From 79740360fab1cd250eb1b697d44dc3c6fd6b8015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 2 Sep 2024 14:28:46 +0800 Subject: [PATCH 05/27] =?UTF-8?q?EBOM-=E7=BC=96=E8=BE=91-=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=89=A9=E6=96=99=E8=A1=8C=E6=97=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/service/BomNewEbomParentService.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 57cafc16..b5ffbb47 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -2341,13 +2341,11 @@ public class BomNewEbomParentService extends ServiceImpl changeMaterial(BomNewEBomChangeDTO dto) { List materialVOS = CheckEBomException.checkMaterialNoInMain(dto.getDatas()); - SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(dto.getDatas(), materialVOS, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT2); - - for (BomNewEbomParentVO vo : - dto.getDatas()) { + String[] editEditIgnoredFields = {"material", "materialTexture", "projectType", "materialNo", "materialName","materialDesc","drawingNo"}; + SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(dto.getDatas(), materialVOS, editEditIgnoredFields); + for (BomNewEbomParentVO vo : dto.getDatas()) { vo.setTotalWeight(NumberUtil.mul(vo.getUnitWeight(), vo.getNum())); } - return dto.getDatas(); } From a0337e5a410b10b98986403ad3ddc7857af9363a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 2 Sep 2024 14:34:15 +0800 Subject: [PATCH 06/27] =?UTF-8?q?EBOM-=E7=BC=96=E8=BE=91-=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=89=A9=E6=96=99=E8=A1=8C=E6=97=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nflg/product/bomnew/constant/EBomConstant.java | 2 ++ .../bomnew/service/BomNewEbomParentService.java | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomConstant.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomConstant.java index a1823dbd..35b26197 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomConstant.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomConstant.java @@ -22,6 +22,8 @@ public class EBomConstant { public static final String[] EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT2 = {"material", "materialTexture", "projectType", "materialUnit","materialNo", "materialName","materialDesc","drawingNo" }; + //ebom编辑时,物料信息初始化时需忽略的字段 + public static final String[] EBOM_EDIT_IGNORED_FIELDS = {"material", "materialTexture", "projectType", "materialNo", "materialName","materialDesc","drawingNo"}; public static final String[] EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT3 = {"material", "materialTexture", "projectType", "materialUnit","materialWeight"}; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index b5ffbb47..f810e6af 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -1855,7 +1855,7 @@ public class BomNewEbomParentService extends ServiceImpl changeMaterial(BomNewEBomChangeDTO dto) { List materialVOS = CheckEBomException.checkMaterialNoInMain(dto.getDatas()); - String[] editEditIgnoredFields = {"material", "materialTexture", "projectType", "materialNo", "materialName","materialDesc","drawingNo"}; - SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(dto.getDatas(), materialVOS, editEditIgnoredFields); - for (BomNewEbomParentVO vo : dto.getDatas()) { + SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(dto.getDatas(), materialVOS, EBomConstant.EBOM_EDIT_IGNORED_FIELDS); + + for (BomNewEbomParentVO vo : + dto.getDatas()) { vo.setTotalWeight(NumberUtil.mul(vo.getUnitWeight(), vo.getNum())); } + return dto.getDatas(); } From 57aa6603ce5d0c20ef36f84e192ca153bc4c1339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 2 Sep 2024 18:59:15 +0800 Subject: [PATCH 07/27] =?UTF-8?q?=E8=BD=ACpbom=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/constant/BomConstant.java | 3 + .../service/domain/EBom/EBomToPbomBase.java | 72 +++++++++++++++++++ .../PBom/TechnologyPackageParamBuilder.java | 2 + 3 files changed, 77 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java index af9ca74d..bbff0fad 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/BomConstant.java @@ -16,4 +16,7 @@ public class BomConstant { public static final Integer YES=1; public static final Integer NO=0; + + //工艺包物料类别编码 + public static final String ART_PACKAGE_MATERIAL_CATEGORY_CODE="201201"; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 7f3d48f9..b7fbc901 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -84,6 +84,7 @@ public abstract class EBomToPbomBase { //当子级为F项或Z项时-无需转的父级物料 protected Set childDelMaterialNos = new HashSet<>(); + private BomNewPbomParentEntity ; public abstract void convert(); @@ -213,6 +214,77 @@ public abstract class EBomToPbomBase { } + /** + * 处理PBOM-正式包含工艺包时: + * 1、将工艺包迁移过来。 + * 2、建BOM中新增物料-迁移过来 + * 3、将修改过的物料编码,项目类别,数量 复制过来。 + * + */ + private void handlerPBom(BomNewPbomParentEntity oldParent , List newBomChildren){ + + List oldChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(), 1); + //PBOM手动添加的迁移过来 + List pBomCreateChildren = oldChildren.stream().filter(u -> PbomSourceStatusEnum.PBOM.equalsValue(u.getSourceStatus())).collect(Collectors.toList()); + //Pbom新增的工艺包 + List pBomCreateArtPackage = pBomCreateChildren.stream().filter(u -> BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(u.getMaterialCategoryCode())).collect(Collectors.toList()); + for (BomNewPbomParentVO pBomCreateArtPackageItem : pBomCreateArtPackage) { + if() + } + + } + + /** + * 处理PBOM新增物料 + */ + private void handlerArtPackage(List oldChildren , List newBomChildren ,String facCode ,List parentList){ + List resultAdd=new ArrayList<>(); + //pbom 新增物料 + List oldPBomCreateChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); + //Pbom新增的工艺包 + for (BomNewPbomParentVO oldPBomCreateArtPackageItem : oldPBomCreateChildren) { + //新的不包含虚拟包:1、将该虚拟包加在该物料下, + // 2、将虚拟包中的物料从该BOM中移除 + if(!newBomChildrenMap.containsKey(oldPBomCreateArtPackageItem.getMaterialNo())){ + BomNewEbomParentVO artChild=new BomNewEbomParentVO(); + BeanUtil.copyProperties(oldPBomCreateArtPackageItem,artChild); + + BomNewPbomParentEntity artParent = buildPBomParent(artChild, facCode, parentList); + //old 工艺包子级 + List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomCreateArtPackageItem.getBomRowId(), 1); + if() + + resultAdd.add(artChild); + + // + } + } + } + + /** + * T项外-是否一致 + * @param oldChildren + * @param newChildren + * @return + */ + private boolean pBomSameIs(List oldChildren ,List newChildren){ + //旧bom除T项之外 + List oldBomNoTChildren = oldChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); + //新BOM 除T项外 + List newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); + if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){ + return false; + } + + Set oldSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); + Set newSet = newChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); + if(oldSet.equals(newSet)){ + return true; + } + return false; + } + /** * Pbom明细对比 * @param pVo diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java index e63255af..ff306733 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/TechnologyPackageParamBuilder.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.google.common.collect.ImmutableList; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.PBomStatusEnum; +import com.nflg.product.bomnew.constant.PbomSourceStatusEnum; import com.nflg.product.bomnew.pojo.dto.TechnologyPackageParam; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; @@ -232,6 +233,7 @@ public class TechnologyPackageParamBuilder { child.setCreatedTime(LocalDateTime.now()); child.setModifyTime(LocalDateTime.now()); child.setSourceRowId(0L); + child.setSourceStatus(PbomSourceStatusEnum.PBOM.getValue()); this.packageChildren.add(child); return child; } From 1e392b6a467b527966314967c1a496bf87aa9425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 3 Sep 2024 17:38:22 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E8=BD=ACpbom=E5=A4=84=E7=90=86-2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/EBom/EBomToPBom.java | 8 +- .../service/domain/EBom/EBomToPBomFor31.java | 13 +- .../service/domain/EBom/EBomToPbomBase.java | 117 +++++++++--------- .../topbomnew/EBomToPBomForFormal31New.java | 2 + .../topbomnew/EBomToPBomForFormalNew.java | 2 + .../EBom/topbomnew/FormalEBomToPbomBase.java | 69 +++++++++++ 6 files changed, 135 insertions(+), 76 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index 0770b459..ab8a2d92 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -111,10 +111,6 @@ public class EBomToPBom extends EBomToPbomBase { if(BooleanEnum.TRUE.equals(vo.getNoConvertToPBomIs()) ){ continue; } - //构建变更明细 -// buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); -// buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - //子级 List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); List mergeChild=child; @@ -126,8 +122,10 @@ public class EBomToPBom extends EBomToPbomBase { if(Objects.isNull(parentEnt)){ continue; } + //处理子级BOM + mergeChild= handlerArtPackage(parentEnt,mergeChild,facCode,parentList); //子级 - if (CollUtil.isNotEmpty(child)) { + if (CollUtil.isNotEmpty(mergeChild)) { //合并子级 for (BomNewEbomParentVO eb : mergeChild) { BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java index 08d51eff..e4097cf7 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomFor31.java @@ -111,10 +111,6 @@ public class EBomToPBomFor31 extends EBomToPbomBase { if (BooleanEnum.TRUE.equals(vo.getNoConvertToPBomIs())) { continue; } - //构建变更明细 -// buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); -// buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - //子级 List child = facBomDataMp.get(facCode).stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId()) && !childDelMaterialNos.contains(u.getMaterialNo())).distinct().collect(Collectors.toList()); List mergeChild=child; @@ -122,17 +118,14 @@ public class EBomToPBomFor31 extends EBomToPbomBase { if(!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(vo.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(vo.getVirtualPartType())){ mergeChild = mergeChild(child); } - -// if(compareContentIsSame(vo, mergeChild, facCode) && !vo.getMaterialNo().equals(parent.getMaterialNo())){ -// continue; -// } BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode, parentList); if (Objects.isNull(parentEnt)) { continue; } + //处理bom子级 + mergeChild= handlerArtPackage(parentEnt,mergeChild,facCode,parentList); //子级 - if (CollUtil.isNotEmpty(child)) { - //合并子级 + if (CollUtil.isNotEmpty(mergeChild)) { for (BomNewEbomParentVO eb : mergeChild) { BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); BeanUtil.copyProperties(eb, childEnt, "sourceRowId"); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index b7fbc901..3afeef20 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -2,6 +2,7 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; @@ -205,84 +206,78 @@ public abstract class EBomToPbomBase { return null; } else { //pbom-处于正式表 - //Ebom为已发布时则直接跳过 (直发包,发货前装配包是则需对比Bom明细,一致则跳过,否则升级) - return buildParentEntity(parentVo, facCode, oldParent, VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion())); - } } - /** - * 处理PBOM-正式包含工艺包时: - * 1、将工艺包迁移过来。 - * 2、建BOM中新增物料-迁移过来 - * 3、将修改过的物料编码,项目类别,数量 复制过来。 - * - */ - private void handlerPBom(BomNewPbomParentEntity oldParent , List newBomChildren){ - - List oldChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(), 1); - //PBOM手动添加的迁移过来 - List pBomCreateChildren = oldChildren.stream().filter(u -> PbomSourceStatusEnum.PBOM.equalsValue(u.getSourceStatus())).collect(Collectors.toList()); - //Pbom新增的工艺包 - List pBomCreateArtPackage = pBomCreateChildren.stream().filter(u -> BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(u.getMaterialCategoryCode())).collect(Collectors.toList()); - for (BomNewPbomParentVO pBomCreateArtPackageItem : pBomCreateArtPackage) { - if() - } + private BomNewPbomChildEntity buildPBomAddChild(BomNewPbomParentEntity parent, String facCode, BomNewPbomParentVO oldChild){ + BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); + BeanUtil.copyProperties(oldChild, childEnt, "sourceRowId"); + childEnt.setRowId(IdWorker.getId()); + childEnt.setParentRowId(parent.getRowId()); + childEnt.setFacCode(facCode); + childEnt.setIdentityNo(StrUtil.join("-", parent.getMaterialNo(), oldChild.getMaterialNo())); + childEnt.setCreatedTime(LocalDateTime.now()); + childEnt.setCreatedBy(SessionUtil.getUserCode()); + this.pBomChildResult.add(childEnt); + return childEnt; } + /** * 处理PBOM新增物料 */ - private void handlerArtPackage(List oldChildren , List newBomChildren ,String facCode ,List parentList){ - List resultAdd=new ArrayList<>(); - //pbom 新增物料 - List oldPBomCreateChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); - Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); - //Pbom新增的工艺包 - for (BomNewPbomParentVO oldPBomCreateArtPackageItem : oldPBomCreateChildren) { - //新的不包含虚拟包:1、将该虚拟包加在该物料下, - // 2、将虚拟包中的物料从该BOM中移除 - if(!newBomChildrenMap.containsKey(oldPBomCreateArtPackageItem.getMaterialNo())){ - BomNewEbomParentVO artChild=new BomNewEbomParentVO(); - BeanUtil.copyProperties(oldPBomCreateArtPackageItem,artChild); + protected List handlerArtPackage(BomNewPbomParentEntity parent , List newBomChildren ,String facCode ,List parentList){ + BomNewPbomParentEntity oldParent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()) + .eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one(); + List delResult=new ArrayList<>(); + //pBom为已发布时 + if(Objects.nonNull(oldParent) && PBomStatusEnum.PUBLISH.getValue()<= oldParent.getStatus()) { + List oldChildren=SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(),1); - BomNewPbomParentEntity artParent = buildPBomParent(artChild, facCode, parentList); - //old 工艺包子级 - List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomCreateArtPackageItem.getBomRowId(), 1); - if() + //pBom 手工新增物料 + List oldPBomAddChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); - resultAdd.add(artChild); + for (BomNewPbomParentVO oldPBomAddItem : oldPBomAddChildren) { + //加入当前BOM明细中 + buildPBomAddChild(parent, facCode, oldPBomAddItem); - // + //如为工艺包,且在当前BOM中不存在 + if (BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { + //创建工艺包版本 + BomNewPbomParentEntity artParent = buildPBomParent(Convert.convert(BomNewEbomParentVO.class, oldPBomAddItem), facCode, parentList); + //old 工艺包子级 + List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomAddItem.getBomRowId(), 1); + for (BomNewPbomParentVO oldArtChild : oldArtChildren) { + //工艺包新增 + if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo()) || newBomChildren.contains(oldArtChild.getOriginalMaterialNo())) { + buildPBomAddChild(artParent, facCode, oldArtChild); + if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo())) { + delResult.add(oldArtChild.getOriginalMaterialNo()); + } + } + } + } } + //pBom中修改过的 + List oldPBomUpdateChildren = oldChildren.stream().filter(u -> StrUtil.isNotBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + for (BomNewPbomParentVO oldPBomUpdateChild : oldPBomUpdateChildren) { + if (!oldPBomUpdateChild.getOriginalMaterialNo().equals(oldPBomUpdateChild.getMaterialNo()) || !oldPBomUpdateChild.getOriginalProjectType().equals(oldPBomUpdateChild.getProjectType()) || !oldPBomUpdateChild.getOriginalNum().equals(oldPBomUpdateChild.getNum())) { + List upEnts = newBomChildren.stream().filter(u -> u.getMaterialNo().equals(oldPBomUpdateChild.getOriginalMaterialNo()) + && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && u.getNum().equals(oldPBomUpdateChild.getOriginalNum())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(upEnts)) { + buildPBomAddChild(parent, facCode, oldPBomUpdateChild); + newBomChildren.remove(upEnts.get(0)); + } + } + } + return newBomChildren.stream().filter(u->!delResult.contains(u.getMaterialNo())).collect(Collectors.toList()); } - } - - /** - * T项外-是否一致 - * @param oldChildren - * @param newChildren - * @return - */ - private boolean pBomSameIs(List oldChildren ,List newChildren){ - //旧bom除T项之外 - List oldBomNoTChildren = oldChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); - //新BOM 除T项外 - List newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); - if(oldBomNoTChildren.size()!=newBomNoTChildren.size()){ - return false; - } - - Set oldSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); - Set newSet = newChildren.stream().map(u -> u.getMaterialNoAndNumAndProjectType()).collect(Collectors.toSet()); - if(oldSet.equals(newSet)){ - return true; - } - return false; + return newBomChildren; } /** diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java index e5bf8f23..7b7bdef9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormal31New.java @@ -124,6 +124,8 @@ public class EBomToPBomForFormal31New extends FormalEBomToPbomBase { if(Objects.isNull(parentEnt)){ continue; } + //处理子级 + mergeChild=handlerArtPackage(parentEnt,mergeChild,facCode,parentList); //检查是否用户跟用户节点() if(parentEnt.getMaterialNo().equals(parent.getMaterialNo())) { List childMaterialNos = SpringUtil.getBean(BomNewPbomParentMapper.class).getPBomExistMaterialInChildForWorkList(parent.getMaterialNo()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java index c3f85d46..ded76e12 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java @@ -124,6 +124,8 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { if(Objects.isNull(parentEnt)){ continue; } + //处理子级 + mergeChild=handlerArtPackage(parentEnt,mergeChild,facCode,parentList); //检查是否用户跟用户节点() if(parentEnt.getMaterialNo().equals(parent.getMaterialNo())) { List childMaterialNos = SpringUtil.getBean(BomNewPbomParentMapper.class).getPBomExistMaterialInChildForWorkList(parent.getMaterialNo()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 9568eeec..f3cf5b20 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -2,6 +2,7 @@ package com.nflg.product.bomnew.service.domain.EBom.topbomnew; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; @@ -214,6 +215,74 @@ public abstract class FormalEBomToPbomBase { } + private BomNewPbomChildEntity buildPBomAddChild(BomNewPbomParentEntity parent, String facCode, BomNewPbomParentVO oldChild){ + BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); + BeanUtil.copyProperties(oldChild, childEnt, "sourceRowId"); + childEnt.setRowId(IdWorker.getId()); + childEnt.setParentRowId(parent.getRowId()); + childEnt.setFacCode(facCode); + childEnt.setIdentityNo(StrUtil.join("-", parent.getMaterialNo(), oldChild.getMaterialNo())); + childEnt.setCreatedTime(LocalDateTime.now()); + childEnt.setCreatedBy(SessionUtil.getUserCode()); + + this.pBomChildResult.add(childEnt); + return childEnt; + } + + + /** + * 处理PBOM新增物料 + */ + protected List handlerArtPackage(BomNewPbomParentEntity parent , List newBomChildren ,String facCode ,List parentList){ + BomNewPbomParentEntity oldParent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()) + .eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one(); + List delResult=new ArrayList<>(); + //pBom为已发布时 + if(Objects.nonNull(oldParent) && PBomStatusEnum.PUBLISH.getValue()<= oldParent.getStatus()) { + List oldChildren=SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldParent.getRowId(),1); + + //pBom 手工新增物料 + List oldPBomAddChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); + + for (BomNewPbomParentVO oldPBomAddItem : oldPBomAddChildren) { + //加入当前BOM明细中 + buildPBomAddChild(parent, facCode, oldPBomAddItem); + + //如为工艺包,且在当前BOM中不存在 + if (BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { + //创建工艺包版本 + BomNewPbomParentEntity artParent = buildPBomParent(Convert.convert(BomNewEbomParentVO.class, oldPBomAddItem), facCode, parentList); + //old 工艺包子级 + List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomAddItem.getBomRowId(), 1); + for (BomNewPbomParentVO oldArtChild : oldArtChildren) { + //工艺包新增 + if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo()) || newBomChildren.contains(oldArtChild.getOriginalMaterialNo())) { + buildPBomAddChild(artParent, facCode, oldArtChild); + if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo())) { + delResult.add(oldArtChild.getOriginalMaterialNo()); + } + } + } + } + } + //pBom中修改过的 + List oldPBomUpdateChildren = oldChildren.stream().filter(u -> StrUtil.isNotBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); + for (BomNewPbomParentVO oldPBomUpdateChild : oldPBomUpdateChildren) { + if (!oldPBomUpdateChild.getOriginalMaterialNo().equals(oldPBomUpdateChild.getMaterialNo()) || !oldPBomUpdateChild.getOriginalProjectType().equals(oldPBomUpdateChild.getProjectType()) || !oldPBomUpdateChild.getOriginalNum().equals(oldPBomUpdateChild.getNum())) { + List upEnts = newBomChildren.stream().filter(u -> u.getMaterialNo().equals(oldPBomUpdateChild.getOriginalMaterialNo()) + && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && u.getNum().equals(oldPBomUpdateChild.getOriginalNum())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(upEnts)) { + buildPBomAddChild(parent, facCode, oldPBomUpdateChild); + newBomChildren.remove(upEnts.get(0)); + } + } + } + return newBomChildren.stream().filter(u->!delResult.contains(u.getMaterialNo())).collect(Collectors.toList()); + } + return newBomChildren; + } + /** * 获取Pbom-下一个版本(只是项目类别发生变化则生成小版本,否则大版本) */ From 146223272109118918edb4e9163a58c92318c37f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 3 Sep 2024 18:44:16 +0800 Subject: [PATCH 09/27] =?UTF-8?q?=E8=BD=ACpbom=E5=A4=84=E7=90=86-2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EBom/topbomnew/FormalEBomToPbomBase.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index f3cf5b20..b0e239af 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -283,46 +283,6 @@ public abstract class FormalEBomToPbomBase { return newBomChildren; } - /** - * 获取Pbom-下一个版本(只是项目类别发生变化则生成小版本,否则大版本) - */ - private String getPBomNextVersion(BomNewPbomParentEntity oldPBomParent, List newChildren){ - //旧bom除T项之外 - List oldBomDetail = SpringUtil.getBean(BomNewPbomParentService.class).getBaseMapper().getParentChild(oldPBomParent.getRowId()); - List oldBomNoTChildren = oldBomDetail.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); - //新BOM 除T项外 - List newBomNoTChildren = newChildren.stream().filter(u -> !EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProjectType())).collect(Collectors.toList()); - Set oldChildSet = oldBomNoTChildren.stream().map(u -> u.getMaterialNoAndNum()).collect(Collectors.toSet()); - Set newChildSet = newBomNoTChildren.stream().map(u -> u.getMaterialNoAndNum()).collect(Collectors.toSet()); - if(oldChildSet.equals(newChildSet)){ - return VersionUtil.getNextVersionForSmallVersion(oldPBomParent.getCurrentVersion()); - } - return VersionUtil.getNextVersion(oldPBomParent.getCurrentVersion()); - } - - /** - * Pbom明细对比 - * @param pVo - * @param newChildren - * @param facCode - * @return 一样则返回true 否则返回 false - */ - protected boolean pBomSameIs(BomNewEbomParentVO pVo, List newChildren, String facCode){ - BomNewPbomParentEntity oldParent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery() - .eq(BomNewPbomParentEntity::getMaterialNo, pVo.getMaterialNo()) - .eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one(); - //正式才需对比 - if(Objects.nonNull(oldParent) && PBomStatusEnum.PUBLISH.getValue()<= oldParent.getStatus()){ - List pBomChildList = SpringUtil.getBean(BomNewPbomChildService.class).lambdaQuery().eq(BomNewPbomChildEntity::getParentRowId, oldParent.getRowId()).list(); - Set oldSet = pBomChildList.stream().map(u -> StrUtil.join("",u.getMaterialNo(), u.getNum(), u.getProjectType())).collect(Collectors.toSet()); - Set newSet = newChildren.stream().map(u -> StrUtil.join("", u.getMaterialNo(), u.getNum(), u.getProjectType())).collect(Collectors.toSet()); - if(oldSet.equals(newSet)){ - return true; - } - } - return false; - } - private BomNewPbomParentEntity buildParentEntity(BomNewEbomParentVO parentVo, String facCode, BomNewPbomParentEntity oldParent, String bomVersion) { BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity(); BeanUtil.copyProperties(parentVo, pBomParent, "sourceRowId"); From 6ec9c5541533b748ca84adbbc85681688fa04046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Wed, 4 Sep 2024 09:23:25 +0800 Subject: [PATCH 10/27] =?UTF-8?q?pbom-=E5=8D=87=E7=BA=A7=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E7=89=88=E6=9C=AC=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java index 99a2cbe6..8de12a20 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java @@ -89,7 +89,7 @@ public class PBomUpgrade { pbomParent.setCreatedBy(SessionUtil.getUserCode()); pbomParent.setStatus(PBomStatusEnum.WAIT_PUBLISH.getValue()); pbomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue()); - pbomParent.setCurrentVersion(VersionUtil.getNextVersion(parentVO.getCurrentVersion())); + pbomParent.setCurrentVersion(VersionUtil.getPBomUpgradNextVersion(parentVO.getCurrentVersion())); pbomParent.setDeptRowId(SessionUtil.getDepartRowId()); pbomParent.setDeptName(SessionUtil.getDepartName()); pbomParent.setDeviseName(SessionUtil.getRealName()); From 195fff751fa14f00d7828d023cda4a17219ac4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Wed, 4 Sep 2024 11:08:52 +0800 Subject: [PATCH 11/27] =?UTF-8?q?pbom-=E5=8F=91=E5=B8=83=EF=BC=8C=E5=8F=AA?= =?UTF-8?q?=E5=8F=98=E5=8C=96T=E9=A1=B9=E6=97=B6=EF=BC=8C=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=9B=B4=E6=96=B0T=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewPbomParentService.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index 05bc1ceb..cd535229 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -1,6 +1,7 @@ package com.nflg.product.bomnew.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; @@ -1216,6 +1217,33 @@ public class BomNewPbomParentService extends ServiceImpl oldBomT = oldBomDetail.stream().filter(u -> EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProcureType())).collect(Collectors.toList()); + //新T项 + List newBomT = newChildren.stream().filter(u -> EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProcureType())).collect(Collectors.toList()); + Set oldTSet = oldBomT.stream().map(BomNewPbomParentVO::getMaterialNoAndNumAndProjectType).collect(Collectors.toSet()); + Set newTSet = newBomT.stream().map(BomNewPbomParentVO::getMaterialNoAndNumAndProjectType).collect(Collectors.toSet()); + + if(CollUtil.isNotEmpty(newBomT) && !newTSet.equals(oldTSet)){ + if (CollUtil.isNotEmpty(oldBomT)) { + List bomRowIdsForT = oldBomT.stream().map(u -> u.getRowId()).collect(Collectors.toList()); + SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteBatchIds(bomRowIdsForT); + } + List tNewChildren=new ArrayList<>(); + for (BomNewPbomParentVO netT : newBomT) { + BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); + BeanUtil.copyProperties(netT, childEnt); + childEnt.setRowId(IdWorker.getId()); + childEnt.setParentRowId(oldParent.getRowId()); + childEnt.setFacCode(oldParent.getFacCode()); + childEnt.setIdentityNo(StrUtil.join("-", oldParent.getMaterialNo(), netT.getMaterialNo())); + tNewChildren.add(childEnt); + } + if (CollUtil.isNotEmpty(tNewChildren)) { + pbomChildService.saveBatch(tNewChildren); + } + } } else if(oldChildSet.equals(newChildSet)){ newPBom.setCurrentVersion( VersionUtil.getNextVersionForSmallVersion(oldParent.getCurrentVersion())); From f888d1ef703ca1cf6761652516467b096f572270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Wed, 4 Sep 2024 14:57:09 +0800 Subject: [PATCH 12/27] =?UTF-8?q?=E4=B8=80=E8=88=AC=E9=9B=B6=E9=83=A8?= =?UTF-8?q?=E4=BB=B6=E5=8D=95=E4=BD=8D=E4=B8=8D=E4=B8=BAKG=E6=97=B6?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E7=BD=AE=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OriginalBom/OriginalBomToEBomV2Convert.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java index 11de0fdb..22e37a5b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomV2Convert.java @@ -312,7 +312,11 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { parentEntity.setMaterialName(baseMaterialVO.getMaterialName()); parentEntity.setMaterialDesc(baseMaterialVO.getMaterialDesc()); parentEntity.setMaterialTexture(baseMaterialVO.getMaterialTexture()); - parentEntity.setMaterialUnit("KG"); + parentEntity.setMaterialUnit(baseMaterialVO.getMaterialUnit()); + if(!baseMaterialVO.getMaterialUnit().equalsIgnoreCase("KG")){ + parentEntity.setNum(null); + } +// parentEntity.setMaterialUnit("KG"); parentEntity.setProjectType("L"); parentEntity.setDrawingNo(baseMaterialVO.getDrawingNo()); parentEntity.setRegReplaceIs(1); @@ -321,6 +325,7 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { } + } private BaseMaterialVO getCommonMaterialByRel(BomOriginalListVO parentEntity) { @@ -358,7 +363,11 @@ public class OriginalBomToEBomV2Convert extends BaseConvert { childEntity.setUnitWeight(parentV.getUnitWeight()); childEntity.setNum(parentV.getUnitWeight()); childEntity.setCreatedBy(SessionUtil.getUserCode()); - childEntity.setMaterialUnit("KG"); + if(!material.getMaterialUnit().equalsIgnoreCase("KG")){ + childEntity.setNum(null); + } + childEntity.setMaterialUnit(material.getMaterialUnit()); +// childEntity.setMaterialUnit("KG"); childEntity.setProjectType("L"); childEntity.setMaterialOriginalUnit(material.getMaterialUnit()); childEntity.setSourceRowId(parentV.getRowId().toString()); From ed45236c0016ed0bc38464ce4157297523d94f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Thu, 5 Sep 2024 19:37:13 +0800 Subject: [PATCH 13/27] =?UTF-8?q?pbom-=E5=8F=91=E5=B8=83=E5=8F=AA=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E8=87=AA=E5=B7=B1=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/service/BomNewPbomParentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index cd535229..884631b5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -1188,7 +1188,7 @@ public class BomNewPbomParentService extends ServiceImpl allPBom){ - List waitReleaseBom = allPBom.stream().filter(u -> PBomStatusEnum.WAIT_PUBLISH.equalsValue(u.getStatus()) && u.getBomRowId() > 0).collect(Collectors.toList()); + List waitReleaseBom = allPBom.stream().filter(u ->SessionUtil.getUserCode().equals(u.getCreatedBy()) && PBomStatusEnum.WAIT_PUBLISH.equalsValue(u.getStatus()) && u.getBomRowId() > 0).collect(Collectors.toList()); for (BomNewPbomParentVO newPBom : waitReleaseBom) { BomNewPbomParentEntity oldParent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery() From 96f7923e26d566a10e2d21e2fd204df55ee13f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Thu, 5 Sep 2024 19:45:41 +0800 Subject: [PATCH 14/27] =?UTF-8?q?PBOM=E5=8F=91=E5=B8=83=E6=97=B6=EF=BC=8Cp?= =?UTF-8?q?bom=E5=9C=A8=E5=B7=A5=E4=BD=9C=E8=A1=A8=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=BD=93=E5=88=9B=E5=BB=BA=E4=BA=BA=E4=B8=BA=E6=9C=AC=E4=BA=BA?= =?UTF-8?q?=E6=88=96=E7=89=88=E6=9C=AC=E5=A4=A7=E4=BA=8E=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=99=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/EBom/EBomToPbomBase.java | 6 ++++-- .../EBom/topbomnew/FormalEBomToPbomBase.java | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 3afeef20..189b47b2 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -85,7 +85,7 @@ public abstract class EBomToPbomBase { //当子级为F项或Z项时-无需转的父级物料 protected Set childDelMaterialNos = new HashSet<>(); - private BomNewPbomParentEntity ; + public abstract void convert(); @@ -188,6 +188,8 @@ public abstract class EBomToPbomBase { else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) { //if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) { if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { + //当bom创建人为本人 或 版本大于当前版本则覆盖 + if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0){ SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); // this.delParentRowIds.add(oldParent.getRowId()); oldParent.setSourceRowId(parentVo.getBomRowId()); @@ -197,7 +199,7 @@ public abstract class EBomToPbomBase { oldParent.setDeptRowId(SessionUtil.getDepartRowId()); this.pBomParentResult.add(oldParent); return oldParent; - // } + } } else { // 降parentVo 及其子节点标记为不转换 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index b0e239af..94674102 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -192,14 +192,16 @@ public abstract class FormalEBomToPbomBase { else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) { //if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) { if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { - SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); - oldParent.setSourceRowId(parentVo.getBomRowId()); - oldParent.setCreatedTime(LocalDateTime.now()); - oldParent.setCreatedBy(SessionUtil.getUserCode()); - oldParent.setDeptName(SessionUtil.getDepartName()); - oldParent.setDeptRowId(SessionUtil.getDepartRowId()); - this.pBomParentResult.add(oldParent); - return oldParent; + if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { + SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); + oldParent.setSourceRowId(parentVo.getBomRowId()); + oldParent.setCreatedTime(LocalDateTime.now()); + oldParent.setCreatedBy(SessionUtil.getUserCode()); + oldParent.setDeptName(SessionUtil.getDepartName()); + oldParent.setDeptRowId(SessionUtil.getDepartRowId()); + this.pBomParentResult.add(oldParent); + return oldParent; + } } else { // 降parentVo 及其子节点标记为不转换 From fe657fc14f276d3c9f7ba8d7765793019624ff85 Mon Sep 17 00:00:00 2001 From: luoliming Date: Sun, 8 Sep 2024 15:43:58 +0800 Subject: [PATCH 15/27] =?UTF-8?q?bug-=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/service/domain/EBom/EBomToPBom.java | 6 +++--- .../domain/EBom/topbomnew/EBomToPBomForFormalNew.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index ab8a2d92..cfa00852 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -40,12 +40,12 @@ public class EBomToPBom extends EBomToPbomBase { } private void splitData() { - this.facCodes = new ArrayList<>(); + // this.facCodes = new ArrayList<>(); //1020数据 List data1020 = new ArrayList<>(); List deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃")).collect(Collectors.toList()); if (CollUtil.isNotEmpty(deliveryPackage1020)) { - facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + // facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); data1020.add(parent); for (BomNewEbomParentVO data : deliveryPackage1020) { List subVos = getResultAllSubIncludeSelf(data); @@ -58,7 +58,7 @@ public class EBomToPBom extends EBomToPbomBase { List data1010 = new ArrayList<>(); List deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); //&& !u.getMaterialName().contains("仙桃") if (CollUtil.isNotEmpty(deliveryPackage1010)) { - facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010); + // facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010); data1010.add(parent); for (BomNewEbomParentVO data : deliveryPackage1010) { List subVos = new ArrayList<>(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java index ded76e12..72285663 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/EBomToPBomForFormalNew.java @@ -43,12 +43,12 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { } private void splitData() { - this.facCodes = new ArrayList<>(); + //1020数据 List data1020 = new ArrayList<>(); List deliveryPackage1020 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId()) && u.getMaterialName().contains("仙桃")).collect(Collectors.toList()); if (CollUtil.isNotEmpty(deliveryPackage1020)) { - facCodes.add(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); + data1020.add(parent); for (BomNewEbomParentVO data : deliveryPackage1020) { List subVos = getResultAllSubIncludeSelf(data); @@ -61,7 +61,7 @@ public class EBomToPBomForFormalNew extends FormalEBomToPbomBase { List data1010 = new ArrayList<>(); List deliveryPackage1010 = result.stream().filter(u -> u.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); //&& !u.getMaterialName().contains("仙桃") if (CollUtil.isNotEmpty(deliveryPackage1010)) { - facCodes.add(EBomConstant.MAIN_FACTORY_CODE_1010); + data1010.add(parent); for (BomNewEbomParentVO data : deliveryPackage1010) { List subVos = new ArrayList<>(); From 46252f8f4d0d45b290923d48ea05335839a06c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 9 Sep 2024 09:29:59 +0800 Subject: [PATCH 16/27] =?UTF-8?q?=E6=8F=90=E5=B1=82-F=E9=A1=B9=E7=BC=BABOM?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java | 2 +- .../service/domain/EBom/topbomnew/FormalEBomToPbomBase.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 189b47b2..653101c2 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -438,7 +438,7 @@ public abstract class EBomToPbomBase { buildVirtualPackageComposition(lastVirtualPackage, ent); } } - newEnt.setBomRowId(0L); +// newEnt.setBomRowId(0L); newEnt.setChildBomRowId(0L); newEnt.setNum(sum); return newEnt; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 94674102..e9289431 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -418,7 +418,7 @@ public abstract class FormalEBomToPbomBase { buildVirtualPackageComposition(lastVirtualPackage, ent); } } - newEnt.setBomRowId(0L); +// newEnt.setBomRowId(0L); newEnt.setChildBomRowId(0L); newEnt.setNum(sum); return newEnt; From ff6d7641bd5907e8128280839247ce15398e1e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Mon, 9 Sep 2024 15:52:15 +0800 Subject: [PATCH 17/27] =?UTF-8?q?=E8=BD=ACpbom-pbom=E4=B8=AD=E6=9C=89?= =?UTF-8?q?=E6=89=8B=E5=B7=A5=E6=96=B0=E5=A2=9E=E7=9A=84=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/service/domain/EBom/EBomToPbomBase.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 653101c2..7c779a9e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -245,8 +245,10 @@ public abstract class EBomToPbomBase { Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); for (BomNewPbomParentVO oldPBomAddItem : oldPBomAddChildren) { - //加入当前BOM明细中 - buildPBomAddChild(parent, facCode, oldPBomAddItem); + //加入当前BOM明细中(新增的且新的子级中不包含该物料编码--主要考虑兼容历史数据) + if(!newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { + buildPBomAddChild(parent, facCode, oldPBomAddItem); + } //如为工艺包,且在当前BOM中不存在 if (BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { From 8b1974235ea8719017890e067e1af4fe6a0d3395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 10:16:41 +0800 Subject: [PATCH 18/27] =?UTF-8?q?EBOM=E8=BD=ACPBOM-=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/EBom/topbomnew/FormalEBomToPbomBase.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index e9289431..4a9dd61a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -259,11 +259,11 @@ public abstract class FormalEBomToPbomBase { List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomAddItem.getBomRowId(), 1); for (BomNewPbomParentVO oldArtChild : oldArtChildren) { //工艺包新增 - if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo()) || newBomChildren.contains(oldArtChild.getOriginalMaterialNo())) { + if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo())) { buildPBomAddChild(artParent, facCode, oldArtChild); - if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo())) { - delResult.add(oldArtChild.getOriginalMaterialNo()); - } + } + if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo()) && newBomChildrenMap.containsKey(oldArtChild.getOriginalMaterialNo())){ + newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()).setParentRowId(artParent.getRowId()); } } } From c003903a6113b4ecbecc1cf6f72bf17e5038a9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 10:31:41 +0800 Subject: [PATCH 19/27] =?UTF-8?q?=E7=94=9F=E6=88=90=E8=99=9A=E6=8B=9F?= =?UTF-8?q?=E5=8C=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/domain/EBom/VirtualPackageBase.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index acf41081..515845bb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -162,7 +162,9 @@ public abstract class VirtualPackageBase { } } List addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); - vMNos.putAll(SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM)); ; + if(CollUtil.isNotEmpty(addM)) { + vMNos.putAll(SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM)); + } } } From 77c84b12c6339e019909d843c1487fd776d90b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 11:15:44 +0800 Subject: [PATCH 20/27] =?UTF-8?q?1=E3=80=81pbom-=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=AA=8C=E8=AF=81=202=E3=80=81=E8=BD=ACpbom-?= =?UTF-8?q?=E7=9B=B4=E5=8F=91=E5=8C=85=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/BomNewPbomParentService.java | 14 +++++++------- .../EBom/topbomnew/FormalEBomToPbomBase.java | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index 884631b5..a64d0f4c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -525,13 +525,13 @@ public class BomNewPbomParentService extends ServiceImpl noDelList = childListVO.stream() - .filter(u -> !u.getMaterialCategoryCode().startsWith("1003") - && !u.getMaterialCategoryCode().startsWith("1020") - && !u.getMaterialCategoryCode().startsWith("1021") - && !u.getMaterialCategoryCode().equals(MaterialMainConstant.CATEGORYCODE_TECHNOLOGYPACKAGE)) - .collect(Collectors.toList()); - VUtils.isTure(CollUtil.isNotEmpty(noDelList)).throwMessage("非机加工件的子级只能删除辅助物料"); +// List noDelList = childListVO.stream() +// .filter(u -> !u.getMaterialCategoryCode().startsWith("1003") +// && !u.getMaterialCategoryCode().startsWith("1020") +// && !u.getMaterialCategoryCode().startsWith("1021") +// && !u.getMaterialCategoryCode().equals(MaterialMainConstant.CATEGORYCODE_TECHNOLOGYPACKAGE)) +// .collect(Collectors.toList()); +// VUtils.isTure(CollUtil.isNotEmpty(noDelList)).throwMessage("非机加工件的子级只能删除辅助物料"); pbomChildService.getBaseMapper().delByRowId(paramDTO.getRowIdList()); resetBomExist(parent.getRowId()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 4a9dd61a..38934c40 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -26,6 +26,7 @@ import lombok.Getter; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; public abstract class FormalEBomToPbomBase { @@ -245,14 +246,14 @@ public abstract class FormalEBomToPbomBase { //pBom 手工新增物料 List oldPBomAddChildren = oldChildren.stream().filter(u -> StrUtil.isBlank(u.getOriginalMaterialNo())).collect(Collectors.toList()); - Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, u -> u)); + Map newBomChildrenMap = newBomChildren.stream().collect(Collectors.toMap(BomNewEbomParentVO::getMaterialNo, Function.identity(),(u,u1) -> u)); for (BomNewPbomParentVO oldPBomAddItem : oldPBomAddChildren) { //加入当前BOM明细中 buildPBomAddChild(parent, facCode, oldPBomAddItem); //如为工艺包,且在当前BOM中不存在 - if (BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { + if (!VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { //创建工艺包版本 BomNewPbomParentEntity artParent = buildPBomParent(Convert.convert(BomNewEbomParentVO.class, oldPBomAddItem), facCode, parentList); //old 工艺包子级 From 2b4db51c1860ae86de8d387964a9d86c6602fd9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 11:22:41 +0800 Subject: [PATCH 21/27] =?UTF-8?q?1=E3=80=81pbom-=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=AA=8C=E8=AF=81=202=E3=80=81=E8=BD=ACpbom-?= =?UTF-8?q?=E7=9B=B4=E5=8F=91=E5=8C=85=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/EBom/topbomnew/FormalEBomToPbomBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 38934c40..34d0205d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -253,7 +253,7 @@ public abstract class FormalEBomToPbomBase { buildPBomAddChild(parent, facCode, oldPBomAddItem); //如为工艺包,且在当前BOM中不存在 - if (!VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { + if (!VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && !VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(oldPBomAddItem.getVirtualPartType()) && BomConstant.ART_PACKAGE_MATERIAL_CATEGORY_CODE.equals(oldPBomAddItem.getMaterialCategoryCode()) && !newBomChildrenMap.containsKey(oldPBomAddItem.getMaterialNo())) { //创建工艺包版本 BomNewPbomParentEntity artParent = buildPBomParent(Convert.convert(BomNewEbomParentVO.class, oldPBomAddItem), facCode, parentList); //old 工艺包子级 From 6d2abfa7a8a9c3b14c5ceeb5019c7f68da59b805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 15:36:06 +0800 Subject: [PATCH 22/27] =?UTF-8?q?=E8=BD=ACPBOM-=E8=99=9A=E6=8B=9F=E5=8C=85?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EBom/topbomnew/FormalEBomToPbomBase.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 34d0205d..833178bc 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -192,22 +192,22 @@ public abstract class FormalEBomToPbomBase { //pbom 处于工作表 else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) { //if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) { - if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { - if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { - SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); - oldParent.setSourceRowId(parentVo.getBomRowId()); - oldParent.setCreatedTime(LocalDateTime.now()); - oldParent.setCreatedBy(SessionUtil.getUserCode()); - oldParent.setDeptName(SessionUtil.getDepartName()); - oldParent.setDeptRowId(SessionUtil.getDepartRowId()); - this.pBomParentResult.add(oldParent); - return oldParent; - } - - } else { - // 降parentVo 及其子节点标记为不转换 - markNoConvert(parentVo, parentList); - } +// if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { +// if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { +// SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); +// oldParent.setSourceRowId(parentVo.getBomRowId()); +// oldParent.setCreatedTime(LocalDateTime.now()); +// oldParent.setCreatedBy(SessionUtil.getUserCode()); +// oldParent.setDeptName(SessionUtil.getDepartName()); +// oldParent.setDeptRowId(SessionUtil.getDepartRowId()); +// this.pBomParentResult.add(oldParent); +// return oldParent; +// } +// +// } else { +// // 降parentVo 及其子节点标记为不转换 +// markNoConvert(parentVo, parentList); +// } return null; } else { //pbom-处于正式表(全部生成小版本) @@ -264,7 +264,9 @@ public abstract class FormalEBomToPbomBase { buildPBomAddChild(artParent, facCode, oldArtChild); } if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo()) && newBomChildrenMap.containsKey(oldArtChild.getOriginalMaterialNo())){ - newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()).setParentRowId(artParent.getRowId()); + // newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()).setParentRowId(artParent.getRowId()); + buildPBomAddChild(artParent, facCode, Convert.convert(BomNewPbomParentVO.class,newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()) )); + delResult.add(oldArtChild.getOriginalMaterialNo()); } } } @@ -276,8 +278,9 @@ public abstract class FormalEBomToPbomBase { List upEnts = newBomChildren.stream().filter(u -> u.getMaterialNo().equals(oldPBomUpdateChild.getOriginalMaterialNo()) && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && u.getNum().equals(oldPBomUpdateChild.getOriginalNum())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(upEnts)) { - buildPBomAddChild(parent, facCode, oldPBomUpdateChild); - newBomChildren.remove(upEnts.get(0)); + upEnts.get(0).setMaterialNo(oldPBomUpdateChild.getMaterialNo()); + upEnts.get(0).setNum(oldPBomUpdateChild.getNum()); + upEnts.get(0).setProjectType(oldPBomUpdateChild.getProjectType()); } } } From 94e04540ac8e69231291ab1f2fe605cb6078b770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 10 Sep 2024 15:43:22 +0800 Subject: [PATCH 23/27] =?UTF-8?q?=E8=BD=ACPBOM-=E8=99=9A=E6=8B=9F=E5=8C=85?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EBom/topbomnew/FormalEBomToPbomBase.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index 833178bc..ae89d308 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -192,22 +192,22 @@ public abstract class FormalEBomToPbomBase { //pbom 处于工作表 else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) { //if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) { -// if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { -// if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { -// SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); -// oldParent.setSourceRowId(parentVo.getBomRowId()); -// oldParent.setCreatedTime(LocalDateTime.now()); -// oldParent.setCreatedBy(SessionUtil.getUserCode()); -// oldParent.setDeptName(SessionUtil.getDepartName()); -// oldParent.setDeptRowId(SessionUtil.getDepartRowId()); -// this.pBomParentResult.add(oldParent); -// return oldParent; -// } -// -// } else { -// // 降parentVo 及其子节点标记为不转换 -// markNoConvert(parentVo, parentList); -// } + if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { + if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { + SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); + oldParent.setSourceRowId(parentVo.getBomRowId()); + oldParent.setCreatedTime(LocalDateTime.now()); + oldParent.setCreatedBy(SessionUtil.getUserCode()); + oldParent.setDeptName(SessionUtil.getDepartName()); + oldParent.setDeptRowId(SessionUtil.getDepartRowId()); + this.pBomParentResult.add(oldParent); + return oldParent; + } + + } else { + // 降parentVo 及其子节点标记为不转换 + markNoConvert(parentVo, parentList); + } return null; } else { //pbom-处于正式表(全部生成小版本) From b95b3eff73753d5b584afddd314f357d7d8bf659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Thu, 12 Sep 2024 16:16:35 +0800 Subject: [PATCH 24/27] =?UTF-8?q?pBOM-=E7=BC=96=E8=BE=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=96=B0=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nflg/product/bomnew/service/BomNewPbomParentService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index a64d0f4c..3e3efbb4 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -433,6 +433,7 @@ public class BomNewPbomParentService extends ServiceImpl Date: Thu, 12 Sep 2024 17:27:39 +0800 Subject: [PATCH 25/27] =?UTF-8?q?ebom=E8=BD=ACPBOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/service/domain/EBom/EBomToPbomBase.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 7c779a9e..5adee1d8 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -258,11 +258,13 @@ public abstract class EBomToPbomBase { List oldArtChildren = SpringUtil.getBean(BomNewPbomParentService.class).getChild(oldPBomAddItem.getBomRowId(), 1); for (BomNewPbomParentVO oldArtChild : oldArtChildren) { //工艺包新增 - if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo()) || newBomChildren.contains(oldArtChild.getOriginalMaterialNo())) { + if (StrUtil.isBlank(oldArtChild.getOriginalMaterialNo())) { buildPBomAddChild(artParent, facCode, oldArtChild); - if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo())) { - delResult.add(oldArtChild.getOriginalMaterialNo()); - } + } + if(StrUtil.isNotBlank(oldArtChild.getOriginalMaterialNo()) && newBomChildrenMap.containsKey(oldArtChild.getOriginalMaterialNo())){ + // newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()).setParentRowId(artParent.getRowId()); + buildPBomAddChild(artParent, facCode, Convert.convert(BomNewPbomParentVO.class,newBomChildrenMap.get(oldArtChild.getOriginalMaterialNo()) )); + delResult.add(oldArtChild.getOriginalMaterialNo()); } } } From 802203f4d46487f74706bf402f4631ab69590482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Thu, 12 Sep 2024 18:14:51 +0800 Subject: [PATCH 26/27] =?UTF-8?q?ebom=E8=BD=ACPBOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/pojo/vo/BomNewPbomParentVO.java | 7 +++++++ .../bomnew/service/domain/EBom/EBomToPbomBase.java | 2 +- .../domain/EBom/topbomnew/FormalEBomToPbomBase.java | 2 +- .../java/com/nflg/product/bomnew/util/VUtils.java | 13 +++++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewPbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewPbomParentVO.java index d9497e22..86ada18f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewPbomParentVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewPbomParentVO.java @@ -83,6 +83,9 @@ public class BomNewPbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty(value = "数量") private BigDecimal num; + public BigDecimal getNum() { + return num==null?null:num.stripTrailingZeros(); + } /** * 是否跟节点 0-否 1-是 @@ -311,6 +314,10 @@ public class BomNewPbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty("原始数量") private BigDecimal originalNum; + public BigDecimal getOriginalNum() { + return originalNum==null?null:originalNum.stripTrailingZeros(); + } + @ApiModelProperty("原始项目类别") private String originalProjectType; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java index 5adee1d8..608f594a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPbomBase.java @@ -274,7 +274,7 @@ public abstract class EBomToPbomBase { for (BomNewPbomParentVO oldPBomUpdateChild : oldPBomUpdateChildren) { if (!oldPBomUpdateChild.getOriginalMaterialNo().equals(oldPBomUpdateChild.getMaterialNo()) || !oldPBomUpdateChild.getOriginalProjectType().equals(oldPBomUpdateChild.getProjectType()) || !oldPBomUpdateChild.getOriginalNum().equals(oldPBomUpdateChild.getNum())) { List upEnts = newBomChildren.stream().filter(u -> u.getMaterialNo().equals(oldPBomUpdateChild.getOriginalMaterialNo()) - && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && u.getNum().equals(oldPBomUpdateChild.getOriginalNum())).collect(Collectors.toList()); + && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && VUtils.compareSafely(u.getNum(), oldPBomUpdateChild.getOriginalNum())==0).collect(Collectors.toList()); if (CollUtil.isNotEmpty(upEnts)) { buildPBomAddChild(parent, facCode, oldPBomUpdateChild); newBomChildren.remove(upEnts.get(0)); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java index ae89d308..a4b1c27a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/topbomnew/FormalEBomToPbomBase.java @@ -276,7 +276,7 @@ public abstract class FormalEBomToPbomBase { for (BomNewPbomParentVO oldPBomUpdateChild : oldPBomUpdateChildren) { if (!oldPBomUpdateChild.getOriginalMaterialNo().equals(oldPBomUpdateChild.getMaterialNo()) || !oldPBomUpdateChild.getOriginalProjectType().equals(oldPBomUpdateChild.getProjectType()) || !oldPBomUpdateChild.getOriginalNum().equals(oldPBomUpdateChild.getNum())) { List upEnts = newBomChildren.stream().filter(u -> u.getMaterialNo().equals(oldPBomUpdateChild.getOriginalMaterialNo()) - && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && u.getNum().equals(oldPBomUpdateChild.getOriginalNum())).collect(Collectors.toList()); + && u.getProjectType().equals(oldPBomUpdateChild.getOriginalProjectType()) && VUtils.compareSafely(u.getNum(),oldPBomUpdateChild.getOriginalNum())==0).collect(Collectors.toList()); if (CollUtil.isNotEmpty(upEnts)) { upEnts.get(0).setMaterialNo(oldPBomUpdateChild.getMaterialNo()); upEnts.get(0).setNum(oldPBomUpdateChild.getNum()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java index 62f168f6..97ee6a53 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java @@ -7,6 +7,7 @@ import com.nflg.product.bomnew.inteface.ThrowExceptionFunction; import com.nflg.product.bomnew.inteface.TrueHandleFunction; import nflg.product.common.constant.STATE; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -89,4 +90,16 @@ public class VUtils { } return list; } + + public static int compareSafely(BigDecimal a, BigDecimal b) { + if (a == null && b == null) { + return 0; // 两个都是null,认为相等 + } else if (a == null) { + return -1; // 只有a是null,认为a更小 + } else if (b == null) { + return -1; // 只有b是null,认为b更小 + } else { + return a.compareTo(b); // 两个都不为null,直接比较 + } + } } From 969af823935717abeb8c1503a7888314f43d7f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 13 Sep 2024 10:16:02 +0800 Subject: [PATCH 27/27] =?UTF-8?q?ebom=E8=BD=ACPBOM=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98-=E7=89=88=E6=9C=AC=E5=8F=B7=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/util/VersionUtil.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java index f79fad4a..cf8731f3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java @@ -5,7 +5,9 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import org.springframework.data.util.Version; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import static org.apache.naming.SelectorContext.prefix; @@ -59,6 +61,7 @@ public class VersionUtil { // Split the previous version number into its components String[] previousComponents = previousVersion.replace(versionPrefix, "").split("\\."); + previousComponents= filterNumericStrings(previousComponents).toArray(new String[0]); int previousMajor = Integer.parseInt(previousComponents[0]); int previousMinor = previousComponents.length < 2 ? 0 : Integer.parseInt(previousComponents[1]); @@ -86,6 +89,43 @@ public class VersionUtil { return nextVersion; } + /** + * 过滤出数组中仅包含数字的字符串。 + * + * @param array 输入的字符串数组 + * @return 包含数字字符串的列表 + */ + public static List filterNumericStrings(String[] array) { + List result = new ArrayList<>(); + for (String s : array) { + if (isNumeric(s)) { + result.add(s); + } + } + return result; + } + + /** + * 检查给定的字符串是否表示一个数字。 + * 支持整数、浮点数和科学计数法表示的数字。 + * + * @param str 要检查的字符串 + * @return 如果字符串表示一个数字,则返回true;否则返回false + */ + private static boolean isNumeric(String str) { + if (str == null || str.isEmpty()) { + return false; + } + try { + // 尝试将字符串转换为Double类型 + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + // 如果转换失败,说明不是有效的数字格式 + return false; + } + } + /** * 版本比较 * @param version1