From 5c0032ded1db9805b5172942603e8b9b0dfa95e6 Mon Sep 17 00:00:00 2001 From: luolm <470431449@qq.com> Date: Mon, 14 Oct 2024 22:44:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=9B=B8=E5=90=8C=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=8F=90=E5=B1=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/bomnew/pojo/vo/BomNewEbomParentVO.java | 2 ++ .../nflg/product/bomnew/service/SapService.java | 5 ++++- .../bomnew/service/domain/EBom/EBomToPbomBase.java | 12 ++++++++---- .../EBom/topbomnew/FormalEBomToPbomBase.java | 14 +++++++++----- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java index 9cd552de..3f522c9d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java @@ -358,6 +358,8 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty("父级物料RowId") private List parentRowIds=new ArrayList<>(); + @ApiModelProperty("父级物料Id") + private List parenIds=new ArrayList<>(); @ApiModelProperty("因子级都为F or Z 项而不转") private Integer notToPBomForFZ=0; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java index 1ffb0461..ff2269ae 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java @@ -330,6 +330,9 @@ public class SapService implements ApplicationContextAware { params.setInputTables(inputTables); SapResult sapResult = doSapFun(params); Map>> outTablesMap = sapResult.getOutTablesMap(); - return outTablesMap.get("OUTPUT"); + if(Objects.nonNull(outTablesMap)) { + return outTablesMap.get("OUTPUT"); + } + return Collections.emptyList(); } } 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 6204683e..28e9a32e 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 @@ -375,7 +375,7 @@ public abstract class EBomToPbomBase { */ protected void liftingLayer() { result.add(parent); - liftingLayerDo(parent, null, null, ImmutableList.of()); + liftingLayerDo(parent, null, null, ImmutableList.of() ,ImmutableList.of()); } private List hasCupmVo = new ArrayList<>(); @@ -385,7 +385,7 @@ public abstract class EBomToPbomBase { * @param directDeliveryVo 直发包 * @param preAssemblyVo 发货前装配包 */ - public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List parentRowIds) { + public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List parentRowIds,List rowIds) { List firstLevelBoms = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentVO.getBomRowId())).sorted(Comparator.comparing(BomNewEbomParentVO::getVirtualPartType).reversed()).collect(Collectors.toList()); for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) { @@ -395,6 +395,8 @@ public abstract class EBomToPbomBase { //直发包 firstLevelBom.getParentRowIds().add(firstLevelBom.getParentRowId()); firstLevelBom.getParentRowIds().addAll(parentRowIds); + firstLevelBom.getParenIds().add(parentVO.getRowId()); + firstLevelBom.getParenIds().addAll(rowIds); List directDeliveryVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(directDeliveryVoList)) { directDeliveryVo = directDeliveryVoList.get(0); @@ -413,6 +415,7 @@ public abstract class EBomToPbomBase { } else if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(firstLevelBom.getProjectType())) { if (Objects.nonNull(directDeliveryVo)) { BomNewEbomParentVO newEnt = liftingLayerSummary(directDeliveryVo, firstLevelBom); + firstLevelBom.getParenIds().clear(); newEnt.setRowId(IdWorker.getId()); newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId())); newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo()); @@ -422,6 +425,7 @@ public abstract class EBomToPbomBase { } else if (firstLevelBom.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { if (Objects.nonNull(preAssemblyVo)) { BomNewEbomParentVO newEnt = liftingLayerSummary(preAssemblyVo, firstLevelBom); + firstLevelBom.getParenIds().clear(); newEnt.setRowId(IdWorker.getId()); newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId())); newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo()); @@ -433,7 +437,7 @@ public abstract class EBomToPbomBase { } hasCupmVo.add(firstLevelBom.getRowId()); if (firstLevelBom.getBomRowId() > 0) { - liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds()); + liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds() ,firstLevelBom.getParenIds()); } } } @@ -702,7 +706,7 @@ public abstract class EBomToPbomBase { } private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) { - List parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList()); + List parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId()) && vo.getParenIds().contains(u.getRowId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(parents)) { return parents.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 7d25b4b9..da85a4af 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 @@ -355,7 +355,7 @@ public abstract class FormalEBomToPbomBase { */ protected void liftingLayer() { result.add(parent); - liftingLayerDo(parent, null, null, ImmutableList.of()); + liftingLayerDo(parent, null, null, ImmutableList.of() ,ImmutableList.of()); } private List hasCupmVo = new ArrayList<>(); @@ -365,7 +365,7 @@ public abstract class FormalEBomToPbomBase { * @param directDeliveryVo 直发包 * @param preAssemblyVo 发货前装配包 */ - public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List parentRowIds) { + public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List parentRowIds ,List rowIds) { List firstLevelBoms = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentVO.getBomRowId())).sorted(Comparator.comparing(BomNewEbomParentVO::getVirtualPartType).reversed()).collect(Collectors.toList()); for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) { @@ -375,6 +375,8 @@ public abstract class FormalEBomToPbomBase { //直发包 firstLevelBom.getParentRowIds().add(firstLevelBom.getParentRowId()); firstLevelBom.getParentRowIds().addAll(parentRowIds); + firstLevelBom.getParenIds().add(parentVO.getRowId()); + firstLevelBom.getParenIds().addAll(rowIds); List directDeliveryVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(directDeliveryVoList)) { directDeliveryVo = directDeliveryVoList.get(0); @@ -393,6 +395,7 @@ public abstract class FormalEBomToPbomBase { } else if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(firstLevelBom.getProjectType())) { if (Objects.nonNull(directDeliveryVo)) { BomNewEbomParentVO newEnt = liftingLayerSummary(directDeliveryVo, firstLevelBom); + firstLevelBom.getParenIds().clear(); newEnt.setRowId(IdWorker.getId()); newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId())); newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo()); @@ -402,6 +405,7 @@ public abstract class FormalEBomToPbomBase { } else if (firstLevelBom.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { if (Objects.nonNull(preAssemblyVo)) { BomNewEbomParentVO newEnt = liftingLayerSummary(preAssemblyVo, firstLevelBom); + firstLevelBom.getParenIds().clear(); newEnt.setRowId(IdWorker.getId()); newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId())); newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo()); @@ -413,7 +417,7 @@ public abstract class FormalEBomToPbomBase { } hasCupmVo.add(firstLevelBom.getRowId()); if (firstLevelBom.getBomRowId() > 0) { - liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds()); + liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds(),firstLevelBom.getParenIds()); } } } @@ -450,7 +454,7 @@ public abstract class FormalEBomToPbomBase { } - + @Deprecated protected List getAllParent(BomNewEbomParentVO vo) { List result = new ArrayList<>(); BomNewEbomParentVO parentEnt = getParent(vo); @@ -682,7 +686,7 @@ public abstract class FormalEBomToPbomBase { } private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) { - List parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList()); + List parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId()) && vo.getParenIds().contains(u.getRowId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(parents)) { return parents.get(0); } From 7bb2bce81da1ff8bf0f685cafdde9e60251d45c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 15 Oct 2024 15:48:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?EBOM-=E8=BD=ACPBOM=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E7=9B=B4=E5=8F=91=E5=8C=85=EF=BC=8C=E5=8F=91=E8=B4=A7=E5=89=8D?= =?UTF-8?q?=E5=8C=85-=E7=9B=B4=E6=8E=A5=E8=A6=86=E7=9B=96=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E8=A1=A8=E7=9A=84PBOM?= 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 28e9a32e..215fb54f 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 @@ -191,7 +191,7 @@ public abstract class EBomToPbomBase { //if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) { if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) { //当bom创建人为本人 或 版本大于当前版本则覆盖 - if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0){ + if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || 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()); 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 da85a4af..3f14568b 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 @@ -193,7 +193,7 @@ 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())) { - if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) { + if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || 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());