生成虚拟包

This commit is contained in:
luoliming 2023-12-16 13:15:17 +08:00
parent e605d8c9cc
commit 5cc3e2d6e2
7 changed files with 67 additions and 25 deletions

View File

@ -17,4 +17,9 @@ public enum VirtualPackageTypeEnum implements ValueEnum<Integer>{
private final String description; private final String description;
private final String conMaterialName; private final String conMaterialName;
private final String materialCategoryCode; private final String materialCategoryCode;
public static Integer getAll(){
return 1|2|4;
}
} }

View File

@ -144,6 +144,10 @@ public class BomNewEbomParentEntity implements Serializable {
@ApiModelProperty(value = "是否跟节点 0-否 1-是") @ApiModelProperty(value = "是否跟节点 0-否 1-是")
private Integer rootIs; private Integer rootIs;
@TableField(value = "virtrual_package_enum")
@ApiModelProperty("已生成的虚拟包 0-无 1-发货包 2-制作包 4-直发包 8-发货前装配包")
private Integer virtrualPackageEnum;
/** /**
* 是否应该有BOM 0- 1- * 是否应该有BOM 0- 1-
*/ */

View File

@ -1,6 +1,7 @@
package com.nflg.product.bomnew.service.domain.EBom; package com.nflg.product.bomnew.service.domain.EBom;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; 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.BomNewEbomChildEntity;
import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity;
import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; 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.BomNewEbomParentService;
import com.nflg.product.bomnew.service.MaterialService; import com.nflg.product.bomnew.service.MaterialService;
import com.nflg.product.bomnew.util.VersionUtil; import com.nflg.product.bomnew.util.VersionUtil;
@ -23,6 +25,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 生成虚拟包基类 * 生成虚拟包基类
@ -100,6 +103,25 @@ public abstract class VirtualPackageBase {
return SpringUtil.getBean(BomNewEbomParentService.class).getChild(bomRowId); return SpringUtil.getBean(BomNewEbomParentService.class).getChild(bomRowId);
} }
protected BomNewEbomParentEntity getParentZhiZuo(){
List<BomNewEbomChildEntity> list = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list();
List<BomNewEbomChildEntity> 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);
}
/** /**
* 生成虚拟包 * 生成虚拟包
*/ */

View File

@ -11,6 +11,8 @@ import nflg.product.common.constant.STATE;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 31物料生成虚拟包 * 31物料生成虚拟包
@ -33,22 +35,27 @@ public class VirtualPackageFor21 extends VirtualPackageBase {
@Override @Override
public void generateVirtualPackage() throws IOException { public void generateVirtualPackage() throws IOException {
BomNewEbomParentEntity parent = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getRowId, bomRowId).one(); BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
//构建构建发货包下制作包 BomNewEbomParentEntity makingPackage=null;
BomNewEbomParentEntity makingPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE); if((parent.getVirtrualPackageEnum()| VirtualPackageTypeEnum.MAKING_PACKAGE.getValue())!=VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) {
//构建构建发货包下直发 //构建构建发货包下制作包
BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); 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(preAssemblyPackage, makingPackage.getRowId(), "001", 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);
List<BomNewEbomParentVO> child = getChild(); List<BomNewEbomParentVO> child = getChild();
//将产品子级放制作包下 //将产品子级放制作包下
for (BomNewEbomParentVO item : child) { for (BomNewEbomParentVO item : child) {
@ -59,6 +66,8 @@ public class VirtualPackageFor21 extends VirtualPackageBase {
this.childResult.add(itemUp); this.childResult.add(itemUp);
} }
parent.setVirtrualPackageEnum(virtualPackageValue.stream().collect(Collectors.summingInt(u->u)));
parentResult.add(parent);
} }

View File

