1.问题修复

This commit is contained in:
大米 2023-12-26 11:53:58 +08:00
parent ff395e626a
commit 8591089de2
6 changed files with 79 additions and 35 deletions

View File

@ -176,6 +176,9 @@ public class BomOriginalListVO extends BaseMaterialVO {
@ApiModelProperty("是否删除 0-否 1-是")
private Integer delIs=0;
@ApiModelProperty("转换后Ebom行ID")
private Long eBomRowId=0L;

View File

@ -224,7 +224,8 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
public List<BomNewEbomParentVO> getChild(Long rowId) {
BomNewEbomParentEntity parent = this.getBaseMapper().selectById(rowId);
List<BomNewEbomParentVO> parentChild = this.getBaseMapper().getParentChild(rowId);
materialMainService.intiMaterialInfo(parentChild);
//排除项目类别的赋值
materialMainService.intiMaterialInfo(parentChild , "material","materialTexture","procureType");
if (CollUtil.isNotEmpty(parentChild)) {
List<String> materialNos = parentChild.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList());
if (CollUtil.isNotEmpty(materialNos)) {

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.product.base.core.config.SpringContextUtils;
@ -365,10 +366,11 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
//开始转换
for (BomNewOriginalParentEntity parent : bomNewOriginalParentEntities) {
convertToEBomDo(parent);
Long ebomRowId= IdWorker.getId();
convertToEBomDo(parent,ebomRowId);
//更新并保存异常信息
ebomParentService.checkAndSaveEBomException(parent.getRowId());
ebomParentService.checkAndSaveEBomException(ebomRowId);
}
return true;
@ -381,12 +383,13 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
* @param parent
*/
@Transactional(rollbackFor = Exception.class)
public void convertToEBomDo(BomNewOriginalParentEntity parent) throws ExecutionException, InterruptedException {
public void convertToEBomDo(BomNewOriginalParentEntity parent , Long eBomRowId) throws ExecutionException, InterruptedException {
//获取整颗树的BOM
List<BomOriginalListVO> bomAllChildList = this.getBomTree(parent.getRowId());
OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parent, bomAllChildList);
BomOriginalListVO parentVO = Convert.convert(BomOriginalListVO.class, parent);
parentVO.setEBomRowId(eBomRowId);
OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parentVO, bomAllChildList);
convert.convert();
@ -431,6 +434,9 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
data.setParentKey(CollUtil.isNotEmpty(parentData) ? StrUtil.join("-", parentData.get(0).getLevelNo(), parentData.get(0).getRowNum()) : "0");
data.setUuid(uuid);
}
List<BomNewOriginalExcelDTO> noMaterialNoList = excelContext.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
materialMainService.initMaterialForDrawdingNo(noMaterialNoList,BomNewOriginalExcelDTO::getChartNo,BomNewOriginalExcelDTO::setMaterialNo,BomNewOriginalExcelDTO::setMaterialName);
//转换
for (BomNewOriginalExcelDTO data : excelContext) {
PlmBomToOriginalConvert convert = new PlmBomToOriginalConvert();

View File

@ -79,6 +79,19 @@ public class MaterialMainService extends ServiceImpl<MaterialMainMapper, Materia
}
}
public <T extends BaseMaterialVO> void intiMaterialInfo(List<T> data , String ... ignorePropertyList) {
List<String> materialNos = data.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(u -> u.getMaterialNo()).collect(Collectors.toList());
if (CollUtil.isNotEmpty(materialNos)) {
List<BaseMaterialVO> materialBaseInfos = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos);
Map<String, BaseMaterialVO> materialMp = ListCommonUtil.listToMap(materialBaseInfos, BaseMaterialVO::getMaterialNo);
for (T t : data) {
if (StrUtil.isNotBlank(t.getMaterialNo()) && materialMp.containsKey(t.getMaterialNo())) {
BeanUtil.copyProperties(materialMp.get(t.getMaterialNo()), t, ignorePropertyList);
}
}
}
}
public <T> void initShouldBomExist(List<T> list, Function<T, String> getMaterialCategoryCodeFun, BiConsumer<T, Integer> setShouldBomExistFun, Function<T,Integer> getMaterialGetTypeFun) {
@ -119,7 +132,7 @@ public class MaterialMainService extends ServiceImpl<MaterialMainMapper, Materia
* @param <T>
*/
public <T> void initMaterialForDrawdingNo
(List<T> list, Function<T, String> getDrawingNoFun, BiConsumer<T, String>... setFun) {
(List<T> list, Function<T, String> getDrawingNoFun, BiConsumer<T, String> setMaterialNoFun, BiConsumer<T, String> setMaterialNameFun) {
List<String> drawingNos = list.stream().map(getDrawingNoFun).collect(Collectors.toList());
if (CollUtil.isNotEmpty(drawingNos)) {
List<BaseMaterialVO> materialList = SpringUtil.getBean(MaterialMainMapper.class).getMaterialByDrawingNo(drawingNos);
@ -129,9 +142,10 @@ public class MaterialMainService extends ServiceImpl<MaterialMainMapper, Materia
String drawingNo = getDrawingNoFun.apply(t);
BaseMaterialVO materialVO = materialVOMap.get(drawingNo);
if (materialVO != null) {
for (BiConsumer<T, String> setFun1 : setFun) {
setFun1.accept(t, materialVO.getMaterialNo());
}
setMaterialNoFun.accept(t, materialVO.getMaterialNo());
setMaterialNameFun.accept(t,materialVO.getMaterialName());
}

View File

@ -57,20 +57,25 @@ public class OriginalBomToEBomConvert extends BaseConvert {
List<BomNewEbomChildEntity> eBomChildResult = new ArrayList<>();
public OriginalBomToEBomConvert(BomNewOriginalParentEntity inParent, List<BomOriginalListVO> inBomDetail) {
parent = Convert.convert(BomOriginalListVO.class, inParent);
parent.setBomRowId(parent.getRowId());
bomDetail = inBomDetail;
}
public OriginalBomToEBomConvert(BomOriginalListVO inParent, List<BomOriginalListVO> inBomDetail) {
parent = inParent;
parent.setBomRowId(parent.getRowId());
bomDetail = inBomDetail;
}
public void convert() {
//checkData();
checkData();
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent));
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail);
SpringUtil.getBean(MaterialMainService.class).initShouldBomExist(bomDetail,BomOriginalListVO::getMaterialCategoryCode, BomOriginalListVO::setShouldBomExist,BomOriginalListVO::getMaterialGetType);
SpringUtil.getBean(MaterialMainService.class).initShouldBomExist(bomDetail, BomOriginalListVO::getMaterialCategoryCode, BomOriginalListVO::setShouldBomExist, BomOriginalListVO::getMaterialGetType);
//处理父级
hanlerDo(parent);
@ -98,7 +103,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
if (CollUtil.isNotEmpty(parentChild)) {
//父级初化物料编码
if(StrUtil.isNotBlank(parentEnt.getDrawingNo())) {
if (StrUtil.isNotBlank(parentEnt.getDrawingNo())) {
SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(ImmutableList.of(parentEnt), BomOriginalListVO::getDrawingNo, BomOriginalListVO::setMaterialNo, BomOriginalListVO::setMaterialName);
//子级初始化物料编码
SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(parentChildNoMaterilaNoList, BomOriginalListVO::getDrawingNo, BomOriginalListVO::setMaterialNo, BomOriginalListVO::setMaterialName);
@ -140,16 +145,21 @@ public class OriginalBomToEBomConvert extends BaseConvert {
if (CollUtil.isNotEmpty(materialBaseInfo)) {
List<BomNewEbomChildEntity> oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEnt.getMaterialNo());
//存在旧版本
if(CollUtil.isNotEmpty(oldParenChild)) {
BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt);
//存在旧版本
if (CollUtil.isNotEmpty(oldParenChild)) {
//结构是否相同
if (!isSameEBom(oldParenChild, ImmutableList.of(newChild))) {
Long parentRowId = buildEBomParent(parentEnt);
newChild.setParentRowId(parentRowId);
this.eBomChildResult.add(newChild);
}
}}
} else {
Long parentRowId = buildEBomParent(parentEnt);
newChild.setParentRowId(parentRowId);
this.eBomChildResult.add(newChild);
}
}
} else {
buildEBomParent(parentEnt);
}
@ -165,10 +175,11 @@ public class OriginalBomToEBomConvert extends BaseConvert {
/**
* 处理子级
*
* @param parentEntity
* @param originalSourceEnum
*/
private void handlerChild(BomOriginalListVO parentEntity , List<BomOriginalListVO> parentChild, OriginalSourceEnum originalSourceEnum) {
private void handlerChild(BomOriginalListVO parentEntity, List<BomOriginalListVO> parentChild, OriginalSourceEnum originalSourceEnum) {
for (BomOriginalListVO childVo : parentChild) {
//一般零部件
@ -224,8 +235,8 @@ public class OriginalBomToEBomConvert extends BaseConvert {
BomNewEbomParentEntity ebom = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parentEnt.getMaterialNo())
.eq(BomNewEbomParentEntity::getLastVersionIs, 1).one();
BomNewEbomParentEntity eBomParent = new BomNewEbomParentEntity();
BeanUtil.copyProperties(parentEnt, eBomParent,"materialGetType");
eBomParent.setRowId(IdWorker.getId());
BeanUtil.copyProperties(parentEnt, eBomParent, "materialGetType");
eBomParent.setRowId(parentEnt.getEBomRowId()>0?parentEnt.getEBomRowId(): IdWorker.getId());
eBomParent.setSource(EBomSourceEnum.FROM_BOM.getValue());
eBomParent.setCurrentVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion()));
eBomParent.setConvertToEbomTime(LocalDateTime.now());
@ -233,10 +244,10 @@ public class OriginalBomToEBomConvert extends BaseConvert {
eBomParent.setLastVersionIs(1);
eBomParent.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue());
eBomParent.setModifyTime(LocalDateTime.now());
eBomParent.setBomExist(parentEnt.getBomRowId()>0?1:0);
eBomParent.setBomExist(parentEnt.getBomRowId() > 0 ? 1 : 0);
//工艺岗直接到已复核
eBomParent.setStatus(SpringUtil.getBean(UserRoleService.class).technician()? EBomStatusEnum.CHECKED.getValue():EBomStatusEnum.WAIT_CHECK.getValue());
eBomParent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician()?UserJobEnum.ENGINEER.getValue():UserJobEnum.DESIGNER.getValue());
eBomParent.setStatus(SpringUtil.getBean(UserRoleService.class).technician() ? EBomStatusEnum.CHECKED.getValue() : EBomStatusEnum.WAIT_CHECK.getValue());
eBomParent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue());
if (Objects.nonNull(ebom)) {
ebom.setLastVersionIs(0);
this.eBomParentResult.add(ebom);
@ -255,7 +266,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
for (BomOriginalListVO item : child) {
BomNewEbomChildEntity childEntity = new BomNewEbomChildEntity();
BeanUtil.copyProperties( item,childEntity,"materialGetType");
BeanUtil.copyProperties(item, childEntity, "materialGetType");
childEntity.setRowId(IdWorker.getId());
childEntity.setParentRowId(parentRowId);
childEntity.setIdentityNo(StrUtil.join("_", parentRowId.toString(), childEntity.getRowId()));
@ -276,11 +287,11 @@ public class OriginalBomToEBomConvert extends BaseConvert {
for (Map.Entry<String, List<BomOriginalListVO>> entry : mateiralNoMp.entrySet()) {
List<BomOriginalListVO> list1 = entry.getValue();
BomOriginalListVO one = list1.get(0);
Integer numResult=0;
BigDecimal totalWeightResult=BigDecimal.ZERO;
Integer numResult = 0;
BigDecimal totalWeightResult = BigDecimal.ZERO;
for (BomOriginalListVO item : list1) {
numResult =Objects.nonNull(item.getNum()) ? item.getNum() : 0;
totalWeightResult=NumberUtil.add(totalWeightResult, item.getTotalWeight());
numResult = Objects.nonNull(item.getNum()) ? item.getNum() : 0;
totalWeightResult = NumberUtil.add(totalWeightResult, item.getTotalWeight());
}
one.setNum(numResult);
one.setTotalWeight(totalWeightResult);
@ -297,7 +308,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos);
List<String> materialNoInMain = materialBaseInfo.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList());
Set<String> difference = Sets.difference(new HashSet<>(materialNos), new HashSet<>(materialNoInMain));
VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "物料编码在主数据平台不存在");
VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "物料编码在主数据平台不存在,请检查更正");
}
}

View File

@ -42,6 +42,15 @@ public class PlmBomToOriginalConvert extends BaseConvert {
public void convertOriginalBom(BomOriginalCadParentEntity inParent) {
childs = Convert.toList(BomOriginalPlmBomVO.class, SpringUtil.getBean(BomOriginalCadChildService.class).lambdaQuery().eq(BomOriginalCadChildEntity::getParentRowId, inParent.getRowId()).list());
parent = Convert.convert(BomOriginalPlmBomVO.class, inParent);
//图号-初始化缺编码的物料
if(StrUtil.isBlank(parent.getMaterialNo())){
SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(ImmutableList.of(parent) ,BomOriginalPlmBomVO::getDrawingNo,BomOriginalPlmBomVO::setMaterialNo,BomOriginalPlmBomVO::setMaterialName);
}
List<BomOriginalPlmBomVO> noMaterialNoList = childs.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(noMaterialNoList)){
SpringUtil.getBean(MaterialMainService.class).initMaterialForDrawdingNo(noMaterialNoList ,BomOriginalPlmBomVO::getDrawingNo,BomOriginalPlmBomVO::setMaterialNo,BomOriginalPlmBomVO::setMaterialName);
}
//初始化物料信息
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent));
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(childs);