fix(ebom): 优化从excel导入

This commit is contained in:
曹鹏飞 2024-05-19 10:13:25 +08:00
parent c78f0fc151
commit 2a982f0c45
1 changed files with 34 additions and 36 deletions

View File

@ -1,7 +1,6 @@
package com.nflg.product.bomnew.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
@ -305,33 +304,26 @@ public class EBomImportService {
parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getParentMaterialNo()))
.findFirst()
.orElse(null);
if (Objects.isNull(parent) && datas.stream().noneMatch(d -> d.getMaterialNo().equals(data.getParentMaterialNo()))) {
parents.add(buildRoot(materialBaseInfos, data.getParentMaterialNo(), data.getParentMaterialDesc()));
}
}
for (EbomExcelDTO data : datas) {
parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getMaterialNo()))
.findFirst()
.orElse(null);
if (Objects.isNull(parent)) {
parents.add(buildParent(materialBaseInfos, data));
if (datas.stream().noneMatch(d -> d.getMaterialNo().equals(data.getParentMaterialNo()))) {
parents.add(buildRoot(materialBaseInfos, data.getParentMaterialNo(), data.getParentMaterialDesc()));
} else {
parents.add(buildParent(materialBaseInfos, data));
}
}
}
for (EbomExcelDTO data : datas) {
parent = parents.stream().filter(p -> p.getMaterialNo().equals(data.getMaterialNo()))
.findFirst()
.get();
buildChild(children, materialBaseInfos, parent, data
buildChild(children, materialBaseInfos, data
, parents.stream().filter(p -> p.getMaterialNo().equals(data.getParentMaterialNo())).findFirst().get());
}
return Pair.of(parents, children);
}
private void buildChild(List<BomNewEbomChildEntity> children, List<BaseMaterialVO> materialBaseInfos, BomNewEbomParentEntity parent, EbomExcelDTO data, BomNewEbomParentEntity p) {
BomNewEbomChildEntity child = Convert.convert(BomNewEbomChildEntity.class, parent);
private void buildChild(List<BomNewEbomChildEntity> children, List<BaseMaterialVO> materialBaseInfos, EbomExcelDTO data, BomNewEbomParentEntity p) {
BomNewEbomChildEntity child = new BomNewEbomChildEntity();
child.setRowId(IdWorker.getId());
child.setParentRowId(p.getRowId());
parent.setOrderNumber("");
child.setMaterialNo(data.getMaterialNo());
List<BomNewEbomChildEntity> pcs = children.stream()
.filter(c -> Objects.equals(c.getParentRowId(), p.getRowId()))
.collect(Collectors.toList());
@ -341,11 +333,19 @@ public class EBomImportService {
String maxOrderNum = pcs.get(pcs.size() - 1).getOrderNumber();
child.setOrderNumber(OrderNoUtil.next(maxOrderNum));
}
child.setDrawingNo(parent.getDrawingNo());
child.setMaterialDesc(parent.getMaterialDesc());
child.setUnitWeight(parent.getUnitWeight());
child.setMaterialUnit(data.getUnit());
child.setMaterialOriginalUnit(parent.getMaterialOriginalUnit());
BaseMaterialVO vo = materialBaseInfos.stream()
.filter(m -> m.getMaterialNo().equals(child.getMaterialNo()))
.findFirst()
.orElse(null);
if (!Objects.isNull(vo)) {
child.setMaterialCategoryCode(vo.getMaterialCategoryCode());
child.setDrawingNo(vo.getDrawingNo());
child.setUnitWeight(vo.getMaterialWeight());
child.setMaterialUnit(vo.getMaterialUnit());
child.setMaterialTexture(vo.getMaterialTexture());
}
child.setMaterialDesc(data.getMaterialDesc());
child.setMaterialOriginalUnit(data.getUnit());
child.setNum(data.getNum());
child.setRemark(data.getRemark());
child.setTotalWeight(BomUtil.calculateTotalWeight(child.getNum(), child.getUnitWeight()));
@ -355,13 +355,11 @@ public class EBomImportService {
if (p.getMaterialNo().startsWith("31")) {
child.setVirtualPartRootMaterialNo(p.getMaterialNo());
}
BaseMaterialVO vo = materialBaseInfos.stream()
.filter(m -> m.getMaterialNo().equals(child.getMaterialNo()))
.findFirst()
.orElse(null);
if (!Objects.isNull(vo)) {
child.setMaterialCategoryCode(vo.getMaterialCategoryCode());
}
child.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue());
child.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue());
child.setCreatedBy(SessionUtil.getUserCode());
child.setRemark(data.getRemark());
child.setSource(EBomSourceEnum.FROM_EXCE.getValue());
setVirtualPackageType(child);
children.add(child);
}
@ -371,10 +369,10 @@ public class EBomImportService {
parent.setRowId(IdWorker.getId());
parent.setCurrentVersion(OriginalConstant.DEFAULT_BOM_VERSION);
parent.setMaterialNo(data.getMaterialNo());
parent.setMaterialDesc(data.getMaterialDesc());
parent.setMaterialNo(data.getParentMaterialNo());
parent.setMaterialDesc(data.getParentMaterialDesc());
BaseMaterialVO vo = materialBaseInfos.stream()
.filter(m -> m.getMaterialNo().equals(data.getMaterialNo()))
.filter(m -> m.getMaterialNo().equals(data.getParentMaterialNo()))
.findFirst()
.orElse(null);
if (!Objects.isNull(vo)) {
@ -382,12 +380,12 @@ public class EBomImportService {
parent.setUnitWeight(vo.getMaterialWeight());
parent.setMaterialName(vo.getMaterialName());
parent.setMaterialTexture(vo.getMaterialTexture());
parent.setMaterialUnit(vo.getMaterialUnit());
if (StrUtil.isBlank(data.getMaterialDesc())) {
if (StrUtil.isBlank(data.getParentMaterialDesc())) {
parent.setMaterialDesc(vo.getMaterialDesc());
}
parent.setMaterialUnit(vo.getMaterialUnit());
parent.setMaterialOriginalUnit(vo.getMaterialUnit());
}
parent.setMaterialOriginalUnit(data.getUnit());
parent.setNum(BigDecimal.ONE);
parent.setTotalWeight(null);
parent.setUserRootIs(0);
@ -411,7 +409,7 @@ public class EBomImportService {
parent.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue());
parent.setCreatedBy(SessionUtil.getUserCode());
parent.setRemark("");
parent.setOrderNumber(data.getOrderNum());
//parent.setOrderNumber(data.getOrderNum());
parent.setDeptName(SessionUtil.getDepartName());
parent.setSource(EBomSourceEnum.FROM_EXCE.getValue());
parent.setSourceRowId("");