1.问题修复
This commit is contained in:
parent
ff395e626a
commit
8591089de2
|
|
@ -176,6 +176,9 @@ public class BomOriginalListVO extends BaseMaterialVO {
|
|||
@ApiModelProperty("是否删除 0-否 1-是")
|
||||
private Integer delIs=0;
|
||||
|
||||
@ApiModelProperty("转换后Ebom行ID")
|
||||
private Long eBomRowId=0L;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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,13 +103,13 @@ 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);
|
||||
}
|
||||
//合并相同编码的物料
|
||||
// List<BomOriginalListVO> mergeResult = mergeBOM(parentChild);
|
||||
// List<BomOriginalListVO> mergeResult = mergeBOM(parentChild);
|
||||
Long parentRowId = buildEBomParent(parentEnt);
|
||||
buildEBomChild(parentChild, parentRowId);
|
||||
} else { //无子级
|
||||
|
|
@ -140,18 +145,23 @@ public class OriginalBomToEBomConvert extends BaseConvert {
|
|||
if (CollUtil.isNotEmpty(materialBaseInfo)) {
|
||||
|
||||
List<BomNewEbomChildEntity> oldParenChild = SpringUtil.getBean(BomNewEbomChildMapper.class).getChildByMaterialNo(parentEnt.getMaterialNo());
|
||||
BomNewEbomChildEntity newChild = buildCommonEbomChildEntity(materialBaseInfo.get(0), parentEnt);
|
||||
//存在旧版本
|
||||
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);
|
||||
newChild.setParentRowId(parentRowId);
|
||||
this.eBomChildResult.add(newChild);
|
||||
}
|
||||
}}
|
||||
} else {
|
||||
buildEBomParent(parentEnt);
|
||||
} else {
|
||||
Long parentRowId = buildEBomParent(parentEnt);
|
||||
newChild.setParentRowId(parentRowId);
|
||||
this.eBomChildResult.add(newChild);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
buildEBomParent(parentEnt);
|
||||
}
|
||||
} 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) {
|
||||
//一般零部件
|
||||
|
|
@ -212,7 +223,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
|
|||
childEntity.setUnitWeight(parent.getUnitWeight());
|
||||
childEntity.setNum(parent.getUnitWeight());
|
||||
childEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||
// this.eBomChildResult.add(childEntity);
|
||||
// this.eBomChildResult.add(childEntity);
|
||||
return childEntity;
|
||||
|
||||
}
|
||||
|
|
@ -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) + "物料编码在主数据平台不存在,请检查更正");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue