From 6a07b46ea5f5e786d3b01d0f7e6d2d4fc311bd75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 22 Dec 2023 18:52:51 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8F=98=E6=9B=B4=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/EBomExceptionStatusEnum.java | 2 +- .../master/BomNewEbomUpgradeChangeMapper.java | 14 ++ ...ewEbomVirtualPackageCompositionMapper.java | 14 ++ .../entity/BomNewEbomUpgradeChangeEntity.java | 112 ++++++++++++++++ ...ewEbomVirtualPackageCompositionEntity.java | 99 +++++++++++++++ .../service/BomNewEbomParentService.java | 13 ++ .../BomNewEbomUpgradeChangeService.java | 19 +++ ...wEbomVirtualPackageCompositionService.java | 19 +++ .../bomnew/service/MaterialMainService.java | 6 + .../service/domain/EBom/EBomToPBom.java | 120 +++++++++++++++++- .../master/BomNewEbomUpgradeChangeMapper.xml | 26 ++++ ...NewEbomVirtualPackageCompositionMapper.xml | 24 ++++ 12 files changed, 463 insertions(+), 5 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomUpgradeChangeMapper.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomVirtualPackageCompositionMapper.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomUpgradeChangeEntity.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomVirtualPackageCompositionEntity.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomUpgradeChangeService.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomVirtualPackageCompositionService.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomUpgradeChangeMapper.xml create mode 100644 nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml 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 442a7b94..9efac418 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 @@ -5,7 +5,7 @@ import lombok.Getter; @AllArgsConstructor @Getter -public enum EBomExceptionStatusEnum { +public enum EBomExceptionStatusEnum implements ValueEnum { //-1 初始状态 //1=正常 // 2=冻结/完全弃用异常:物料的状态冻结或者完全弃用的状态 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomUpgradeChangeMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomUpgradeChangeMapper.java new file mode 100644 index 00000000..5113f7d0 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomUpgradeChangeMapper.java @@ -0,0 +1,14 @@ +package com.nflg.product.bomnew.mapper.master; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomUpgradeChangeEntity; + +/** + * t_bom_new_ebom_upgrade_change 表数据库访问层 + * ebom-变更影响 + * + * @author makejava + * @since 2023-12-22 13:44:47 + */ +public interface BomNewEbomUpgradeChangeMapper extends BaseMapper { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomVirtualPackageCompositionMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomVirtualPackageCompositionMapper.java new file mode 100644 index 00000000..0e14d183 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomVirtualPackageCompositionMapper.java @@ -0,0 +1,14 @@ +package com.nflg.product.bomnew.mapper.master; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomVirtualPackageCompositionEntity; + +/** + * t_bom_new_ebom_virtual_package_composition 表数据库访问层 + * + * + * @author makejava + * @since 2023-12-22 13:44:10 + */ +public interface BomNewEbomVirtualPackageCompositionMapper extends BaseMapper { +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomUpgradeChangeEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomUpgradeChangeEntity.java new file mode 100644 index 00000000..a69f8c99 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomUpgradeChangeEntity.java @@ -0,0 +1,112 @@ +package com.nflg.product.bomnew.pojo.entity; + +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.Accessors; +import java.time.LocalDateTime; +import java.time.LocalDate; + +/** + * t_bom_new_ebom_upgrade_change + * ebom-变更影响 + * + * @author makejava + * @since 2023-12-22 13:44:47 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="com-nflg-product-bomnew-pojo-new-entity-BomNewEbomUpgradeChangeEntity") +@TableName(value = "t_bom_new_ebom_upgrade_change") +public class BomNewEbomUpgradeChangeEntity implements Serializable { + + /** + * 主键-行ID + */ + @TableId(value = "row_id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键-行ID") + private Long rowId; + + /** + * 受影响的物料编码 + */ + @TableField(value = "material_no") + @ApiModelProperty(value = "受影响的物料编码") + private String materialNo; + + /** + * 修订版(旧) + */ + @TableField(value = "version_old") + @ApiModelProperty(value = "修订版(旧)") + private String versionOld; + + /** + * 修订版(新) + */ + @TableField(value = "version_new") + @ApiModelProperty(value = "修订版(新)") + private String versionNew; + + /** + * 名称 + */ + @TableField(value = "material_name") + @ApiModelProperty(value = "名称") + private String materialName; + + /** + * 图号 + */ + @TableField(value = "drawing_no") + @ApiModelProperty(value = "图号") + private String drawingNo; + + /** + * 设计人员 + */ + @TableField(value = "devise_name") + @ApiModelProperty(value = "设计人员") + private String deviseName; + + /** + * 设计人员部门 + */ + @TableField(value = "dept_name") + @ApiModelProperty(value = "设计人员部门") + private String deptName; + + /** + * 关联物料编码 + */ + @TableField(value = "rel_material_no") + @ApiModelProperty(value = "关联物料编码") + private String relMaterialNo; + + /** + * 关联物料描述 + */ + @TableField(value = "rel_material_desc") + @ApiModelProperty(value = "关联物料描述") + private String relMaterialDesc; + + /** + * 状态:0-未升级处理 1-已升级处理 + */ + @TableField(value = "status") + @ApiModelProperty(value = "状态:0-未升级处理 1-已升级处理") + private Integer status; + + /** + * 更新时间 + */ + @TableField(value = "updated_time") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + private static final long serialVersionUID = 862599074345253800L; + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomVirtualPackageCompositionEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomVirtualPackageCompositionEntity.java new file mode 100644 index 00000000..0a696ce0 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomVirtualPackageCompositionEntity.java @@ -0,0 +1,99 @@ +package com.nflg.product.bomnew.pojo.entity; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.Accessors; +import java.time.LocalDateTime; +import java.time.LocalDate; + +/** + * t_bom_new_ebom_virtual_package_composition + * + * + * @author makejava + * @since 2023-12-22 13:44:10 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="com-nflg-product-bomnew-pojo-new-entity-BomNewEbomVirtualPackageCompositionEntity") +@TableName(value = "t_bom_new_ebom_virtual_package_composition") +public class BomNewEbomVirtualPackageCompositionEntity implements Serializable { + + /** + * 主键行ID + */ + @TableId(value = "row_id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键行ID") + private Long rowId; + + /** + * 虚拟包物料编码 + */ + @TableField(value = "virtual_package_material_no") + @ApiModelProperty(value = "虚拟包物料编码") + private String virtualPackageMaterialNo; + + /** + * 父级物料编码 + */ + @TableField(value = "parent_material_no") + @ApiModelProperty(value = "父级物料编码") + private String parentMaterialNo; + + /** + * 标识全路径 + */ + @TableField(value = "parent_full_path_material_no") + @ApiModelProperty(value = "标识全路径") + private String parentFullPathMaterialNo; + + /** + * 子级物料编码 + */ + @TableField(value = "child_material_no") + @ApiModelProperty(value = "子级物料编码") + private String childMaterialNo; + + /** + * 子级物料数量 + */ + @TableField(value = "child_num") + @ApiModelProperty(value = "子级物料数量") + private BigDecimal childNum; + + /** + * 单重 + */ + @TableField(value = "unit_weight") + @ApiModelProperty(value = "单重") + private BigDecimal unitWeight; + + /** + * 总重 + */ + @TableField(value = "total_weight") + @ApiModelProperty(value = "总重") + private BigDecimal totalWeight; + + /** + * 数量 + */ + @TableField(value = "num") + @ApiModelProperty(value = "数量") + private BigDecimal num; + + /** + * 更新时间 + */ + @TableField(value = "updated_time") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + private static final long serialVersionUID = -45385735428516334L; + +} 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 3efbda8d..d59b823d 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 @@ -37,6 +37,7 @@ import com.nflg.product.bomnew.util.*; import nflg.product.common.constant.STATE; import nflg.product.common.vo.ResultVO; import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -86,6 +87,12 @@ public class BomNewEbomParentService extends ServiceImpl { + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomVirtualPackageCompositionService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomVirtualPackageCompositionService.java new file mode 100644 index 00000000..0c9670c3 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomVirtualPackageCompositionService.java @@ -0,0 +1,19 @@ +package com.nflg.product.bomnew.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.product.bomnew.mapper.master.BomNewEbomVirtualPackageCompositionMapper; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomVirtualPackageCompositionEntity; +import org.springframework.stereotype.Service; + + +/** + * t_bom_new_ebom_virtual_package_composition 表服务实现类 + * + * + * @author makejava + * @since 2023-12-22 13:44:10 + */ +@Service +public class BomNewEbomVirtualPackageCompositionService extends ServiceImpl { + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java index 655f2b2c..995418ba 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialMainService.java @@ -1,5 +1,7 @@ package com.nflg.product.bomnew.service; +import cn.hutool.cache.Cache; +import cn.hutool.cache.CacheUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; @@ -34,7 +36,10 @@ import java.util.stream.Collectors; @Service public class MaterialMainService extends ServiceImpl { +// private Integer expireTime = 1000 * 60 * 60 * 4; + //物料缓存 +// private Cache materialCache =CacheUtil.newLRUCache(1000,expireTime); /** * 获取物料信息 * @@ -74,6 +79,7 @@ public class MaterialMainService extends ServiceImpl void initShouldBomExist(List list, Function getMaterialCategoryCodeFun, BiConsumer setShouldBomExistFun, Function getMaterialGetTypeFun) { for (T t : list) { 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 162deed2..6abf00ee 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 @@ -2,25 +2,31 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.lang.Pair; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Sets; +import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum; import com.nflg.product.bomnew.constant.EBomStatusEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomUpgradeChangeEntity; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomVirtualPackageCompositionEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.service.BomNewEbomVirtualPackageCompositionService; import com.nflg.product.bomnew.service.BomNewPbomChildService; import com.nflg.product.bomnew.service.BomNewPbomParentService; +import com.nflg.product.bomnew.util.ListCommonUtil; import com.nflg.product.bomnew.util.VUtils; import com.nflg.product.bomnew.util.VersionUtil; import lombok.Getter; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -46,9 +52,17 @@ public class EBomToPBom { @Getter private List pBomChildResult = new ArrayList<>(); + @Getter + private List virtualPackageCompositionResult = new ArrayList<>(); + + @Getter + private List upgradeChangeResult = new ArrayList<>(); + private Map generateDrawingNoMap = new HashMap<>(); + private Set upChangeMaterialSet=new HashSet<>(); + public EBomToPBom(BomNewEbomParentVO inParent, List inAllBomDetail, List inFacCodes) { this.parent = inParent; @@ -63,7 +77,7 @@ public class EBomToPBom { */ public void convert() { //效验数据是否OK - check(); +// check(); //bom 提层 liftingLayer(); List parentList = result.stream().filter(u -> u.getBomRowId() > 0).collect(Collectors.toList()); @@ -114,7 +128,7 @@ public class EBomToPBom { return oldParent; } else { BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity(); - BeanUtil.copyProperties(pBomParent, parentVo); + BeanUtil.copyProperties( parentVo,pBomParent); pBomParent.setRowId(IdWorker.getId()); pBomParent.setLastVersionIs(1); pBomParent.setFacCode(facCode); @@ -142,6 +156,9 @@ public class EBomToPBom { vo.setParentRowId(lastVirtualPackage.getBomRowId()); result.add(vo); } + else { //当没找到直发包时,记录到变更影响 + buildUpgradeChange(vo); + } continue; } if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { @@ -153,12 +170,61 @@ public class EBomToPBom { vo.setParentRowId(lastVirtualPackage.getBomRowId()); result.add(vo); } + else { //当没找到直发包时,记录到变更影响 + buildUpgradeChange(vo); + } continue; } result.add(vo); } } + //变更记录 + private void buildUpgradeChange(BomNewEbomParentVO vo){ + List voParent = allBomDetail.stream().filter(u -> u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList()); + VUtils.isTure(CollUtil.isNotEmpty(voParent)).throwMessage(vo.getMaterialNo() + " 未找到父级"); + List list = SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class).lambdaQuery() + .eq(BomNewEbomVirtualPackageCompositionEntity::getParentMaterialNo, voParent.get(0).getMaterialNo()).list(); + if(CollUtil.isNotEmpty(list)) { + if(upChangeMaterialSet.contains(voParent.get(0).getMaterialNo())){ + return; + } + Map> vMaterialMap = ListCommonUtil.listGroupMap(list, BomNewEbomVirtualPackageCompositionEntity::getParentFullPathMaterialNo); + Set oldMaterialNoAndNumSet=new HashSet<>(); + for (String key: vMaterialMap.keySet()) { + oldMaterialNoAndNumSet=vMaterialMap.get(key).stream().map(u->StrUtil.join("-", u.getChildMaterialNo(),u.getNum())).collect(Collectors.toSet()); + + } + Set newSet = allBomDetail.stream().filter(u -> u.getParentRowId().equals(vo.getParentRowId()) && Objects.nonNull(u.getProjectType()) && vo.getProjectType().equals(u.getProjectType())).map(u -> StrUtil.join("-", u.getMaterialNo(), u.getNum())).collect(Collectors.toSet()); + //bom 发生了改变-影响了虚拟包 + if( CollUtil.isNotEmpty(Sets.difference(oldMaterialNoAndNumSet,newSet)) || CollUtil.isNotEmpty(Sets.difference(newSet,oldMaterialNoAndNumSet)) ){ + upChangeMaterialSet.add(parent.getMaterialNo()); + buildUpgradeChange(list, voParent.get(0)); + } + } + + } + + private void buildUpgradeChange(List changeList,BomNewEbomParentVO parent){ + List vmaterialNoList= changeList.stream().map(u -> u.getVirtualPackageMaterialNo()).distinct().collect(Collectors.toList()); + for (String vmaterialNo: vmaterialNoList) { + BomNewEbomUpgradeChangeEntity changeEntity=new BomNewEbomUpgradeChangeEntity(); + changeEntity.setRowId(IdWorker.getId()); + changeEntity.setMaterialNo(vmaterialNo); + changeEntity.setVersionOld(parent.getCurrentVersion()); + changeEntity.setVersionNew(VersionUtil.getNextVersionForSmallVersion(parent.getCurrentVersion())); + changeEntity.setDeviseName(SessionUtil.getRealName()); + changeEntity.setDeptName(SessionUtil.getDepartName()); + changeEntity.setRelMaterialNo(parent.getMaterialNo()); + changeEntity.setRelMaterialDesc(parent.getMaterialDesc()); + changeEntity.setStatus(0); + upgradeChangeResult.add(changeEntity); + } + + } + + + /** * 提层汇总数量 * @@ -168,13 +234,59 @@ public class EBomToPBom { private void liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) { BigDecimal sum = vo.getNum(); String parentLevelNo = vo.getLevelNo().substring(0, vo.getLevelNo().length() - 2); + List parentFullPathMaterialNoList=new ArrayList<>(); while (parentLevelNo.length() >= lastVirtualPackage.getLevelNo().length()) { - List parentList = allBomDetail.stream().filter(u -> u.getLevelNo().equals(parentLevelNo)).collect(Collectors.toList()); + String pNo=parentLevelNo; + List parentList = allBomDetail.stream().filter(u -> u.getLevelNo().equals(pNo) && !u.getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName()) && + !u.getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName()) && !u.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())) + .collect(Collectors.toList()); if (CollUtil.isNotEmpty(parentList)) { sum = NumberUtil.mul(sum, parentList.get(0).getNum()); + parentFullPathMaterialNoList.add(parentList.get(0).getMaterialNo()); + }else { + parentFullPathMaterialNoList.add(vo.getMaterialNo()); } + parentLevelNo = parentLevelNo.substring(0, parentLevelNo.length() - 2); + } vo.setNum(sum); + //构建虚拟包组成 + buildVirtualPackageComposition(lastVirtualPackage, vo,parentFullPathMaterialNoList); + + } + + private void buildVirtualPackageComposition(BomNewEbomParentVO lastVirtualPackage,BomNewEbomParentVO vo, List parentFullPathMaterialNoList){ + Collections.reverse(parentFullPathMaterialNoList); + String fullPath= StrUtil.join("-", parentFullPathMaterialNoList); + List list = SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class).lambdaQuery() + .eq(BomNewEbomVirtualPackageCompositionEntity::getParentFullPathMaterialNo, fullPath) + .eq(BomNewEbomVirtualPackageCompositionEntity::getVirtualPackageMaterialNo, lastVirtualPackage.getMaterialNo()).list(); + //删除旧的 + if(CollUtil.isNotEmpty(list)){ + List delRowIds = list.stream().map(u -> u.getRowId()).collect(Collectors.toList()); + SpringUtil.getBean(BomNewEbomVirtualPackageCompositionService.class).getBaseMapper().deleteBatchIds(delRowIds); + } + 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()); + VUtils.isTure(CollUtil.isEmpty(voParent)).throwMessage(vo.getMaterialNo() + " 未找到父级"); + if(voParent.get(0).getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName()) && + !voParent.get(0).getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName()) && !voParent.get(0).getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())) + { + packageCompositionEntity.setParentMaterialNo(voParent.get(0).getMaterialNo()); + } + else{ + packageCompositionEntity.setParentMaterialNo(vo.getMaterialNo()); + } + + packageCompositionEntity.setParentFullPathMaterialNo(fullPath); + packageCompositionEntity.setChildMaterialNo(vo.getMaterialNo()); + packageCompositionEntity.setChildNum(vo.getNum()); + packageCompositionEntity.setUnitWeight(vo.getUnitWeight()); + packageCompositionEntity.setTotalWeight(vo.getTotalWeight()); + packageCompositionEntity.setUpdatedTime(LocalDateTime.now()); + this.virtualPackageCompositionResult.add(packageCompositionEntity); } private String getParentMaterialNo(Long parentRowId) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomUpgradeChangeMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomUpgradeChangeMapper.xml new file mode 100644 index 00000000..7f079e3c --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomUpgradeChangeMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + row_id, material_no, version_old, version_new, material_name, drawing_no, devise_name, dept_name, + rel_material_no, rel_material_desc, status, updated_time + + diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml new file mode 100644 index 00000000..e9ae11e0 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomVirtualPackageCompositionMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + row_id, virtual_package_material_no, parent_material_no, parent_full_path_material_no, child_material_no, + child_num, unit_weight, total_weight, num, updated_time + +