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-是") @ApiModelProperty("是否删除 0-否 1-是")
private Integer delIs=0; 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) { public List<BomNewEbomParentVO> getChild(Long rowId) {
BomNewEbomParentEntity parent = this.getBaseMapper().selectById(rowId); BomNewEbomParentEntity parent = this.getBaseMapper().selectById(rowId);
List<BomNewEbomParentVO> parentChild = this.getBaseMapper().getParentChild(rowId); List<BomNewEbomParentVO> parentChild = this.getBaseMapper().getParentChild(rowId);
materialMainService.intiMaterialInfo(parentChild); //排除项目类别的赋值
materialMainService.intiMaterialInfo(parentChild , "material","materialTexture","procureType");
if (CollUtil.isNotEmpty(parentChild)) { if (CollUtil.isNotEmpty(parentChild)) {
List<String> materialNos = parentChild.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); List<String> materialNos = parentChild.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList());
if (CollUtil.isNotEmpty(materialNos)) { 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.convert.Convert;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; 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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.product.base.core.config.SpringContextUtils; import com.nflg.product.base.core.config.SpringContextUtils;
@ -365,10 +366,11 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
//开始转换 //开始转换
for (BomNewOriginalParentEntity parent : bomNewOriginalParentEntities) { for (BomNewOriginalParentEntity parent : bomNewOriginalParentEntities) {
convertToEBomDo(parent); Long ebomRowId= IdWorker.getId();
convertToEBomDo(parent,ebomRowId);
//更新并保存异常信息 //更新并保存异常信息
ebomParentService.checkAndSaveEBomException(parent.getRowId()); ebomParentService.checkAndSaveEBomException(ebomRowId);
} }
return true; return true;
@ -381,12 +383,13 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
* @param parent * @param parent
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void convertToEBomDo(BomNewOriginalParentEntity parent) throws ExecutionException, InterruptedException { public void convertToEBomDo(BomNewOriginalParentEntity parent , Long eBomRowId) throws ExecutionException, InterruptedException {
//获取整颗树的BOM //获取整颗树的BOM
List<BomOriginalListVO> bomAllChildList = this.getBomTree(parent.getRowId()); List<BomOriginalListVO> bomAllChildList = this.getBomTree(parent.getRowId());
BomOriginalListVO parentVO = Convert.convert(BomOriginalListVO.class, parent);
OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parent, bomAllChildList); parentVO.setEBomRowId(eBomRowId);
OriginalBomToEBomConvert convert = new OriginalBomToEBomConvert(parentVO, bomAllChildList);
convert.convert(); 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.setParentKey(CollUtil.isNotEmpty(parentData) ? StrUtil.join("-", parentData.get(0).getLevelNo(), parentData.get(0).getRowNum()) : "0");
data.setUuid(uuid); 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) { for (BomNewOriginalExcelDTO data : excelContext) {
PlmBomToOriginalConvert convert = new PlmBomToOriginalConvert(); 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) { 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> * @param <T>
*/ */
public <T> void initMaterialForDrawdingNo 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()); List<String> drawingNos = list.stream().map(getDrawingNoFun).collect(Collectors.toList());
if (CollUtil.isNotEmpty(drawingNos)) { if (CollUtil.isNotEmpty(drawingNos)) {
List<BaseMaterialVO> materialList = SpringUtil.getBean(MaterialMainMapper.class).getMaterialByDrawingNo(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); String drawingNo = getDrawingNoFun.apply(t);
BaseMaterialVO materialVO = materialVOMap.get(drawingNo); BaseMaterialVO materialVO = materialVOMap.get(drawingNo);
if (materialVO != null) { 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,15 +57,20 @@ public class OriginalBomToEBomConvert extends BaseConvert {
List<BomNewEbomChildEntity> eBomChildResult = new ArrayList<>(); List<BomNewEbomChildEntity> eBomChildResult = new ArrayList<>();
public OriginalBomToEBomConvert(BomNewOriginalParentEntity inParent, List<BomOriginalListVO> inBomDetail) { public OriginalBomToEBomConvert(BomNewOriginalParentEntity inParent, List<BomOriginalListVO> inBomDetail) {
parent = Convert.convert(BomOriginalListVO.class, inParent); parent = Convert.convert(BomOriginalListVO.class, inParent);
parent.setBomRowId(parent.getRowId()); parent.setBomRowId(parent.getRowId());
bomDetail = inBomDetail; bomDetail = inBomDetail;
} }
public OriginalBomToEBomConvert(BomOriginalListVO inParent, List<BomOriginalListVO> inBomDetail) {
parent = inParent;
parent.setBomRowId(parent.getRowId());
bomDetail = inBomDetail;
}
public void convert() { public void convert() {
//checkData(); checkData();
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent));
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail);
@ -140,16 +145,21 @@ public class OriginalBomToEBomConvert extends BaseConvert {
if (CollUtil.isNotEmpty(materialBaseInfo)) { if (CollUtil.isNotEmpty(materialBaseInfo)) {
List<BomNewEbomChildEntity> oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEnt.getMaterialNo()); List<BomNewEbomChildEntity> oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEnt.getMaterialNo());
BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt);
//存在旧版本 //存在旧版本
if (CollUtil.isNotEmpty(oldParenChild)) { if (CollUtil.isNotEmpty(oldParenChild)) {
BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt);
//结构是否相同 //结构是否相同
if (!isSameEBom(oldParenChild, ImmutableList.of(newChild))) { if (!isSameEBom(oldParenChild, ImmutableList.of(newChild))) {
Long parentRowId = buildEBomParent(parentEnt); Long parentRowId = buildEBomParent(parentEnt);
newChild.setParentRowId(parentRowId); newChild.setParentRowId(parentRowId);
this.eBomChildResult.add(newChild); this.eBomChildResult.add(newChild);
} }
}} } else {
Long parentRowId = buildEBomParent(parentEnt);
newChild.setParentRowId(parentRowId);
this.eBomChildResult.add(newChild);
}
}
} else { } else {
buildEBomParent(parentEnt); buildEBomParent(parentEnt);
} }
@ -165,6 +175,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
/** /**
* 处理子级 * 处理子级
*
* @param parentEntity * @param parentEntity
* @param originalSourceEnum * @param originalSourceEnum
*/ */
@ -225,7 +236,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
.eq(BomNewEbomParentEntity::getLastVersionIs, 1).one(); .eq(BomNewEbomParentEntity::getLastVersionIs, 1).one();
BomNewEbomParentEntity eBomParent = new BomNewEbomParentEntity(); BomNewEbomParentEntity eBomParent = new BomNewEbomParentEntity();
BeanUtil.copyProperties(parentEnt, eBomParent, "materialGetType"); BeanUtil.copyProperties(parentEnt, eBomParent, "materialGetType");
eBomParent.setRowId(IdWorker.getId()); eBomParent.setRowId(parentEnt.getEBomRowId()>0?parentEnt.getEBomRowId(): IdWorker.getId());
eBomParent.setSource(EBomSourceEnum.FROM_BOM.getValue()); eBomParent.setSource(EBomSourceEnum.FROM_BOM.getValue());
eBomParent.setCurrentVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion())); eBomParent.setCurrentVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion()));
eBomParent.setConvertToEbomTime(LocalDateTime.now()); eBomParent.setConvertToEbomTime(LocalDateTime.now());
@ -297,7 +308,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos);
List<String> materialNoInMain = materialBaseInfo.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); List<String> materialNoInMain = materialBaseInfo.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList());
Set<String> difference = Sets.difference(new HashSet<>(materialNos), new HashSet<>(materialNoInMain)); 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) { public void convertOriginalBom(BomOriginalCadParentEntity inParent) {
childs = Convert.toList(BomOriginalPlmBomVO.class, SpringUtil.getBean(BomOriginalCadChildService.class).lambdaQuery().eq(BomOriginalCadChildEntity::getParentRowId, inParent.getRowId()).list()); childs = Convert.toList(BomOriginalPlmBomVO.class, SpringUtil.getBean(BomOriginalCadChildService.class).lambdaQuery().eq(BomOriginalCadChildEntity::getParentRowId, inParent.getRowId()).list());
parent = Convert.convert(BomOriginalPlmBomVO.class, inParent); 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(ImmutableList.of(parent));
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(childs); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(childs);