1、31码同时生成1020虚拟包
This commit is contained in:
parent
f0add5e114
commit
807e177d39
|
|
@ -22,7 +22,7 @@ import java.io.IOException;
|
|||
* ebom-临时过渡接口
|
||||
*
|
||||
*/
|
||||
@Api(tags = "EBom临时接口")
|
||||
@Api(tags = "EBom临时过渡版接口")
|
||||
@RestController
|
||||
@RequestMapping("bom/new/ebom/temp")
|
||||
public class EbomTempApi extends BaseApi {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.nflg.product.bomnew.constant;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 大米
|
||||
* @date 2023/11/11 20:09
|
||||
|
|
@ -28,6 +31,9 @@ public class EBomConstant {
|
|||
|
||||
public static final String XIAN_TAO_FACTORY_Name_1020="仙桃";
|
||||
|
||||
//虚拟包-1010 和1020 图号名称 如:1020 名称后面
|
||||
public static final List<String> VIRTUAL_PACKAGE_DRAWING_NO_1010_AND_1020= ImmutableList.of("",EBomConstant.XIAN_TAO_FACTORY_Name_1020);
|
||||
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
|||
|
|
@ -792,18 +792,12 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
.throwMessage("异常状态下不允许生成虚拟包");
|
||||
LogRecordContext.putVariable("gvbom", root);
|
||||
|
||||
// Boolean flag = true;
|
||||
// for (Integer f : paramDto.getVirtualPackageValue()) {
|
||||
// flag = flag & ((root.getVirtrualPackageEnum() & f) == f);
|
||||
// }
|
||||
// VUtils.isTure(flag).throwMessage("已生成虚拟包,无需重复生成");
|
||||
|
||||
BomNewEbomParentVO parent = Convert.convert(BomNewEbomParentVO.class, root);
|
||||
materialMainService.intiMaterialInfo(ImmutableList.of(parent), BomNewEbomParentVO::getMaterialNo);
|
||||
if (parent.getMaterialCategoryCode().startsWith("30") || ImmutableList.of("200601", "200401").contains(parent.getMaterialCategoryCode())) {
|
||||
VirtualPackageBase generate;
|
||||
if (parent.getMaterialCategoryCode().startsWith("30")) {
|
||||
generate = new VirtualPackageFor31(paramDto.getBomRowId(), paramDto.getVirtualPackageValue());
|
||||
generate = new VirtualPackageFor31Temp(paramDto.getBomRowId(), paramDto.getVirtualPackageValue());
|
||||
} else {
|
||||
generate = new VirtualPackageFor21(paramDto.getBomRowId(), paramDto.getVirtualPackageValue());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ 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;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
||||
import com.nflg.product.bomnew.constant.*;
|
||||
import com.nflg.product.bomnew.pojo.dto.AddVirtrualMaterialDTO;
|
||||
|
|
@ -17,10 +18,12 @@ import com.nflg.product.bomnew.service.MaterialMainService;
|
|||
import com.nflg.product.bomnew.service.MaterialService;
|
||||
import com.nflg.product.bomnew.util.VersionUtil;
|
||||
import lombok.Getter;
|
||||
import org.bouncycastle.LICENSE;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -72,6 +75,40 @@ public abstract class VirtualPackageBase {
|
|||
|
||||
}
|
||||
|
||||
//过渡临时版-生成虚拟包物料编码
|
||||
protected void transitionGenerateVMNoFor31(String parentDrawingNo, List<BomNewEbomChildEntity> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) {
|
||||
List<AddVirtrualMaterialDTO> params=new ArrayList<>();
|
||||
|
||||
//需新建的物料编码
|
||||
Set<String> vDrawingNoNewSet=new HashSet<>();
|
||||
for (BomNewEbomChildEntity ch : child) {
|
||||
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
|
||||
for(String fac : EBomConstant.VIRTUAL_PACKAGE_DRAWING_NO_1010_AND_1020) {
|
||||
String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName()+fac, ")", "(", vpy.getConMaterialName(), ")");
|
||||
vDrawingNoNewSet.add(vDrawingNo);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().in(MaterialMainEntity::getDrawingNo, vDrawingNoNewSet)
|
||||
.list();
|
||||
Map<String, MaterialMainEntity> oldMaterialMap = oldMaterialList.stream().collect(Collectors.toMap(MaterialMainEntity::getDrawingNo, Function.identity(), (k1, k2) -> k1));
|
||||
|
||||
for (BomNewEbomChildEntity ch : child) {
|
||||
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
|
||||
for (String fac : EBomConstant.VIRTUAL_PACKAGE_DRAWING_NO_1010_AND_1020) {
|
||||
String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName()+fac, ")", "(", vpy.getConMaterialName(), ")");
|
||||
params.add(buildAddMaterialParamDo(StrUtil.join("", ch.getRowId().toString(), vpy.getConMaterialName()+fac), vDrawingNo, vDrawingNo, vpy, oldMaterialMap));
|
||||
}
|
||||
}
|
||||
}
|
||||
List<AddVirtrualMaterialDTO> addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(addM)) {
|
||||
Map<String, AddVirtrualMaterialDTO> vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM);
|
||||
vMNos.putAll(vMNosResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请虚拟包
|
||||
* @param child
|
||||
|
|
@ -121,6 +158,84 @@ public abstract class VirtualPackageBase {
|
|||
return ent;
|
||||
}
|
||||
|
||||
private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType,Map<String,MaterialMainEntity> oldMaterialMap){
|
||||
|
||||
MaterialMainEntity oldMaterial = oldMaterialMap.get(drawingNo);
|
||||
AddVirtrualMaterialDTO ent=new AddVirtrualMaterialDTO();
|
||||
if(Objects.nonNull(oldMaterial)){
|
||||
ent.setKey(key);
|
||||
ent.setDrawingNo(drawingNo);
|
||||
ent.setMaterialNo(oldMaterial.getMaterialNo());
|
||||
ent.setMaterialName(oldMaterial.getMaterialName());
|
||||
ent.setMaterialDesc(oldMaterial.getMaterialDesc());
|
||||
ent.setMaterialCategoryCode(oldMaterial.getMaterialCategoryCode());
|
||||
vMNos.put(ent.getKey(),ent);
|
||||
}
|
||||
else {
|
||||
ent.setKey(key);
|
||||
ent.setDrawingNo(drawingNo);
|
||||
ent.setMaterialName(materialName);
|
||||
ent.setMaterialDesc(materialName);
|
||||
ent.setMaterialCategoryCode(virtualPackageType.getMaterialCategoryCode());
|
||||
}
|
||||
return ent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 过渡临时版-创建BOM
|
||||
* @param rowId
|
||||
* @param virtualPackageTypeEnum
|
||||
* @param orderNum
|
||||
* @param p
|
||||
* @return
|
||||
*/
|
||||
protected BomNewEbomParentEntity buildTransitionParentVirtualPackage(Long rowId, VirtualPackageTypeEnum virtualPackageTypeEnum, String orderNum, BomNewEbomParentEntity p,String fac) {
|
||||
|
||||
AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("",rowId,virtualPackageTypeEnum.getConMaterialName(),fac));
|
||||
BomNewEbomParentEntity oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery()
|
||||
.eq(BomNewEbomParentEntity::getMaterialNo, addM.getMaterialNo())
|
||||
.eq(BomNewEbomParentEntity::getLastVersionIs,1)
|
||||
//.ne(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue())
|
||||
.one();
|
||||
|
||||
if(Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus()) ){
|
||||
return oldParent;
|
||||
}
|
||||
|
||||
if(Objects.nonNull(oldParent)){
|
||||
oldParent.setLastVersionIs(0);
|
||||
this.parentResult.add(oldParent);
|
||||
}
|
||||
// String materialNo = SpringUtil.getBean(MaterialService.class).addMaterial(drawingNo, vMaterialName,materialDesc, virtualPackageType.getMaterialCategoryCode());
|
||||
BomNewEbomParentEntity parent =new BomNewEbomParentEntity();
|
||||
parent.setRowId(IdWorker.getId());
|
||||
parent.setOrderNumber(StrUtil.isNotBlank(orderNum) ? StrUtil.padPre(orderNum,3,"0"):"001");
|
||||
parent.setDrawingNo(addM.getDrawingNo() );
|
||||
parent.setMaterialNo(addM.getMaterialNo());
|
||||
parent.setMaterialName(addM.getMaterialName());
|
||||
parent.setMaterialDesc(addM.getMaterialDesc());
|
||||
parent.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent)?oldParent.getCurrentVersion():""));
|
||||
parent.setVirtualPackageIs(1);
|
||||
// parent.setProjectType("L");
|
||||
// parent.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue());
|
||||
parent.setShouldBomExist(1);
|
||||
parent.setBomExist(1);
|
||||
parent.setMaterialUnit("PC");
|
||||
parent.setSourceRowId(0L);
|
||||
parent.setLastVersionIs(1);
|
||||
parent.setNum(new BigDecimal(1));
|
||||
parent.setDeviseUserCode(SessionUtil.getUserCode());
|
||||
parent.setDeviseName(SessionUtil.getRealName());
|
||||
parent.setCreatedBy(SessionUtil.getUserCode());
|
||||
parent.setDeptName(SessionUtil.getDepartName());
|
||||
parent.setSource(EBomSourceEnum.FROM_MDM.getValue());
|
||||
//parent.setModifyTime(LocalDateTime.now());
|
||||
parent.setStatus(p.getStatus());
|
||||
parent.setEditStatus(p.getEditStatus());
|
||||
this.parentResult.add(parent);
|
||||
return parent;
|
||||
}
|
||||
|
||||
protected BomNewEbomParentEntity buildParentVirtualPackage(Long rowId, VirtualPackageTypeEnum virtualPackageTypeEnum, String orderNum, BomNewEbomParentEntity p) {
|
||||
|
||||
AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("",rowId,virtualPackageTypeEnum.getConMaterialName()));
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.nflg.product.bomnew.service.domain.EBom;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.nflg.product.base.core.exception.NflgBusinessException;
|
||||
import com.nflg.product.bomnew.constant.EBomConstant;
|
||||
import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum;
|
||||
import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity;
|
||||
import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity;
|
||||
|
|
@ -35,52 +36,51 @@ public class VirtualPackageFor31Temp extends VirtualPackageBase {
|
|||
@Override
|
||||
public void generateVirtualPackage() {
|
||||
|
||||
// List<BomNewEbomChildEntity> child = getChild();
|
||||
//SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(child);
|
||||
BomNewEbomParentEntity parent = getParentByRowId(bomRowId);
|
||||
|
||||
try {
|
||||
//生成虚拟包
|
||||
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(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
transitionGenerateVMNoFor31(parent.getDrawingNo(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
,VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
|
||||
}
|
||||
else {
|
||||
generateVMNoFor31(parent.getDrawingNo(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
transitionGenerateVMNoFor31(parent.getDrawingNo(), children, VirtualPackageTypeEnum.DELIVERY_PACKAGE, VirtualPackageTypeEnum.MAKING_PACKAGE
|
||||
, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
|
||||
}
|
||||
}
|
||||
for (BomNewEbomChildEntity item : children) {
|
||||
BomNewEbomParentEntity makingPackage=null;
|
||||
if((VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()&parent.getVirtrualPackageEnum())!=VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()) {
|
||||
//构建发货包
|
||||
BomNewEbomParentEntity deliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, item.getOrderNumber(), parent);
|
||||
//构建构建发货包下制作包
|
||||
makingPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002", parent);
|
||||
//构建构建发货包下直发
|
||||
BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001", parent);
|
||||
for(String fac: EBomConstant.VIRTUAL_PACKAGE_DRAWING_NO_1010_AND_1020) {
|
||||
BomNewEbomParentEntity makingPackage = null;
|
||||
if ((VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()) {
|
||||
//构建发货包
|
||||
BomNewEbomParentEntity deliveryPackage = buildTransitionParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, item.getOrderNumber(), parent,fac);
|
||||
//构建构建发货包下制作包
|
||||
makingPackage = buildTransitionParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002", parent,fac);
|
||||
//构建构建发货包下直发
|
||||
BomNewEbomParentEntity directDeliveryPackage = buildTransitionParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001", parent,fac);
|
||||
|
||||
//构建-产品下发货包-子级
|
||||
buildChild(deliveryPackage, bomRowId, item.getOrderNumber(), VirtualPackageTypeEnum.DELIVERY_PACKAGE,parent.getMaterialNo());
|
||||
//构建-产品下发货包-子级
|
||||
buildChild(deliveryPackage, bomRowId, item.getOrderNumber(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, parent.getMaterialNo());
|
||||
|
||||
//构建发货包-子级
|
||||
buildChild(makingPackage, deliveryPackage.getRowId(), "002", VirtualPackageTypeEnum.MAKING_PACKAGE,parent.getMaterialNo());
|
||||
buildChild(directDeliveryPackage, deliveryPackage.getRowId(), "001", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,parent.getMaterialNo());
|
||||
//构建发货包-子级
|
||||
buildChild(makingPackage, deliveryPackage.getRowId(), "002", VirtualPackageTypeEnum.MAKING_PACKAGE, parent.getMaterialNo());
|
||||
buildChild(directDeliveryPackage, deliveryPackage.getRowId(), "001", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, parent.getMaterialNo());
|
||||
|
||||
BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity();
|
||||
itemUp.setRowId(item.getRowId());
|
||||
itemUp.setParentRowId(makingPackage.getRowId());
|
||||
this.childResult.add(itemUp);
|
||||
}
|
||||
// 包含发货前装配包
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) {
|
||||
BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, item.getOrderNumber(), parent);
|
||||
//构建构建发货前装配包
|
||||
if(Objects.isNull(makingPackage)){
|
||||
makingPackage=getParentZhiZuo(item.getDrawingNo());
|
||||
BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity();
|
||||
itemUp.setRowId(item.getRowId());
|
||||
itemUp.setParentRowId(makingPackage.getRowId());
|
||||
this.childResult.add(itemUp);
|
||||
}
|
||||
// 包含发货前装配包
|
||||
if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) {
|
||||
BomNewEbomParentEntity preAssemblyPackage = buildTransitionParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, item.getOrderNumber(), parent,fac);
|
||||
//构建构建发货前装配包
|
||||
if (Objects.isNull(makingPackage)) {
|
||||
makingPackage = getParentZhiZuo(item.getDrawingNo());
|
||||
}
|
||||
buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE, parent.getMaterialNo());
|
||||
}
|
||||
buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE,parent.getMaterialNo());
|
||||
}
|
||||
}
|
||||
parent.setVirtrualPackageEnum(getVPackageNum(parent));
|
||||
|
|
|
|||
Loading…
Reference in New Issue