Merge branch 'refs/heads/feature/DM/nflg-bom' into feature/DM/nflg-bom-transition

This commit is contained in:
曹鹏飞 2024-05-22 11:51:58 +08:00
commit c798fc647d
1 changed files with 38 additions and 28 deletions

View File

@ -8,6 +8,7 @@ import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.nflg.product.bomnew.constant.OriginalEditStatusEnum; import com.nflg.product.bomnew.constant.OriginalEditStatusEnum;
import com.nflg.product.bomnew.constant.OriginalStatusEnum; import com.nflg.product.bomnew.constant.OriginalStatusEnum;
@ -110,40 +111,49 @@ public class BomNewOriginalParentV2Service extends ServiceImpl<BomNewOriginalPar
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public List<ImportOriginalBomVO> pullFromCadAndToEBom(String userCode) throws ExecutionException, InterruptedException { public List<ImportOriginalBomVO> pullFromCadAndToEBom(String userCode) throws ExecutionException, InterruptedException {
List<BomOriginalCadParentEntity> parents = originalCadParentService.lambdaQuery().eq(BomOriginalCadParentEntity::getStatus, 1).eq(BomOriginalCadParentEntity::getCreatedBy, userCode).list(); List<BomOriginalCadParentEntity> parents = originalCadParentService.lambdaQuery().eq(BomOriginalCadParentEntity::getStatus, 1).eq(BomOriginalCadParentEntity::getCreatedBy, userCode).list();
VUtils.isTure(CollUtil.isEmpty(parents)).throwMessage("没有你的数据,你无需转换"); List<ImportOriginalBomVO> toEBomResult = new ArrayList();
//检查物料编码在主数据中是否存在 try {
List<BomOriginalCadChildEntity> childs=originalCadChildService.lambdaQuery().in(BomOriginalCadChildEntity::getParentRowId, parents.stream().map(u->u.getRowId()).collect(Collectors.toList())).list();
checkMaterialHasExist(parents.stream().filter(u->StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList()));
checkMaterialHasExist(childs.stream().filter(u->StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList()));
//父级物料编码不能为空 VUtils.isTure(CollUtil.isEmpty(parents)).throwMessage("没有你的数据,你无需转换");
List<String> noMaterialNoChartNos = parents.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).map(u->u.getChartNo()).collect(Collectors.toList()); //检查物料编码在主数据中是否存在
VUtils.isTure(CollUtil.isNotEmpty(noMaterialNoChartNos)).throwMessage(StrUtil.join(",", noMaterialNoChartNos) + "物料编码为空,请检查(父级物料编码不能为空)"); List<BomOriginalCadChildEntity> childs = originalCadChildService.lambdaQuery().in(BomOriginalCadChildEntity::getParentRowId, parents.stream().map(u -> u.getRowId()).collect(Collectors.toList())).list();
checkMaterialHasExist(parents.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList()));
checkMaterialHasExist(childs.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList()));
PlmBomToOriginalConvertV2 convert = new PlmBomToOriginalConvertV2(); //父级物料编码不能为空
for (BomOriginalCadParentEntity parent : parents) { materialMainService.initMaterialForDrawdingNo(parents, BomOriginalCadParentEntity::getChartNo, BomOriginalCadParentEntity::setMaterialNo, BomOriginalCadParentEntity::setMaterialName);
//转原始BOM List<String> noMaterialNoChartNos = parents.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).map(u -> u.getChartNo()).collect(Collectors.toList());
convert.convertOriginalBom(parent); VUtils.isTure(CollUtil.isNotEmpty(noMaterialNoChartNos)).throwMessage(StrUtil.join(",", noMaterialNoChartNos) + "物料编码为空,请检查(父级物料编码不能为空)");
PlmBomToOriginalConvertV2 convert = new PlmBomToOriginalConvertV2();
for (BomOriginalCadParentEntity parent : parents) {
//转原始BOM
convert.convertOriginalBom(parent);
}
if (CollUtil.isNotEmpty(convert.getResultParent())) {
this.saveOrUpdateBatch(convert.getResultParent());
}
if (CollUtil.isNotEmpty(convert.getResultChild())) {
originalChildService.saveOrUpdateBatch(convert.getResultChild());
}
//转Ebom
if (CollUtil.isNotEmpty(convert.getResultParent())) {
toEBomResult = convertToEBomV2(convert.getResultParent().stream().map(u -> u.getRowId()).collect(Collectors.toList()));
}
} }
if (CollUtil.isNotEmpty(convert.getResultParent())) { catch (Exception ex){
this.saveOrUpdateBatch(convert.getResultParent()); VUtils.isTure(true).throwMessage("转换失败:"+ex.getMessage());
} }
if (CollUtil.isNotEmpty(convert.getResultChild())) { finally {
originalChildService.saveOrUpdateBatch(convert.getResultChild()); //删除cad临时表数据
} List<Integer> delRowIds = parents.stream().map(BomOriginalCadParentEntity::getRowId).collect(Collectors.toList());
//转Ebom if (CollUtil.isNotEmpty(delRowIds)) {
List<ImportOriginalBomVO> toEBomResult=new ArrayList(); originalCadParentService.getBaseMapper().deleteBatchIds(delRowIds);
if (CollUtil.isNotEmpty(convert.getResultParent())) { originalCadParentService.getBaseMapper().delChildByParentRowIds(delRowIds);
toEBomResult = convertToEBomV2(convert.getResultParent().stream().map(u -> u.getRowId()).collect(Collectors.toList())); }
}
//删除cad临时表数据
List<Integer> delRowIds = parents.stream().map(BomOriginalCadParentEntity::getRowId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(delRowIds)) {
originalCadParentService.getBaseMapper().deleteBatchIds(delRowIds);
originalCadParentService.getBaseMapper().delChildByParentRowIds(delRowIds);
} }
return toEBomResult; return toEBomResult;