@ -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.entity.BomNewEbomParentEntity;
import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO;
import com.nflg.product.bomnew.util.EnumUtils; import com.nflg.product.bomnew.util.EnumUtils;
import com.nflg.product.bomnew.util.VUtils;
import nflg.product.common.constant.STATE; import nflg.product.common.constant.STATE;
import java.util.List; import java.util.List;
@ -31,7 +32,10 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
*/ */
@Override @Override
public void generateVirtualPackage() { public void generateVirtualPackage() {
List<BomNewEbomParentVO> child = getChild(); List<BomNewEbomParentVO> child = getChild();
BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
VUtils.isTure(parent.getVirtrualPackageEnum()>0).throwMessage("已生成虚拟包无需重复生成");
try { try {
for (BomNewEbomParentVO item : child) { for (BomNewEbomParentVO item : child) {
//构建发货包 //构建发货包
@ -55,6 +59,9 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
this.childResult.add(itemUp); this.childResult.add(itemUp);
} }
parent.setVirtrualPackageEnum(VirtualPackageTypeEnum.getAll());
this.parentResult.add(parent);
}catch (Exception ex) { }catch (Exception ex) {
throw new NflgBusinessException(STATE.BusinessError, ex.getMessage()); throw new NflgBusinessException(STATE.BusinessError, ex.getMessage());
} }

View File

@ -83,8 +83,6 @@ public class OriginalBomToEBomConvert extends BaseConvert {
hanlerDo(childParent); hanlerDo(childParent);
this.hasHandlerParentIds.add(childParent.getBomRowId()); this.hasHandlerParentIds.add(childParent.getBomRowId());
} }
} }
@ -151,12 +149,9 @@ public class OriginalBomToEBomConvert extends BaseConvert {
newChild.setParentRowId(parentRowId); newChild.setParentRowId(parentRowId);
this.eBomChildResult.add(newChild); this.eBomChildResult.add(newChild);
} }
} }}
} else {
} buildEBomParent(parentEnt);
} else {
buildEBomParent(parentEnt);
} }
} else { } else {
buildEBomParent(parentEnt); buildEBomParent(parentEnt);
@ -222,7 +217,6 @@ public class OriginalBomToEBomConvert extends BaseConvert {
} }
/** /**
* 构建EBom父级 * 构建EBom父级
*/ */
@ -281,7 +275,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
Integer numResult=0; Integer numResult=0;
BigDecimal totalWeightResult=BigDecimal.ZERO; BigDecimal totalWeightResult=BigDecimal.ZERO;
for (BomOriginalListVO item : list1) { 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()); totalWeightResult=NumberUtil.add(totalWeightResult, item.getTotalWeight());
} }
one.setNum(numResult); one.setNum(numResult);

View File

@ -22,6 +22,7 @@
<result column="project_type" property="projectType" jdbcType="VARCHAR"/> <result column="project_type" property="projectType" jdbcType="VARCHAR"/>
<result column="project_type_input_type" property="projectTypeInputType" jdbcType="INTEGER"/> <result column="project_type_input_type" property="projectTypeInputType" jdbcType="INTEGER"/>
<result column="root_is" property="rootIs" jdbcType="INTEGER"/> <result column="root_is" property="rootIs" jdbcType="INTEGER"/>
<result column="virtrual_package_enum" property="virtrualPackageEnum" />
<result column="should_bom_exist" property="shouldBomExist" jdbcType="INTEGER"/> <result column="should_bom_exist" property="shouldBomExist" jdbcType="INTEGER"/>
<result column="super_material_status" property="superMaterialStatus" jdbcType="INTEGER"/> <result column="super_material_status" property="superMaterialStatus" jdbcType="INTEGER"/>
<result column="bom_exist" property="bomExist" jdbcType="INTEGER"/> <result column="bom_exist" property="bomExist" jdbcType="INTEGER"/>
@ -55,7 +56,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
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 </sql> 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 </sql>
<sql id="whr"> <sql id="whr">
<if test="query.drawingNo!=null and query.drawingNo!=''"> <if test="query.drawingNo!=null and query.drawingNo!=''">