fix: 电气bom调整

This commit is contained in:
曹鹏飞 2024-04-26 13:39:15 +08:00
parent 6e2fe973e0
commit 850c44a18b
6 changed files with 53 additions and 21 deletions

View File

@ -9,5 +9,7 @@ public class BomConstant {
public static final String SAP_YDBOM="1";
public static final String NO_TEMPORARY_PREFIX = "T";
public static final String PROJECT_TYPE_TEMPORARY = "T";
public static final String PROJECT_TYPE_TEMPORARY_MATERIAL_NO = "9000000000";
}

View File

@ -1,6 +1,7 @@
package com.nflg.product.bomnew.pojo.vo;
import cn.hutool.core.util.StrUtil;
import com.nflg.product.bomnew.constant.BomConstant;
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -120,7 +121,7 @@ public class BomNewDQbomVO extends BomNewDQbomChildEntity implements Serializabl
private String drawingNoDesc;
public String getDrawingNoDesc() {
if (StrUtil.equals(getProjectType(), "T")) {
if (StrUtil.equals(getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) {
return "";
}
return getDrawingNo();
@ -133,7 +134,7 @@ public class BomNewDQbomVO extends BomNewDQbomChildEntity implements Serializabl
private String materialNoDesc;
public String getMaterialNoDesc() {
if (StrUtil.equals(getProjectType(), "T")) {
if (StrUtil.equals(getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) {
return "";
}
return getMaterialNo();

View File

@ -42,15 +42,15 @@ public class DQbomExcelVO extends BaseImportExcelDTO {
@ExcelColumn("单位")
private String materialUnit;
@ExcelColumn("重量")
private BigDecimal unitWeight;
@ExcelColumn("项目类别")
private String projectType;
@ExcelColumn("版本")
private String currentVersion;
@ExcelColumn("单重")
private BigDecimal unitWeight;
@ExcelColumn("备注")
private String remark;
}

View File

@ -3,6 +3,7 @@ package com.nflg.product.bomnew.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.product.bomnew.constant.BomConstant;
import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum;
import com.nflg.product.bomnew.constant.MaterialGetEnum;
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
@ -123,7 +124,9 @@ public class BomNewDQbomExceptionCheckService {
private void checkParent(BomNewDQbomParentEntity parent) {
EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK;
if (parent.getRootIs() == 1 || parent.getUserRootIs() == 1) {
if ("T".equals(parent.getProjectType()) || "Q".equals(parent.getProjectType())) {
if (StrUtil.isBlank(parent.getProjectType())) {
status = EBomExceptionStatusEnum.EXCEPT_NO_8;
} else if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(parent.getProjectType()) || "Q".equals(parent.getProjectType())) {
if (StrUtil.isBlank(parent.getMaterialName())) {
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
}
@ -162,12 +165,12 @@ public class BomNewDQbomExceptionCheckService {
private void checkChild(BomNewDQbomChildEntity child) {
EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK;
if ("T".equals(child.getProjectType()) || "Q".equals(child.getProjectType())) {
if (StrUtil.isBlank(child.getProjectType())) {
status = EBomExceptionStatusEnum.EXCEPT_NO_8;
} else if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(child.getProjectType()) || "Q".equals(child.getProjectType())) {
if (StrUtil.isBlank(child.getMaterialName())) {
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
}
// } else if (child.getMaterialNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) {
// status = EBomExceptionStatusEnum.EXCEPT_NO_4;
} else {
BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(child.getMaterialNo()))
.findFirst()

View File

@ -169,7 +169,7 @@ public class DQBomImportService {
.list();
isSame = cc.size() == oc.size()
&& cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count()
&& cc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() == oc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count()
&& Sets.difference(cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet()), oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty();
//VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入");
@ -218,7 +218,7 @@ public class DQBomImportService {
Set<String> ccm = cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet());
isSame = cc.size() == oc.size()
&& cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count()
&& cc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count() == oc.stream().filter(c -> c.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)).count()
&& Sets.difference(ccm, oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty();
//VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入");
@ -379,10 +379,10 @@ public class DQBomImportService {
log.debug("电气bom导入excel第{}行,处理前:{}", rowNum.get(), JSON.toJSONString(dQbomExcelVO));
dQbomExcelVO.setRowNum(rowNum.get());
if (dQbomExcelVO.getProjectType().equals("T")) {
if (dQbomExcelVO.getProjectType().equals(BomConstant.PROJECT_TYPE_TEMPORARY)) {
String id = RandomUtil.randomNumbers(9);
dQbomExcelVO.setMaterialNo(BomConstant.NO_TEMPORARY_PREFIX + id);
dQbomExcelVO.setDrawingNo(BomConstant.NO_TEMPORARY_PREFIX + id);
dQbomExcelVO.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY + id);
dQbomExcelVO.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY + id);
if (StrUtil.isBlank(dQbomExcelVO.getMaterialUnit())) {
dQbomExcelVO.setMaterialUnit("PC");
}
@ -391,7 +391,7 @@ public class DQBomImportService {
}
}
if (StrUtil.equals(dQbomExcelVO.getMaterialNo(), "9000000000")) {
dQbomExcelVO.setProjectType("T");
dQbomExcelVO.setProjectType(BomConstant.PROJECT_TYPE_TEMPORARY);
}
dQbomExcelVO.setCurrentVersion("");

View File

@ -257,16 +257,17 @@ public class DQBomService {
}
//处理child
List<BomNewDQbomChildEntity> children = Convert.toList(BomNewDQbomChildEntity.class, query.getChildren());
List<BomNewDQbomParentEntity> cps = new ArrayList<>();
for (int index = 0, count = children.size(); index < count; index++) {
BomNewDQbomChildEntity c = children.get(index);
if (Objects.isNull(c.getRowId()) || c.getRowId() == 0) {
c.setRowId(IdWorker.getId());
c.setCreatedBy(SessionUtil.getUserCode());
c.setCreatedName(SessionUtil.getRealName());
if (StrUtil.equals(c.getProjectType(), "T")) {
if (StrUtil.equals(c.getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY)) {
String id = RandomUtil.randomNumbers(9);
c.setMaterialNo(BomConstant.NO_TEMPORARY_PREFIX + id);
c.setDrawingNo(BomConstant.NO_TEMPORARY_PREFIX + id);
c.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY + id);
c.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY + id);
if (Objects.isNull(c.getNum()) || NumberUtil.equals(c.getNum(), BigDecimal.ZERO)) {
c.setNum(BigDecimal.ONE);
}
@ -282,8 +283,21 @@ public class DQBomService {
c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId());
c.setOrderNumber(StrUtil.padPre(String.valueOf(index + 1), 3, '0'));
c.setTotalWeight(BomUtil.calculateTotalWeight(c.getNum(), query.getChildren().get(index).getUnitWeight()));
//处理parent
BomNewDQbomParentEntity cp = dQBomParentService.lambdaQuery()
.eq(BomNewDQbomParentEntity::getMaterialNo, c.getMaterialNo())
.eq(BomNewDQbomParentEntity::getStatus, DQBomStatusEnum.WAIT_CONVERT.getValue())
.one();
if (!Objects.isNull(cp)) {
cp.setMaterialName(c.getMaterialName());
cp.setUnitWeight(c.getUnitWeight());
cp.setTotalWeight(BomUtil.calculateTotalWeight(cp.getNum(), cp.getUnitWeight()));
cp.setModifyTime(LocalDateTime.now());
cps.add(cp);
}
}
dQBomChildService.saveBatch(children);
dQBomParentService.updateBatchById(cps);
query.setChildren(Convert.toList(BomNewDQbomVO.class, children));
return query;
}
@ -333,7 +347,14 @@ public class DQBomService {
}
public List<DQbomExcelVO> exportBom(Long rootBomRowId) {
return Convert.toList(DQbomExcelVO.class, getAll(rootBomRowId));
List<BomNewDQbomVO> datas = getAll(rootBomRowId);
datas.forEach(d -> {
if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(d.getProjectType())) {
d.setMaterialNo(BomConstant.PROJECT_TYPE_TEMPORARY_MATERIAL_NO);
d.setDrawingNo(BomConstant.PROJECT_TYPE_TEMPORARY_MATERIAL_NO);
}
});
return Convert.toList(DQbomExcelVO.class, datas);
}
private List<BomNewDQbomVO> getAll(Long rootBomRowId) {
@ -376,10 +397,15 @@ public class DQBomService {
T1DTO t1 = new T1DTO();
t1.setID(RandomUtil.randomNumbers(5));
t1.setMATNR(d.getParentMaterialNo());
t1.setIDNRK(d.getMaterialNo());
t1.setMEINS(d.getMaterialUnit());
t1.setMENGE(d.getNum().toString());
t1.setPOSTP(d.getProjectType());
if (BomConstant.PROJECT_TYPE_TEMPORARY.equals(d.getProjectType())) {
t1.setIDNRK("");
t1.setPOTX1(d.getMaterialName());
} else {
t1.setIDNRK(d.getMaterialNo());
}
t1.setDATUM(dateYMD);
t1s.add(t1);
});