feat: [excel未处理问题9]生成虚拟包调整
This commit is contained in:
parent
5694f87128
commit
528cf20ab8
|
|
@ -785,7 +785,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
//初始化虚拟包-判断枚举(不是手工生成虚拟包的情况)
|
||||
checkAndInitVirtualPackageEnum(paramDto, root);
|
||||
|
||||
VUtils.isTure(root.getVirtrualPackageEnum() > 0).throwMessage("已生成过虚拟包,不能2次生成");
|
||||
// VUtils.isTure(root.getVirtrualPackageEnum() > 0).throwMessage("已生成过虚拟包,不能2次生成");
|
||||
VUtils.isTure(!Objects.equals(root.getExceptionStatus(), EBomExceptionStatusEnum.OK.getValue())
|
||||
&& !Objects.equals(root.getExceptionStatus(), EBomExceptionStatusEnum.EXCEPT_NO_8.getValue()))
|
||||
.throwMessage("异常状态下不允许生成虚拟包");
|
||||
|
|
@ -806,6 +806,8 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
} else {
|
||||
generate = new VirtualPackageFor21(paramDto.getBomRowId(), paramDto.getVirtualPackageValue());
|
||||
}
|
||||
VUtils.isTure(!generate.canGenerateVirtualPackage()).throwMessage("没有需要处理的数据");
|
||||
|
||||
generate.generateVirtualPackage();
|
||||
|
||||
if (CollUtil.isNotEmpty(generate.getParentResult())) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import com.nflg.product.bomnew.service.BomNewEbomParentService;
|
|||
import com.nflg.product.bomnew.service.MaterialMainService;
|
||||
import com.nflg.product.bomnew.service.MaterialService;
|
||||
import com.nflg.product.bomnew.util.VersionUtil;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -36,10 +35,14 @@ public abstract class VirtualPackageBase {
|
|||
@Getter
|
||||
protected List<BomNewEbomChildEntity> childResult=new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("物料bom行ID")
|
||||
protected Long bomRowId;
|
||||
|
||||
@ApiModelProperty("虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包")
|
||||
//需要生成虚拟包的子节点
|
||||
protected List<BomNewEbomChildEntity> children;
|
||||
|
||||
/*
|
||||
* 虚拟包类型 1-发货包 2-制作包 4-直发包 8-发货前装配包
|
||||
*/
|
||||
protected List<Integer> virtualPackageValue;
|
||||
|
||||
//虚拟包编码
|
||||
|
|
@ -53,9 +56,9 @@ public abstract class VirtualPackageBase {
|
|||
* @param virtualPackageTypeEnums
|
||||
* @return
|
||||
*/
|
||||
protected void generateVMNoFor31(String parentDrawingNo, List<BomNewEbomParentVO> child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){
|
||||
protected void generateVMNoFor31(String parentDrawingNo, List<BomNewEbomChildEntity> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) {
|
||||
List<AddVirtrualMaterialDTO> params=new ArrayList<>();
|
||||
for ( BomNewEbomParentVO ch: child ) {
|
||||
for (BomNewEbomChildEntity ch : child) {
|
||||
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
|
||||
String vDrawingNo = String.join("","(",parentDrawingNo,")","(",ch.getMaterialName(),")","(",vpy.getConMaterialName(),")" );
|
||||
params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy));
|
||||
|
|
@ -224,6 +227,10 @@ public abstract class VirtualPackageBase {
|
|||
*/
|
||||
public abstract void generateVirtualPackage() throws IOException;
|
||||
|
||||
public abstract boolean canGenerateVirtualPackage();
|
||||
|
||||
public List<BomNewEbomChildEntity> getChildrenForGenerateVirtualPackage(Long bomRowId) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
package com.nflg.product.bomnew.service.domain.EBom;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
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 java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 31物料生成虚拟包
|
||||
|
|
@ -26,63 +29,77 @@ public class VirtualPackageFor21 extends VirtualPackageBase {
|
|||
this.virtualPackageValue = virtualPackageValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 31物料生成虚拟包
|
||||
* 21物料生成虚拟包
|
||||
*/
|
||||
@Override
|
||||
public void generateVirtualPackage() {
|
||||
|
||||
|
||||
BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
|
||||
BomNewEbomParentVO vo= Convert.convert(BomNewEbomParentVO.class,parent );
|
||||
|
||||
if(virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (parent.getVirtrualPackageEnum()&VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue())!= VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()){
|
||||
generateVMNoF21(parent.getDrawingNo(), ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
}
|
||||
else {
|
||||
generateVMNoF21(parent.getDrawingNo(),ImmutableList.of(vo),VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
}
|
||||
BomNewEbomChildEntity mpChild = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery()
|
||||
.eq(BomNewEbomChildEntity::getParentRowId, bomRowId)
|
||||
.eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.MAKING_PACKAGE.getValue())
|
||||
.one();
|
||||
|
||||
BomNewEbomParentEntity makingPackage = null;
|
||||
if (Objects.isNull(mpChild)) {
|
||||
BomNewEbomParentVO vo = Convert.convert(BomNewEbomParentVO.class, parent);
|
||||
|
||||
BomNewEbomParentEntity makingPackage=null;
|
||||
if((parent.getVirtrualPackageEnum()& VirtualPackageTypeEnum.MAKING_PACKAGE.getValue())!=VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) {
|
||||
//构建构建发货包下制作包
|
||||
makingPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001", parent);
|
||||
//构建构建发货包下直发
|
||||
BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002", parent);
|
||||
//构建产品-子级为制作包合直发包
|
||||
buildChild(makingPackage, bomRowId, "001", VirtualPackageTypeEnum.MAKING_PACKAGE,parent.getMaterialNo());
|
||||
buildChild(directDeliveryPackage, bomRowId, "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,parent.getMaterialNo());
|
||||
|
||||
}
|
||||
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(parent.getDrawingNo());
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (parent.getVirtrualPackageEnum() & VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) {
|
||||
generateVMNoF21(parent.getDrawingNo(), ImmutableList.of(vo), VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
} else {
|
||||
generateVMNoF21(parent.getDrawingNo(), ImmutableList.of(vo), VirtualPackageTypeEnum.MAKING_PACKAGE, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
}
|
||||
BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, parent.getOrderNumber(), parent);
|
||||
buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE,parent.getMaterialNo());
|
||||
if ((parent.getVirtrualPackageEnum() & VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) != VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) {
|
||||
//构建构建发货包下制作包
|
||||
makingPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001", parent);
|
||||
//构建构建发货包下直发
|
||||
BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002", parent);
|
||||
//构建产品-子级为制作包合直发包
|
||||
buildChild(makingPackage, bomRowId, "001", VirtualPackageTypeEnum.MAKING_PACKAGE, parent.getMaterialNo());
|
||||
buildChild(directDeliveryPackage, bomRowId, "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, parent.getMaterialNo());
|
||||
|
||||
}
|
||||
} else {
|
||||
makingPackage = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery()
|
||||
.eq(BomNewEbomParentEntity::getMaterialNo, mpChild.getMaterialNo())
|
||||
.orderByDesc(BomNewEbomParentEntity::getRowId)
|
||||
.last(" limit 1")
|
||||
.one();
|
||||
}
|
||||
List<BomNewEbomParentVO> child = getChild();
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (parent.getVirtrualPackageEnum() & VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) {
|
||||
//构建构建发货前装配包
|
||||
BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, parent.getOrderNumber(), parent);
|
||||
buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, parent.getMaterialNo());
|
||||
}
|
||||
//List<BomNewEbomParentVO> child = getChild();
|
||||
//将产品子级放制作包下
|
||||
if(Objects.nonNull(makingPackage)) {
|
||||
for (BomNewEbomParentVO item : child) {
|
||||
|
||||
BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity();
|
||||
itemUp.setRowId(item.getRowId());
|
||||
itemUp.setParentRowId(makingPackage.getRowId());
|
||||
this.childResult.add(itemUp);
|
||||
|
||||
for (BomNewEbomChildEntity item : children) {
|
||||
// BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity();
|
||||
// itemUp.setRowId(item.getRowId());
|
||||
// itemUp.setParentRowId(makingPackage.getRowId());
|
||||
item.setParentRowId(makingPackage.getRowId());
|
||||
this.childResult.add(item);
|
||||
}
|
||||
}
|
||||
parent.setVirtrualPackageEnum(virtualPackageValue.stream().collect(Collectors.summingInt(u->u)));
|
||||
parent.setVirtrualPackageEnum(virtualPackageValue.stream().mapToInt(u -> u).sum());
|
||||
parentResult.add(parent);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canGenerateVirtualPackage() {
|
||||
children = SpringUtil.getBean(BomNewEbomChildService.class)
|
||||
.lambdaQuery()
|
||||
.eq(BomNewEbomChildEntity::getParentRowId, bomRowId)
|
||||
.eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue())
|
||||
.list();
|
||||
if (CollUtil.isNotEmpty(children)) return true;
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue())) {
|
||||
BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
|
||||
return (parent.getVirtrualPackageEnum() & VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue())
|
||||
!= VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ import com.nflg.product.base.core.exception.NflgBusinessException;
|
|||
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.MaterialMainService;
|
||||
import com.nflg.product.bomnew.service.BomNewEbomChildService;
|
||||
import nflg.product.common.constant.STATE;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -24,7 +23,7 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
|
|||
* @param bomRowId 物料BOM-行ID
|
||||
* @param virtualPackageValue 要生成的虚拟包
|
||||
*/
|
||||
public VirtualPackageFor31(Long bomRowId ,List<Integer> virtualPackageValue){
|
||||
public VirtualPackageFor31(Long bomRowId, List<Integer> virtualPackageValue) {
|
||||
this.bomRowId=bomRowId;
|
||||
this.virtualPackageValue=virtualPackageValue;
|
||||
}
|
||||
|
|
@ -35,25 +34,23 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
|
|||
@Override
|
||||
public void generateVirtualPackage() {
|
||||
|
||||
List<BomNewEbomParentVO> child = getChild();
|
||||
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(child);
|
||||
// List<BomNewEbomChildEntity> child = getChild();
|
||||
//SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(child);
|
||||
BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
|
||||
|
||||
try {
|
||||
//生成虚拟包
|
||||
if(CollUtil.isNotEmpty(child)) {
|
||||
if (CollUtil.isNotEmpty(children)) {
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()){
|
||||
generateVMNoFor31(parent.getDrawingNo(), child , VirtualPackageTypeEnum.DELIVERY_PACKAGE,VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
generateVMNoFor31(parent.getDrawingNo(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
,VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
}
|
||||
else {
|
||||
generateVMNoFor31(parent.getDrawingNo(),child, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
generateVMNoFor31(parent.getDrawingNo(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
for (BomNewEbomParentVO item : child) {
|
||||
for (BomNewEbomChildEntity item : children) {
|
||||
BomNewEbomParentEntity makingPackage=null;
|
||||
if((VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()&parent.getVirtrualPackageEnum())!=VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()) {
|
||||
//构建发货包
|
||||
|
|
@ -91,9 +88,16 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
|
|||
}catch (Exception ex) {
|
||||
throw new NflgBusinessException(STATE.BusinessError, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canGenerateVirtualPackage() {
|
||||
children = SpringUtil.getBean(BomNewEbomChildService.class)
|
||||
.lambdaQuery()
|
||||
.eq(BomNewEbomChildEntity::getParentRowId, bomRowId)
|
||||
.eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue())
|
||||
.list();
|
||||
return CollUtil.isNotEmpty(children);
|
||||
}
|
||||
|
||||
private Integer getVPackageNum(BomNewEbomParentEntity parent){
|
||||
|
|
@ -103,7 +107,4 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
|
|||
}
|
||||
return vNum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue