diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java index b853d1b6..7cd0ebcb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java @@ -17,4 +17,9 @@ public enum VirtualPackageTypeEnum implements ValueEnum{ private final String description; private final String conMaterialName; private final String materialCategoryCode; + + + public static Integer getAll(){ + return 1|2|4; + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java index 21235665..c6e642b7 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java @@ -144,6 +144,10 @@ public class BomNewEbomParentEntity implements Serializable { @ApiModelProperty(value = "是否跟节点 0-否 1-是") private Integer rootIs; + @TableField(value = "virtrual_package_enum") + @ApiModelProperty("已生成的虚拟包 0-无 1-发货包 2-制作包 4-直发包 8-发货前装配包") + private Integer virtrualPackageEnum; + /** * 是否应该有BOM 0-否 1-是 */ 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 1309bac7..89c4ddc9 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 @@ -1,6 +1,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.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -12,6 +13,7 @@ import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.service.BomNewEbomChildService; import com.nflg.product.bomnew.service.BomNewEbomParentService; import com.nflg.product.bomnew.service.MaterialService; import com.nflg.product.bomnew.util.VersionUtil; @@ -23,6 +25,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * 生成虚拟包基类 @@ -100,6 +103,25 @@ public abstract class VirtualPackageBase { return SpringUtil.getBean(BomNewEbomParentService.class).getChild(bomRowId); } + protected BomNewEbomParentEntity getParentZhiZuo(){ + List list = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list(); + List zhiZuo = list.stream().filter(u -> u.getMaterialName().contains("制作")).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(zhiZuo)){ + String materialNo=zhiZuo.get(0).getMaterialNo(); + return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo,materialNo) + .eq(BomNewEbomParentEntity::getLastVersionIs,1).one(); + } + return null; + } + + /** + * 获取父节点 + * @return + */ + protected BomNewEbomParentEntity getParentByRowId(Long rowId){ + return SpringUtil.getBean(BomNewEbomParentService.class).getById(rowId); + } + /** * 生成虚拟包 */ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java index 583ab7d2..ad43451e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java @@ -11,6 +11,8 @@ import nflg.product.common.constant.STATE; import java.io.IOException; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * 31物料生成虚拟包 @@ -33,22 +35,27 @@ public class VirtualPackageFor21 extends VirtualPackageBase { @Override public void generateVirtualPackage() throws IOException { - BomNewEbomParentEntity parent = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getRowId, bomRowId).one(); - //构建构建发货包下制作包 - BomNewEbomParentEntity makingPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE); - //构建构建发货包下直发 - BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + BomNewEbomParentEntity parent = getParentByRowId(bomRowId); + BomNewEbomParentEntity makingPackage=null; + if((parent.getVirtrualPackageEnum()| VirtualPackageTypeEnum.MAKING_PACKAGE.getValue())!=VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) { + //构建构建发货包下制作包 + makingPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE); + //构建构建发货包下直发 + BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + //构建产品-子级为制作包合直发包 + buildChild(makingPackage, bomRowId, "001", VirtualPackageTypeEnum.MAKING_PACKAGE); + buildChild(directDeliveryPackage, bomRowId, "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + } + if(virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (parent.getVirtrualPackageEnum()| VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue())!=VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) { + //构建构建发货前装配包 + if(Objects.isNull(makingPackage)){ + makingPackage=getParentZhiZuo(); + } + BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - //构建产品-子级为制作包合直发包 - buildChild(makingPackage, bomRowId, "001", VirtualPackageTypeEnum.MAKING_PACKAGE); - buildChild(directDeliveryPackage, bomRowId, "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); - - //构建构建发货前装配包 - BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - - buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - + buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + } List child = getChild(); //将产品子级放制作包下 for (BomNewEbomParentVO item : child) { @@ -59,6 +66,8 @@ public class VirtualPackageFor21 extends VirtualPackageBase { this.childResult.add(itemUp); } + parent.setVirtrualPackageEnum(virtualPackageValue.stream().collect(Collectors.summingInt(u->u))); + parentResult.add(parent); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java index bca1ed26..69c682fe 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java @@ -6,6 +6,7 @@ import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.util.EnumUtils; +import com.nflg.product.bomnew.util.VUtils; import nflg.product.common.constant.STATE; import java.util.List; @@ -31,7 +32,10 @@ public class VirtualPackageFor31 extends VirtualPackageBase { */ @Override public void generateVirtualPackage() { + List child = getChild(); + BomNewEbomParentEntity parent = getParentByRowId(bomRowId); + VUtils.isTure(parent.getVirtrualPackageEnum()>0).throwMessage("已生成虚拟包无需重复生成"); try { for (BomNewEbomParentVO item : child) { //构建发货包 @@ -55,6 +59,9 @@ public class VirtualPackageFor31 extends VirtualPackageBase { this.childResult.add(itemUp); } + parent.setVirtrualPackageEnum(VirtualPackageTypeEnum.getAll()); + this.parentResult.add(parent); + }catch (Exception ex) { throw new NflgBusinessException(STATE.BusinessError, ex.getMessage()); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java index 2c7b95ca..33fbb369 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java @@ -83,8 +83,6 @@ public class OriginalBomToEBomConvert extends BaseConvert { hanlerDo(childParent); this.hasHandlerParentIds.add(childParent.getBomRowId()); } - - } @@ -151,12 +149,9 @@ public class OriginalBomToEBomConvert extends BaseConvert { newChild.setParentRowId(parentRowId); this.eBomChildResult.add(newChild); } - } - - } - - } else { - buildEBomParent(parentEnt); + }} + } else { + buildEBomParent(parentEnt); } } else { buildEBomParent(parentEnt); @@ -222,7 +217,6 @@ public class OriginalBomToEBomConvert extends BaseConvert { } - /** * 构建EBom父级 */ @@ -281,7 +275,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { Integer numResult=0; BigDecimal totalWeightResult=BigDecimal.ZERO; for (BomOriginalListVO item : list1) { - numResult+= Objects.nonNull(item.getNum()) ? item.getNum() : 0; + numResult =Objects.nonNull(item.getNum()) ? item.getNum() : 0; totalWeightResult=NumberUtil.add(totalWeightResult, item.getTotalWeight()); } one.setNum(numResult); 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 edd663f8..5d3e67af 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 @@ -22,6 +22,7 @@ + @@ -55,7 +56,7 @@ - row_id, batch_no, drawing_no, material_no, order_number, material_name, material_desc, material_texture, material_unit, unit_weight, total_weight, current_version, num, source, project_type, project_type_input_type, root_is, should_bom_exist, super_material_status, bom_exist, last_version_is, edit_status, status, user_root_is, exception_status,virtual_package_is, source_row_id, devise_user_code, devise_name, created_by, created_time, created_job, audit_time, audit_user_name, release_time, release_user_name, revert_time, revert_user_name, expire_end_time, convert_to_ebom_time, remark, dept_name, level_num, change_desc, notice_nums, modify_time + row_id, batch_no, drawing_no, material_no, order_number, material_name, material_desc, material_texture, material_unit, unit_weight, total_weight, current_version, num, source, project_type, project_type_input_type, root_is,virtrual_package_enum, should_bom_exist, super_material_status, bom_exist, last_version_is, edit_status, status, user_root_is, exception_status,virtual_package_is, source_row_id, devise_user_code, devise_name, created_by, created_time, created_job, audit_time, audit_user_name, release_time, release_user_name, revert_time, revert_user_name, expire_end_time, convert_to_ebom_time, remark, dept_name, level_num, change_desc, notice_nums, modify_time