diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java index 76f9b2a2..a4229647 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java @@ -110,7 +110,10 @@ public class DQBomImportService { Set materialNos = parents.stream().map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toSet()); List oldParents = dQBomParentService.getLatestByMaterialNo(materialNos); parents.forEach(p -> { - BomNewDQbomParentEntity oldParent = oldParents.stream().filter(op -> op.getMaterialNo().equals(p.getMaterialNo())).findFirst().orElse(null); + BomNewDQbomParentEntity oldParent = oldParents.stream() + .filter(op -> op.getMaterialNo().equals(p.getMaterialNo())) + .findFirst() + .orElse(null); if (!Objects.isNull(oldParent) && Objects.equals(oldParent.getStatus(), DQBomStatusEnum.WAIT_CONVERT.getValue())) { dQBomParentService.getBaseMapper().deleteById(oldParent.getRowId()); dQBomChildService.deleteAllChildren(oldParent.getRowId()); @@ -119,7 +122,10 @@ public class DQBomImportService { dQBomParentService.setLastVersionIs0(materialNos); dQBomParentService.saveBatch(parents); dQBomChildService.saveBatch(children); - BomNewDQbomParentEntity root = parents.stream().filter(p -> p.getRootIs() == 1).findFirst().orElseThrow(() -> new NflgBusinessException(STATE.BusinessError, "根节点不存在")); + BomNewDQbomParentEntity root = parents.stream() + .filter(p -> p.getRootIs() == 1) + .findFirst() + .orElseThrow(() -> new NflgBusinessException(STATE.BusinessError, "根节点不存在")); dQBomService.checkException(root.getRowId()); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java index 1f01f992..050ba092 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java @@ -12,7 +12,6 @@ import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Sets; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParamDTO; @@ -438,13 +437,17 @@ public class DQBomService { BomNewDQbomParentEntity root = dQBomParentService.getById(rootBomRowId); VUtils.isTure(Objects.isNull(root)).throwMessage("未找到数据"); + VUtils.isTure(root.getStatus() == 2).throwMessage("已转pbom不能再次转换"); + if (Objects.equals(root.getExceptionStatus(), EBomExceptionStatusEnum.OK.getValue())) { + //如果没有异常,则再进行一次异常检查,避免手动添加数据后没做异常检查就转pbom + checkException(rootBomRowId); + } VUtils.isTure(!Objects.equals(root.getExceptionStatus(), EBomExceptionStatusEnum.OK.getValue())) .throwMessage("异常状态不能转pbom"); - VUtils.isTure(root.getStatus() == 2).throwMessage("已转pbom不能再次转换"); List parents = new ArrayList<>(); List children = new ArrayList<>(); - buildPbom(root, parents, children); + buildTree(root, parents, children); dQBomParentService.updateBatchById(parents); dQBomChildService.updateBatchById(children); savePbomParents(parents); @@ -467,12 +470,18 @@ public class DQBomService { c.setModifyTime(null); c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId()); if (CollUtil.isNotEmpty(materialBaseInfos)) { - BaseMaterialVO materialVO = materialBaseInfos.stream().filter(m -> m.getMaterialNo().equals(c.getMaterialNo())).findFirst().orElse(null); + BaseMaterialVO materialVO = materialBaseInfos.stream() + .filter(m -> m.getMaterialNo().equals(c.getMaterialNo())) + .findFirst() + .orElse(null); if (!Objects.isNull(materialVO)) { c.setMaterialCategoryCode(materialVO.getMaterialCategoryCode()); } } - BomNewDQbomParentEntity parent = parents.stream().filter(p -> p.getMaterialNo().equals(c.getMaterialNo())).findFirst().orElse(null); + BomNewDQbomParentEntity parent = parents.stream() + .filter(p -> p.getMaterialNo().equals(c.getMaterialNo())) + .findFirst() + .orElse(null); if (!Objects.isNull(parent)) { c.setBomVersionRowId(parent.getRowId()); } @@ -496,7 +505,7 @@ public class DQBomService { bomNewPbomParentService.saveBatch(pparents); } - private void buildPbom(BomNewDQbomParentEntity parent, List parents, List children) { + private void buildTree(BomNewDQbomParentEntity parent, List parents, List children) { parent.setStatus(2); parent.setConvertToPbomTime(LocalDateTime.now()); parent.setModifyTime(LocalDateTime.now()); @@ -521,24 +530,25 @@ public class DQBomService { VUtils.isTure(true).throwMessage(StrUtil.format("{}的当前版本为{},比pbom中版本{}低", parent.getMaterialNo() , parent.getCurrentVersion(), pp.getCurrentVersion())); } else { - if (pp.getStatus() == 4) { - List dqChildren = getChild(parent.getRowId()); - Set pChildren = bomNewPbomChildService.lambdaQuery() - .select(BomNewPbomChildEntity::getMaterialNo) - .eq(BomNewPbomChildEntity::getParentRowId, pp.getRowId()) - .list() - .stream() - .map(BomNewPbomChildEntity::getMaterialNo) - .collect(Collectors.toSet()); - if (dqChildren.size() != pChildren.size() - || !Sets.difference(dqChildren.stream().map(BomNewDQbomVO::getMaterialNo).collect(Collectors.toSet()), pChildren).isEmpty()) { - parent.setCurrentVersion(VersionUtil.getNextVersion(parent.getCurrentVersion())); - pp.setLastVersionIs(0); - bomNewPbomParentService.updateById(pp); - } + if (pp.getStatus() >= 4) { + // List dqChildren = getChild(parent.getRowId()); + // Set pChildren = bomNewPbomChildService.lambdaQuery() + // .select(BomNewPbomChildEntity::getMaterialNo) + // .eq(BomNewPbomChildEntity::getParentRowId, pp.getRowId()) + // .list() + // .stream() + // .map(BomNewPbomChildEntity::getMaterialNo) + // .collect(Collectors.toSet()); + // if (dqChildren.size() != pChildren.size() + // || !Sets.difference(dqChildren.stream().map(BomNewDQbomVO::getMaterialNo).collect(Collectors.toSet()), pChildren).isEmpty()) { + parent.setCurrentVersion(VersionUtil.getNextVersion(pp.getCurrentVersion())); + pp.setLastVersionIs(0); + bomNewPbomParentService.updateById(pp); + // } } else { + parent.setCurrentVersion(pp.getCurrentVersion()); bomNewPbomParentService.getBaseMapper().deleteById(pp.getRowId()); - bomNewPbomChildService.getBaseMapper().delete(new LambdaQueryWrapper() + bomNewPbomChildService.getBaseMapper().delete(bomNewPbomChildService.lambdaQuery() .eq(BomNewPbomChildEntity::getParentRowId, pp.getRowId())); } } @@ -548,7 +558,7 @@ public class DQBomService { .in(BomNewDQbomParentEntity::getMaterialNo, cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toList())) .eq(BomNewDQbomParentEntity::getStatus, 1) .list() - .forEach(p -> buildPbom(p, parents, children)); + .forEach(p -> buildTree(p, parents, children)); } private int versionCompare(String version1, String version2) {