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.service.MaterialService;
import com.nflg.product.bomnew.util.VersionUtil; import com.nflg.product.bomnew.util.VersionUtil;
import lombok.Getter; import lombok.Getter;
import org.ttzero.excel.reader.Col;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -49,19 +51,31 @@ public abstract class VirtualPackageBase {
protected Map<String, AddVirtrualMaterialDTO> vMNos = new HashMap<>(); protected Map<String, AddVirtrualMaterialDTO> vMNos = new HashMap<>();
/** /**
* 申请虚拟包 * 申请虚拟包
*
* @param child * @param child
* @param virtualPackageTypeEnums * @param virtualPackageTypeEnums
* @return * @return
*/ */
protected void generateVMNoFor31(String parentDrawingNo, List<BomNewEbomChildEntity> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) { 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 (BomNewEbomChildEntity ch : child) {
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
String vDrawingNo = String.join("", "(", parentDrawingNo, ")", "(", ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); String 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 (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()); List<AddVirtrualMaterialDTO> addM = params.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
@ -69,17 +83,21 @@ public abstract class VirtualPackageBase {
Map<String, AddVirtrualMaterialDTO> vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM); Map<String, AddVirtrualMaterialDTO> vMNosResult = SpringUtil.getBean(MaterialService.class).batchAddMaterial(addM);
vMNos.putAll(vMNosResult); vMNos.putAll(vMNosResult);
} }
}
} }
/** /**
* 申请虚拟包 * 申请虚拟包
*
* @param child * @param child
* @param virtualPackageTypeEnums * @param virtualPackageTypeEnums
* @return * @return
*/ */
protected void generateVMNoF21(String parentDrawingNo, List<BomNewEbomParentVO> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) { protected void generateVMNoF21(String parentDrawingNo, List<BomNewEbomParentVO> child, VirtualPackageTypeEnum... virtualPackageTypeEnums) {
List<AddVirtrualMaterialDTO> params = new ArrayList<>(); List<AddVirtrualMaterialDTO> params = new ArrayList<>();
Set<String> vDrawingNoSet = new HashSet<>();
for (BomNewEbomParentVO ch : child) { for (BomNewEbomParentVO ch : child) {
for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) { for (VirtualPackageTypeEnum vpy : virtualPackageTypeEnums) {
String vDrawingNo; String vDrawingNo;
@ -88,30 +106,49 @@ public abstract class VirtualPackageBase {
} else { } else {
vDrawingNo = String.join("", "(", parentDrawingNo, ch.getMaterialName(), ")", "(", vpy.getConMaterialName(), ")"); 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()); 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<MaterialMainEntity> oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getDrawingNo, drawingNo)
.list(); // .list();
MaterialMainEntity oldMaterial = oldMaterialMap.get(drawingNo);
AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO(); AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO();
if(CollUtil.isNotEmpty(oldMaterialList)){ if (Objects.nonNull(oldMaterial)) {
ent.setKey(key); ent.setKey(key);
ent.setDrawingNo(drawingNo); ent.setDrawingNo(drawingNo);
ent.setMaterialNo(oldMaterialList.get(0).getMaterialNo()); ent.setMaterialNo(oldMaterial.getMaterialNo());
ent.setMaterialName(oldMaterialList.get(0).getMaterialName()); ent.setMaterialName(oldMaterial.getMaterialName());
ent.setMaterialDesc(oldMaterialList.get(0).getMaterialDesc()); ent.setMaterialDesc(oldMaterial.getMaterialDesc());
ent.setMaterialCategoryCode(oldMaterialList.get(0).getMaterialCategoryCode()); ent.setMaterialCategoryCode(oldMaterial.getMaterialCategoryCode());
vMNos.put(ent.getKey(), ent); vMNos.put(ent.getKey(), ent);
} } else {
else {
ent.setKey(key); ent.setKey(key);
ent.setDrawingNo(drawingNo); ent.setDrawingNo(drawingNo);
ent.setMaterialName(materialName); ent.setMaterialName(materialName);
@ -170,6 +207,7 @@ public abstract class VirtualPackageBase {
/** /**
* 构建子级 * 构建子级
*
* @return * @return
*/ */
protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo, VirtualPackageTypeEnum virtualPackageTypeEnum, String rootMaterialNo) { protected BomNewEbomChildEntity buildChild(BomNewEbomParentEntity parent, Long parentRowId, String orderNo, VirtualPackageTypeEnum virtualPackageTypeEnum, String rootMaterialNo) {
@ -193,6 +231,7 @@ public abstract class VirtualPackageBase {
/** /**
* 获取子级 * 获取子级
*
* @return * @return
*/ */
protected List<BomNewEbomParentVO> getChild() { protected List<BomNewEbomParentVO> getChild() {
@ -216,6 +255,7 @@ public abstract class VirtualPackageBase {
/** /**
* 获取父节点 * 获取父节点
*
* @return * @return
*/ */
protected BomNewEbomParentEntity getParentByRowId(Long rowId) { protected BomNewEbomParentEntity getParentByRowId(Long rowId) {