From f78c40a795985d31725b203b71007260aef9b611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Sat, 29 Jun 2024 09:54:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81=E5=8F=98=E6=9B=B4=E5=BD=B1?= =?UTF-8?q?=E5=93=8D=E5=8F=8A=E5=90=8C=E6=AD=A5formal=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewEbomParentService.java | 36 ++++------- .../service/BomNewPbomParentService.java | 16 +++-- .../domain/EBom/EBomToPBomForFormal.java | 2 +- .../domain/EBom/EBomToPBomForFormal31.java | 3 +- .../service/domain/EBom/EBomToPbomBase.java | 61 +++++++++++++------ 5 files changed, 62 insertions(+), 56 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 6f252740..ae0acecc 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 @@ -16,7 +16,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; import com.mzt.logapi.context.LogRecordContext; import com.nflg.product.base.core.conmon.util.SessionUtil; @@ -943,11 +942,11 @@ public class BomNewEbomParentService extends ServiceImpl bomRowIds = bomTree.stream().filter(u ->!EBomStatusEnum.PUBLISHED.equalsValue(u.getStatus()) && u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(bomRowIds)) { - this.getBaseMapper().updateStateBatchByRowIds(EBomStatusEnum.PUBLISHED.getValue(), bomRowIds); + //List bomRowIds = bomTree.stream().filter(u ->!EBomStatusEnum.PUBLISHED.equalsValue(u.getStatus()) && u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(eBomToPBom.getAddEBomNew())) { + this.getBaseMapper().updateStateBatchByRowIds(EBomStatusEnum.PUBLISHED.getValue(), eBomToPBom.getAddEBomNew()); //将历史已发布版-转移到正式历史表 - eBomToFormal(bomRowIds, bomTree.stream().filter(u ->!u.getHasChangeState().equals(1) && !EBomStatusEnum.PUBLISHED.equalsValue(u.getStatus()) && u.getBomRowId() > 0).collect(Collectors.toList()) ); + eBomToFormal(eBomToPBom.getAddEBomNew(), eBomToPBom.getDelOldEBom() ); } //替换需覆盖的受影响的虚拟包 if(CollUtil.isNotEmpty(eBomToPBom.getUpgradeChangeResultForCover())){ @@ -2522,31 +2521,18 @@ public class BomNewEbomParentService extends ServiceImpl exceptRowIds, List parents){ + private void eBomToFormal(List addRowIds, List delRowIds){ - List materialNos = parents.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); - if(CollUtil.isEmpty(materialNos)){ - return; - } - List toParents = this.lambdaQuery().eq(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).notIn(BomNewEbomParentEntity::getRowId, exceptRowIds) - .in(BomNewEbomParentEntity::getMaterialNo, materialNos).select(BomNewEbomParentEntity::getRowId).list(); - if(CollUtil.isNotEmpty(toParents)) { - - List childParentRowIds = toParents.stream().map(u -> u.getRowId()).collect(Collectors.toList()); - List toFormalRowIds = new ArrayList<>(); - toFormalRowIds.addAll(exceptRowIds); - toFormalRowIds.addAll(childParentRowIds); - this.getBaseMapper().insertEBomFormalParent(toFormalRowIds); - this.getBaseMapper().insertEBomFormalChild(toFormalRowIds); + if(CollUtil.isNotEmpty(addRowIds)) { + this.getBaseMapper().insertEBomFormalParent(addRowIds); + this.getBaseMapper().insertEBomFormalChild(addRowIds); //转移后删除 - this.getBaseMapper().delEBomHistory(childParentRowIds); + this.getBaseMapper().delEBomHistory(delRowIds); - } else { - this.getBaseMapper().insertEBomFormalParent(exceptRowIds); - this.getBaseMapper().insertEBomFormalChild(exceptRowIds); } } } 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 9446af30..4dbdc181 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 @@ -1204,20 +1204,18 @@ public class BomNewPbomParentService extends ServiceImpl toParents = this.lambdaQuery() .ge(BomNewPbomParentEntity::getStatus, PBomStatusEnum.PUBLISH.getValue()) .notIn(BomNewPbomParentEntity::getRowId, exceptRowIds) - .in(BomNewPbomParentEntity::getMaterialNo, parentMaterialNos).select(BomNewPbomParentEntity::getRowId) - .eq(BomNewPbomParentEntity::getFacCode,facCode) + .in(BomNewPbomParentEntity::getMaterialNo, parentMaterialNos) + .eq(BomNewPbomParentEntity::getFacCode,facCode).select(BomNewPbomParentEntity::getRowId) .list(); - if(CollUtil.isNotEmpty(toParents)) { - - List oldPBomRowIds = toParents.stream().map(u -> u.getRowId()).collect(Collectors.toList()); - List toFormalPBomRowIds = new ArrayList<>(); - + if(CollUtil.isNotEmpty(exceptRowIds)) { this.getBaseMapper().insertPBomParentToFormal(exceptRowIds); this.getBaseMapper().insertPBomChildToFormal(exceptRowIds); - + } + //需删除的 + if(CollUtil.isNotEmpty(toParents)) { + List oldPBomRowIds = toParents.stream().map(u -> u.getRowId()).collect(Collectors.toList()); //转移后删除 this.getBaseMapper().delPBom(oldPBomRowIds); - } } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java index 799027b9..de3d1d0f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nflg.product.bomnew.constant.ConvertToPBomModelEnum; -import com.nflg.product.bomnew.constant.PBomStatusEnum; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; @@ -46,6 +45,7 @@ public class EBomToPBomForFormal extends EBomToPbomBase { //效验数据是否OK check(); +// changeImpact(); //bom 提层 liftingLayer(); List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java index f35586db..dc30cd96 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBomForFormal31.java @@ -2,7 +2,6 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -14,7 +13,6 @@ import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.util.ListCommonUtil; import lombok.NoArgsConstructor; -import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -88,6 +86,7 @@ public class EBomToPBomForFormal31 extends EBomToPbomBase { //效验数据是否OK check(); +// changeImpact(); //bom 提层 liftingLayer(); // result.forEach(u->u.setLevelNo("")); 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 37f90847..bba8c0b3 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,11 +2,9 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -19,16 +17,15 @@ import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; import com.nflg.product.bomnew.service.*; -import com.nflg.product.bomnew.util.*; +import com.nflg.product.bomnew.util.VUtils; +import com.nflg.product.bomnew.util.VersionUtil; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; -import javax.validation.constraints.NotBlank; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; public abstract class EBomToPbomBase { @@ -65,6 +62,14 @@ public abstract class EBomToPbomBase { @Getter protected List upgradeChangeResultForCover=new ArrayList<>(); + //生成新版正式表后,需删除的旧版Ebom + @Getter + private List delOldEBom=new ArrayList<>(); + + //新生成正式的EBOM版本 + @Getter + private List addEBomNew=new ArrayList<>(); + @Getter // protected List upgradeChangeDetailResult = new ArrayList<>(); @@ -353,10 +358,18 @@ public abstract class EBomToPbomBase { */ private void buildVirtualPackageComposition(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) { + String facCode=lastVirtualPackage.getMaterialName().contains(EBomConstant.XIAN_TAO_FACTORY_Name_1020) ? "1020" : "1010"; + List voParent = allBomDetail.stream().filter(u -> u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList()); + String key=StrUtil.join("", lastVirtualPackage.getMaterialNo(),voParent.get(0).getMaterialNo(),vo.getMaterialNo(),facCode); + List hasExists = virtualPackageCompositionResult.stream().filter(u -> u.getVirtualPackageMaterialNo().equals(lastVirtualPackage.getMaterialNo()) + && u.getParentMaterialNo().equals(voParent.get(0).getMaterialNo()) && u.getChildMaterialNo().equals(vo.getMaterialNo()) && u.getFacCode().equals(facCode)).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(hasExists)){ + return; + } BomNewEbomVirtualPackageCompositionEntity packageCompositionEntity = new BomNewEbomVirtualPackageCompositionEntity(); packageCompositionEntity.setRowId(IdWorker.getId()); packageCompositionEntity.setVirtualPackageMaterialNo(lastVirtualPackage.getMaterialNo()); - List voParent = allBomDetail.stream().filter(u -> u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList()); + packageCompositionEntity.setParentMaterialNo(voParent.get(0).getMaterialNo()); packageCompositionEntity.setChildMaterialNo(vo.getMaterialNo()); packageCompositionEntity.setNum(vo.getNum()); @@ -367,7 +380,7 @@ public abstract class EBomToPbomBase { packageCompositionEntity.setDeviseName(lastVirtualPackage.getDeviseName()); packageCompositionEntity.setDeptName(lastVirtualPackage.getDeptName()); packageCompositionEntity.setFromLiftingLayerState(0); - packageCompositionEntity.setFacCode(lastVirtualPackage.getMaterialName().contains(EBomConstant.XIAN_TAO_FACTORY_Name_1020) ? "1020" : "1010"); + packageCompositionEntity.setFacCode(facCode); if (!lastVirtualPackage.getBomRowId().equals(vo.getParentRowId())) { packageCompositionEntity.setFromLiftingLayerState(1); } @@ -405,9 +418,9 @@ public abstract class EBomToPbomBase { private Boolean compareVirtualPackage(BomNewEbomParentVO vo) { Boolean result = false; - if (EBomStatusEnum.PUBLISHED.equalsValue(vo.getStatus())) { - return result; - } +// if (EBomStatusEnum.PUBLISHED.equalsValue(vo.getStatus())) { +// return result; +// } List impactVm = virtualPackageCompositionService.lambdaQuery() .eq(BomNewEbomVirtualPackageCompositionEntity::getParentMaterialNo, vo.getMaterialNo()) .eq(BomNewEbomVirtualPackageCompositionEntity::getFromLiftingLayerState, 1).list(); @@ -696,21 +709,31 @@ public abstract class EBomToPbomBase { } else if (isSameEBomV2FormMaterialNoAndNum(oldParentChild, newParentChild)) { parentBom.setCurrentVersion(VersionUtil.getNextVersionForSmallVersion(oldEBom.getCurrentVersion())); parentBom.setHasChangeState(2); + delOldEBom.add(oldEBom.getRowId()); + addEBomNew.add(parentBom.getRowId()); } else { parentBom.setCurrentVersion(VersionUtil.getNextVersion(oldEBom.getCurrentVersion())); parentBom.setHasChangeState(2); + delOldEBom.add(oldEBom.getRowId()); + addEBomNew.add(parentBom.getRowId()); + } + + } + else { + addEBomNew.add(parentBom.getRowId()); + } + + //如子级都为F 项父级也不转 + Set projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(projectSet)) { + if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && + (ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) { + parentBom.setNoConvertToPBomIs(1); + childDelMaterialNos.add(parentBom.getMaterialNo()); } } } - //如子级都为F 项父级也不转 - Set projectSet = newParentChild.stream().map(u -> u.getProjectType().toUpperCase()).collect(Collectors.toSet()); - if (CollUtil.isNotEmpty(projectSet)) { - if (!VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && !VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey().equals(parentBom.getVirtualPartType()) && - (ImmutableSet.of("F").equals(projectSet) || ImmutableSet.of("F", "Z").equals(projectSet) || ImmutableSet.of("Z").equals(projectSet))) { - parentBom.setNoConvertToPBomIs(1); - childDelMaterialNos.add(parentBom.getMaterialNo()); - } - } + } } From cce1aef1d7b1739dd4efadb09907fc150aa390c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Sat, 29 Jun 2024 09:57:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1=E3=80=81=E5=8F=98=E6=9B=B4=E5=BD=B1?= =?UTF-8?q?=E5=93=8D=E5=8F=8A=E5=90=8C=E6=AD=A5formal=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/master/BomNewEbomParentMapper.xml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml index 58cefdc8..74053e6e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml @@ -528,12 +528,12 @@ a.`expire_end_time`, a.`convert_to_ebom_time`, a.`remark`, a.`dept_name`,a.`dept_row_id`, a.`level_num`, a.`change_desc`, a.`notice_nums`, a.`modify_time`, a.`sap_state`, a.`sap_time` from t_bom_new_ebom_parent a - left join t_bom_new_ebom_parent_formal b on a.row_id = b.row_id + where a.row_id in #{item} - and b.row_id is null + @@ -543,11 +543,7 @@ where parent_row_id in #{parentRowId} - and parent_row_id not in( - select row_id from t_bom_new_ebom_parent_formal where row_id in - - #{item} - + )