From b7506360c97735861ca94a1060fe53fe6cfb0518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Tue, 14 May 2024 16:47:54 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81T=E9=A1=B9=E6=A3=80=E6=9F=A5=202?= =?UTF-8?q?=E3=80=81T=E9=A1=B9=E8=BD=ACPbom=E9=80=BB=E8=BE=91=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/EbomApi.java | 36 ------ .../product/bomnew/constant/EBomConstant.java | 3 + .../constant/EBomExceptionStatusEnum.java | 4 +- .../pojo/entity/BomNewEbomChildEntity.java | 20 +-- .../bomnew/pojo/vo/BomNewPbomParentVO.java | 8 ++ .../domain/EBom/CheckEBomException.java | 3 + .../service/domain/EBom/EBomToPBom.java | 115 +++++++++++++----- .../domain/OriginalBom/BaseConvert.java | 15 ++- 8 files changed, 122 insertions(+), 82 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index 5fbb0feb..79ecbae0 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -418,42 +418,6 @@ public class EbomApi extends BaseApi { return ResultVO.success(true); } - -// @GetMapping("getrel") -// @ApiOperation("模糊匹配物料") -// public ResultVO getRelMaterial(@RequestParam(value = "materialName", required = false) String materialName ,@RequestParam(value = "materialTexture" ,required = false) String materialTexture ){ -// MaterialMateCache mateCache = new MaterialMateCache(); -// MaterialMateVO materialMate = mateCache.findMaterialByNameOrmaterialTexture(materialName,materialTexture); -// return ResultVO.success(materialMate) ; -// } - - - @LogRecord(success = "luo下了一个订单,购买商品「{{#bom.currentVersion}}}」,测试变量「dsfsdf」,下单结果:{{#_ret}}", - bizNo = "sfsfsa", type = "dsfdsf") - @PostMapping("log") - @ApiOperation("测试日志") - public boolean createOrder() { - bomNewEbomParentService.createOrder(); - return true; - } - - - @GetMapping("loginDebug") - @ApiOperation("模拟登录") - public ResultVO loginDebug() { - - LoginUserInfoDTO dto = new LoginUserInfoDTO(); - dto.setUserCode("QHI17062100"); - dto.setUserName("郑军榕"); - dto.setRealName("郑军榕"); - dto.setDepartName("信息流程中心/IT支持"); - dto.setFullDeptName("信息流程中心/IT支持"); - dto.setRowId(1585164668335439881L); - BaseApi.loginUser.set(dto); - - return ResultVO.success(); - } - /** * 导入到SAP * @param rootBomRowIds 顶级bom的rowId 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 3a28f62f..7f4bd581 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 @@ -29,6 +29,9 @@ public class EBomConstant { public static final String XIAN_TAO_FACTORY_Name_1020="仙桃"; + public static final String PROJECT_TYPE_T="T"; + + @AllArgsConstructor @Getter public enum EBomExcelImportEnum implements ValueEnum { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java index afe29dc7..4b4191c3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/EBomExceptionStatusEnum.java @@ -45,7 +45,9 @@ public enum EBomExceptionStatusEnum implements ValueEnum { EXCEPT_NO_13(13, "项目类型需要用户确认") , EXCEPT_NO_14(14, "黄色警告(下级节点存在异常)"), EXCEPT_NO_15(15, "物料名称不一致"), - EXCEPT_NO_16(16, "物料单位不一致"); + EXCEPT_NO_16(16, "物料单位不一致"), + + EXCEPT_NO_17(17, "T项物料描述为空"); private final Integer value; private final String description; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java index 0cf6e179..57b253cd 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomChildEntity.java @@ -1,19 +1,18 @@ package com.nflg.product.bomnew.pojo.entity; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import com.baomidou.mybatisplus.annotation.*; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; - import lombok.Data; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalDate; /** * t_bom_new_ebom_child @@ -227,8 +226,11 @@ public class BomNewEbomChildEntity implements Serializable { private String materialOriginalUnit; + private String materialNoAndProjectType; - + public String getMaterialNoAndProjectType() { + return StrUtil.join(materialNo,projectType); + } private static final long serialVersionUID = -14147430944632372L; 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 147bb8d0..ed7fd4f7 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 @@ -1,5 +1,6 @@ package com.nflg.product.bomnew.pojo.vo; +import cn.hutool.core.util.StrUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -279,5 +280,12 @@ public class BomNewPbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty("所有父级的rowId") private Set allParentRowIds = new HashSet<>(); + + private String materialNoAndProjectType; + + public String getMaterialNoAndProjectType() { + return StrUtil.join(getMaterialNo(),getProjectType()); + } + private static final long serialVersionUID = 1L; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java index a9c2bd56..a8286847 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java @@ -140,6 +140,9 @@ public class CheckEBomException { else if (!StrUtil.equals(vo.getMaterialUnit(), vo.getMaterialOriginalUnit()) && StrUtil.isBlank(vo.getExceptionTag())){ vo.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_16.getValue()); } + else if (EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(vo.getProjectType()) && StrUtil.isBlank(vo.getMaterialDesc())){ + vo.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_17.getValue()); + } } checkOther(); 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 147e5c55..cb9f3b43 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 @@ -12,6 +12,7 @@ import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.pojo.entity.*; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; import com.nflg.product.bomnew.service.BomNewEbomVirtualPackageCompositionService; import com.nflg.product.bomnew.service.BomNewPbomChildService; import com.nflg.product.bomnew.service.BomNewPbomParentService; @@ -57,7 +58,7 @@ public class EBomToPBom { private List upgradeChangeResult = new ArrayList<>(); @Getter - private List upgradeChangeDetailResult=new ArrayList<>(); + private List upgradeChangeDetailResult = new ArrayList<>(); private Set hasBuildVNo = Sets.newHashSet(); @@ -79,27 +80,32 @@ public class EBomToPBom { check(); //bom 提层 liftingLayer(); - List parentList = ListCommonUtil.toDistinct( result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()),BomNewEbomParentVO::getBomRowId); - List hasConvert=new ArrayList<>(); + List parentList = ListCommonUtil.toDistinct(result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()), BomNewEbomParentVO::getBomRowId); + List hasConvert = new ArrayList<>(); for (String facCode : facCodes) { //buildPBomParent(parent, facCode); for (BomNewEbomParentVO vo : parentList) { - String hasConvertKey=StrUtil.join("-",facCode,vo.getBomRowId()); - if(hasConvert.contains(hasConvertKey) || PBomStatusEnum.PUBLISH.equalsValue(vo.getStatus()) ){ + String hasConvertKey = StrUtil.join("-", facCode, vo.getBomRowId()); + if (hasConvert.contains(hasConvertKey) || PBomStatusEnum.PUBLISH.equalsValue(vo.getStatus())) { continue; } hasConvert.add(hasConvertKey); //构建变更明细 - buildUpgradeChangeDetail(vo,VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); - buildUpgradeChangeDetail(vo,VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + buildUpgradeChangeDetail(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + + //子级 + List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).distinct().collect(Collectors.toList()); + List mergeChild = mergeChild(child); + if( compareContentIsSame(vo, mergeChild, facCode)){ + continue; + } BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode); //子级 - List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).distinct().collect(Collectors.toList()); if (CollUtil.isNotEmpty(child)) { //合并子级 - List mergeChild = mergeChild(child); for (BomNewEbomParentVO eb : mergeChild) { BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); BeanUtil.copyProperties(eb, childEnt); @@ -115,14 +121,63 @@ public class EBomToPBom { } } } - //合并子级 - public List mergeChild (List child){ - List result=child.stream().filter(u->StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); + /** + * BOM 明细对比,如只有T项变化则,不升级直接修改 + */ + private Boolean compareContentIsSame(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 (oldParent != null) { + List oldBomDetail = SpringUtil.getBean(BomNewPbomParentService.class).getBaseMapper().getParentChild(oldParent.getRowId()); + //旧bom除T项之外 + 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()); + if(oldBomNoTChildren.size()!= newBomNoTChildren.size()) { + return false; + } + //除T项外的对比 + Map oldBomMap = oldBomNoTChildren.stream().collect(Collectors.toMap(BomNewPbomParentVO::getMaterialNoAndProjectType, u -> u, (k1, k2) -> k1)); + for (BomNewEbomParentVO newVo : newBomNoTChildren) { + if(!oldBomMap.containsKey(newVo.getMaterialNoAndProductType()) || !Objects.equals(newVo.getNum(),oldBomMap.get(newVo.getMaterialNoAndProductType()).getNum())){ + return false; + } + } + //当T项外都一致时,直接更新T项 + List bomDetailForT = oldBomDetail.stream().filter(u -> EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProcureType())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(bomDetailForT)){ + List bomRowIdsForT = bomDetailForT.stream().map(u -> u.getRowId()).collect(Collectors.toList()); + SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteBatchIds(bomRowIdsForT); + } + List newBomT = newChildren.stream().filter(u -> EBomConstant.PROJECT_TYPE_T.equalsIgnoreCase(u.getProcureType())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(newBomT)) { + for (BomNewEbomParentVO netT : newBomT) { + BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); + BeanUtil.copyProperties(netT, childEnt); + childEnt.setRowId(IdWorker.getId()); + childEnt.setParentRowId(oldParent.getRowId()); + childEnt.setFacCode(facCode); + childEnt.setIdentityNo(StrUtil.join("-", oldParent.getMaterialNo(), netT.getMaterialNo())); + this.pBomChildResult.add(childEnt); + } + } + return true; + } + return false; + + + } + + //合并子级 + public List mergeChild(List child) { + + List result = child.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); Map> listMp = ListCommonUtil.listGroupMap(child, BomNewEbomParentVO::getMaterialNo); - for ( String key: listMp.keySet()) { + for (String key : listMp.keySet()) { List voList = listMp.get(key); BomNewEbomParentVO ent = voList.get(0); ent.setNum(voList.stream().map(aa -> aa.getNum()).reduce(BigDecimal.ZERO, BigDecimal::add)); @@ -156,7 +211,7 @@ public class EBomToPBom { .eq(BomNewPbomParentEntity::getMaterialNo, parentVo.getMaterialNo()) .eq(BomNewPbomParentEntity::getFacCode, facCode).last(" order by current_version desc limit 1").one(); - // this.hasConvertEBomRowIds.add(parentVo.getRowId()); + // this.hasConvertEBomRowIds.add(parentVo.getRowId()); if (Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus())) { SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); oldParent.setCurrentVersion(parentVo.getCurrentVersion()); @@ -176,8 +231,8 @@ public class EBomToPBom { //版本=EBom版本 pBomParent.setCurrentVersion(parentVo.getCurrentVersion()); pBomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue()); - if(Objects.nonNull(oldParent)){ - // pBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); + if (Objects.nonNull(oldParent)) { + // pBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion())); oldParent.setExpireEndTime(LocalDateTime.now()); oldParent.setLastVersionIs(0); } @@ -196,7 +251,7 @@ public class EBomToPBom { */ private void liftingLayer() { for (BomNewEbomParentVO vo : allBomDetail) { - if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) { + if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { liftingLayerSummary(lastVirtualPackage, vo); @@ -211,7 +266,7 @@ public class EBomToPBom { // } continue; } - if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { + if (StrUtil.isNotBlank(vo.getProjectType()) && vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { liftingLayerSummary(lastVirtualPackage, vo); @@ -230,14 +285,14 @@ public class EBomToPBom { } //变更记录(明细) - private void buildUpgradeChangeDetail(BomNewEbomParentVO parent,VirtualPackageTypeEnum packageTypeEnum) { + private void buildUpgradeChangeDetail(BomNewEbomParentVO parent, VirtualPackageTypeEnum packageTypeEnum) { List list = SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class).lambdaQuery() .eq(BomNewEbomVirtualPackageCompositionEntity::getParentMaterialNo, parent.getMaterialNo()) .eq(BomNewEbomVirtualPackageCompositionEntity::getProjectType, packageTypeEnum.getProductTypeKey()).list(); if (CollUtil.isNotEmpty(list)) { //老的虚拟包组成 - Set oldMaterialNoAndNumSet = list.stream().filter(u-> u.getParentMaterialNo().equals(parent.getMaterialNo())).map(u->StrUtil.join("-", u.getChildMaterialNo(),u.getNum())).collect(Collectors.toSet()); + Set oldMaterialNoAndNumSet = list.stream().filter(u -> u.getParentMaterialNo().equals(parent.getMaterialNo())).map(u -> StrUtil.join("-", u.getChildMaterialNo(), u.getNum())).collect(Collectors.toSet()); List parentChildren = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parent.getBomRowId())).collect(Collectors.toList()); //物料编码 +数量 @@ -247,7 +302,7 @@ public class EBomToPBom { List vmaterialNoList = list.stream().map(u -> u.getVirtualPackageMaterialNo()).distinct().collect(Collectors.toList()); //记录变更明细行 - buildChangeDetailD0(vmaterialNoList,parent, parentChildren); + buildChangeDetailD0(vmaterialNoList, parent, parentChildren); //变更 buildUpgradeChange(list, parent); } @@ -255,10 +310,10 @@ public class EBomToPBom { } - private void buildChangeDetailD0( List vmaterialNoList, BomNewEbomParentVO parent, List parentChildren){ + private void buildChangeDetailD0(List vmaterialNoList, BomNewEbomParentVO parent, List parentChildren) { for (BomNewEbomParentVO vo : parentChildren) { - for (String vNo:vmaterialNoList) { - BomNewEbomUpdateDetailEntity changeDetailEnt=new BomNewEbomUpdateDetailEntity(); + for (String vNo : vmaterialNoList) { + BomNewEbomUpdateDetailEntity changeDetailEnt = new BomNewEbomUpdateDetailEntity(); changeDetailEnt.setRowId(IdWorker.getId()); changeDetailEnt.setVirtualPackageMaterialNo(vNo); changeDetailEnt.setParentMaterialNo(parent.getMaterialNo()); @@ -276,13 +331,11 @@ public class EBomToPBom { } - private void buildUpgradeChange(List changeList, BomNewEbomParentVO parent) { List vmaterialNoList = changeList.stream().map(u -> u.getVirtualPackageMaterialNo()).distinct().collect(Collectors.toList()); for (String vmaterialNo : vmaterialNoList) { String key = StrUtil.join("-", vmaterialNo, parent.getMaterialNo()); - if(hasBuildVNo.contains(key)) - { + if (hasBuildVNo.contains(key)) { continue; } BomNewEbomUpgradeChangeEntity changeEntity = new BomNewEbomUpgradeChangeEntity(); @@ -297,7 +350,7 @@ public class EBomToPBom { changeEntity.setStatus(0); upgradeChangeResult.add(changeEntity); - hasBuildVNo.add( key); + hasBuildVNo.add(key); } } @@ -341,7 +394,7 @@ public class EBomToPBom { VUtils.isTure(CollUtil.isEmpty(voParent)).throwMessage(vo.getMaterialNo() + " 未找到父级"); packageCompositionEntity.setParentMaterialNo(voParent.get(0).getMaterialNo()); packageCompositionEntity.setChildMaterialNo(vo.getMaterialNo()); - packageCompositionEntity.setParentFullPathNum(StrUtil.join(",",parentFullPathNum)); + packageCompositionEntity.setParentFullPathNum(StrUtil.join(",", parentFullPathNum)); packageCompositionEntity.setProjectType(vo.getProjectType()); packageCompositionEntity.setUnitWeight(vo.getUnitWeight()); packageCompositionEntity.setTotalWeight(vo.getTotalWeight()); @@ -361,7 +414,7 @@ public class EBomToPBom { private BomNewEbomParentVO getLastVirtualPackage(BomNewEbomParentVO vo, VirtualPackageTypeEnum virtualPackageTypeEnum) { List zhiFaList = allBomDetail.stream().filter(u -> vo.getLevelNumber().compareTo(u.getLevelNumber()) > 0 && u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(zhiFaList)) { + if (CollUtil.isNotEmpty(zhiFaList)) { return Collections.max(zhiFaList, Comparator.comparing(BomNewEbomParentVO::getLevelNumber)); } return null; @@ -386,7 +439,7 @@ public class EBomToPBom { * @param bomRowID * @param parentDrawingNo */ - public void generateDrawingNo(List saveBomDetailParamDTO, Long bomRowID, String parentDrawingNo) { + public void generateDrawingNo(List saveBomDetailParamDTO, Long bomRowID, String parentDrawingNo) { List firstLevelBoms = saveBomDetailParamDTO.stream().filter(u -> u.getParentRowId().equals(bomRowID)).collect(Collectors.toList()); parentDrawingNo = StrUtil.isNotBlank(parentDrawingNo) ? parentDrawingNo : ""; Integer gNo = 1; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java index 3429e0bb..b3add8f8 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java @@ -24,11 +24,15 @@ import com.nflg.product.bomnew.util.MaterialshouldBomExistUtil; import com.nflg.product.bomnew.util.VersionUtil; import lombok.Data; +import java.io.ObjectInputStream; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @@ -302,13 +306,14 @@ public abstract class BaseConvert { if (oldChildList.size() != newChildList.size()) { return false; } - final List compareFields = ImmutableList.of("materialNo", "num","projectType"); - Map> stringMapMap = ClassCompareUtil.compareObject(oldChildList, newChildList, compareFields); - if (stringMapMap.size() > 0) { - return false; + Map oldChildMap = oldChildList.stream().collect(Collectors.toMap(BomNewEbomChildEntity::getMaterialNoAndProjectType , Function.identity())); + for (BomNewEbomChildEntity newChild : newChildList) { + String key=StrUtil.join(newChild.getMaterialNo(),newChild.getProjectType()); + if(!oldChildMap.containsKey(key) || Objects.equals(newChild.getNum(), oldChildMap.get(key).getNum()) ){ + return false; + } } return true; - }