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