1、生成虚拟包批量查询主数据-缩短生成虚拟包时间

This commit is contained in:
大米 2024-05-06 13:44:02 +08:00
parent 16a71b3af3
commit 362f6c7ce0
1 changed files with 90 additions and 50 deletions

View File

@ -17,10 +17,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.ttzero.excel.reader.Col;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -30,10 +32,10 @@ public abstract class VirtualPackageBase {
@Getter
protected List<BomNewEbomParentEntity> parentResult=new ArrayList<>();
protected List<BomNewEbomParentEntity> parentResult = new ArrayList<>();
@Getter
protected List<BomNewEbomChildEntity> childResult=new ArrayList<>();
protected List<BomNewEbomChildEntity> childResult = new ArrayList<>();
protected Long bomRowId;
@ -46,41 +48,57 @@ public abstract class VirtualPackageBase {
protected List<Integer> virtualPackageValue;
//虚拟包编码
protected Map<String, AddVirtrualMaterialDTO> vMNos=new HashMap<>();
protected Map<String, AddVirtrualMaterialDTO> vMNos = new HashMap<>();
/**
* 申请虚拟包
*
* @param child
* @param virtualPackageTypeEnums
* @return
*/
protected void generateVMNoFor31(String parentDrawingNo, List<BomNewEbomChildEntity> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) {
List<AddVirtrualMaterialDTO> params=new ArrayList<>();
List<AddVirtrualMaterialDTO> params = new ArrayList<>();
Set<String> vDrawingNoSet = new HashSet<>();
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));
String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")");
vDrawingNoSet.add(vDrawingNo);
}
}
if (CollUtil.isNotEmpty(vDrawingNoSet)) {
List<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().in(MaterialMainEntity::getDrawingNo, vDrawingNoSet).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) {
String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")");
params.add(buildAddMaterialParamDo(StrUtil.join("", ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy, oldMaterialMap));
}
}
List<AddVirtrualMaterialDTO> addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(addM)) {
if (CollUtil.isNotEmpty(addM)) {
Map<String, AddVirtrualMaterialDTO> vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM);
vMNos.putAll(vMNosResult);
}
}
}
/**
* 申请虚拟包
*
* @param child
* @param virtualPackageTypeEnums
* @return
*/
protected void generateVMNoF21(String parentDrawingNo, List<BomNewEbomParentVO> child,VirtualPackageTypeEnum ... virtualPackageTypeEnums){
List<AddVirtrualMaterialDTO> params=new ArrayList<>();
for ( BomNewEbomParentVO ch: child ) {
protected void generateVMNoF21(String parentDrawingNo, List<BomNewEbomParentVO> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) {
List<AddVirtrualMaterialDTO> params = new ArrayList<>();
Set<String> vDrawingNoSet = new HashSet<>();
for (BomNewEbomParentVO ch : child) {
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
String vDrawingNo;
if (vpy == VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE) {
@ -88,30 +106,49 @@ public abstract class VirtualPackageBase {
} else {
vDrawingNo = String.join("", "(", parentDrawingNo, ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")");
}
params.add(buildAddMaterialParamDo(StrUtil.join("",ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy));
vDrawingNoSet.add(vDrawingNo);
}
}
if (CollUtil.isNotEmpty(vDrawingNoSet)) {
List<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().in(MaterialMainEntity::getDrawingNo, vDrawingNoSet).list();
Map<String, MaterialMainEntity> oldMaterialMap = oldMaterialList.stream().collect(Collectors.toMap(MaterialMainEntity::getDrawingNo, Function.identity(), (k1, k2) -> k1));
for (BomNewEbomParentVO ch : child) {
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
String vDrawingNo;
if (vpy == VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE) {
vDrawingNo = String.join("", parentDrawingNo, ".FHQ", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")");
} else {
vDrawingNo = String.join("", "(", parentDrawingNo, ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")");
}
params.add(buildAddMaterialParamDo(StrUtil.join("", ch.getRowId().toString(), vpy.getConMaterialName()), vDrawingNo, vDrawingNo, vpy, oldMaterialMap));
}
}
List<AddVirtrualMaterialDTO> addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
vMNos= SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM);
vMNos = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM);
}
}
//申请物料编码
private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType){
private AddVirtrualMaterialDTO buildAddMaterialParamDo(String key, String drawingNo, String materialName, VirtualPackageTypeEnum virtualPackageType, Map<String, MaterialMainEntity> oldMaterialMap) {
List<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo)
.list();
AddVirtrualMaterialDTO ent=new AddVirtrualMaterialDTO();
if(CollUtil.isNotEmpty(oldMaterialList)){
// List<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo)
// .list();
MaterialMainEntity oldMaterial = oldMaterialMap.get(drawingNo);
AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO();
if (Objects.nonNull(oldMaterial)) {
ent.setKey(key);
ent.setDrawingNo(drawingNo);
ent.setMaterialNo(oldMaterialList.get(0).getMaterialNo());
ent.setMaterialName(oldMaterialList.get(0).getMaterialName());
ent.setMaterialDesc(oldMaterialList.get(0).getMaterialDesc());
ent.setMaterialCategoryCode(oldMaterialList.get(0).getMaterialCategoryCode());
vMNos.put(ent.getKey(),ent);
}
else {
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);
@ -123,30 +160,30 @@ public abstract class VirtualPackageBase {
protected BomNewEbomParentEntity buildParentVirtualPackage(Long rowId, VirtualPackageTypeEnum virtualPackageTypeEnum, String orderNum, BomNewEbomParentEntity p) {
AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("",rowId,virtualPackageTypeEnum.getConMaterialName()));
BomNewEbomParentEntity oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery()
AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("", rowId, virtualPackageTypeEnum.getConMaterialName()));
BomNewEbomParentEntity oldParent = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery()
.eq(BomNewEbomParentEntity::getMaterialNo, addM.getMaterialNo())
.eq(BomNewEbomParentEntity::getLastVersionIs,1)
.eq(BomNewEbomParentEntity::getLastVersionIs, 1)
//.ne(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue())
.one();
if(Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus()) ){
if (Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus())) {
return oldParent;
}
if(Objects.nonNull(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();
BomNewEbomParentEntity parent = new BomNewEbomParentEntity();
parent.setRowId(IdWorker.getId());
parent.setOrderNumber(StrUtil.isNotBlank(orderNum) ? StrUtil.padPre(orderNum,3,"0"):"001");
parent.setDrawingNo(addM.getDrawingNo() );
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.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent) ? oldParent.getCurrentVersion() : ""));
parent.setVirtualPackageIs(1);
// parent.setProjectType("L");
// parent.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue());
@ -170,11 +207,12 @@ public abstract class VirtualPackageBase {
/**
* 构建子级
*
* @return
*/
protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo,VirtualPackageTypeEnum virtualPackageTypeEnum,String rootMaterialNo){
BomNewEbomChildEntity childEntity =new BomNewEbomChildEntity();
BeanUtil.copyProperties(parent,childEntity);
protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo, VirtualPackageTypeEnum virtualPackageTypeEnum, String rootMaterialNo) {
BomNewEbomChildEntity childEntity = new BomNewEbomChildEntity();
BeanUtil.copyProperties(parent, childEntity);
childEntity.setRowId(IdWorker.getId());
childEntity.setParentRowId(parentRowId);
childEntity.setIdentityNo(parent.getRowId().toString());
@ -193,16 +231,17 @@ public abstract class VirtualPackageBase {
/**
* 获取子级
*
* @return
*/
protected List<BomNewEbomParentVO> getChild(){
protected List<BomNewEbomParentVO> getChild() {
return SpringUtil.getBean(BomNewEbomParentService.class).getChildForVirtualPackage(bomRowId);
}
protected BomNewEbomParentEntity getParentZhiZuo(String inDrawingNo){
protected BomNewEbomParentEntity getParentZhiZuo(String inDrawingNo) {
return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getDrawingNo,StrUtil.join("","(", inDrawingNo,VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName(),")"))
.eq(BomNewEbomParentEntity::getLastVersionIs,1).one();
return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getDrawingNo, StrUtil.join("", "(", inDrawingNo, VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName(), ")"))
.eq(BomNewEbomParentEntity::getLastVersionIs, 1).one();
// List<BomNewEbomChildEntity> list = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, inBomRowId).list();
// List<BomNewEbomChildEntity> zhiZuo = list.stream().filter(u -> u.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())).collect(Collectors.toList());
@ -216,9 +255,10 @@ public abstract class VirtualPackageBase {
/**
* 获取父节点
*
* @return
*/
protected BomNewEbomParentEntity getParentByRowId(Long rowId){
protected BomNewEbomParentEntity getParentByRowId(Long rowId) {
return SpringUtil.getBean(BomNewEbomParentService.class).getById(rowId);
}