diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index f726e985..86e4ff70 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -320,6 +320,19 @@ public class EbomApi extends BaseApi { } + @PostMapping("intiException") + @ApiOperation("初始化错误类型") + public ResultVO intiException(@RequestParam("bomRowId") Long bomRowId) throws ExecutionException, InterruptedException { + + bomNewEbomParentService.checkAndSaveEBomException(bomRowId ); + return ResultVO.success(true); + } + + + + + + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomChildVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomChildVO.java index d8cef019..9735d835 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomChildVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomChildVO.java @@ -75,8 +75,7 @@ public class BomNewEbomChildVO extends BaseMaterialVO implements Serializable { */ @ApiModelProperty(value = "项目类别输入方式: 0-自动匹配 1-手工录入 3-来自物料主数据 4-来自历史统计") private Integer projectTypeInputType; - @ApiModelProperty(value = "项目类别") - private String projectType; + /** * 创建人工号 */ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 00514848..49d4516a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -345,8 +345,6 @@ public class BomNewEbomParentService extends ServiceImpl visited; // 使用Integer类型的哈希码 + private Set nodes; + + public DependencyChecker() { + visited = new HashMap<>(); + nodes = new HashSet<>(); + } + + public void addDependency(String child, String parent) { + nodes.add(child); + nodes.add(parent); + } + + public boolean hasCycle() { + for (String node : nodes) { + if (!visited.put(node.hashCode(), false) == false) { + // 当前节点已经被访问过,存在循环依赖 + return true; + } + } + return false; + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java index e1f0a904..3a864b91 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java @@ -249,7 +249,7 @@ public class EBomEdit { // if(StrUtil.equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue(),child.getProjectType())){ // child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_9.getValue()); // } -// + // if(StrUtil.equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_F.getValue(),child.getProjectType())){ // child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_10.getValue()); // } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index 98a32f2c..d90e329f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -83,8 +83,8 @@ public abstract class VirtualPackageBase { parent.setMaterialDesc(vMaterialDesc); parent.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent)?oldParent.getCurrentVersion():"")); parent.setVirtualPackageIs(1); - parent.setProjectType("L"); - parent.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue()); +// parent.setProjectType("L"); +// parent.setProjectTypeInputType(ProjectTypeInputTypeEnum.AUTO_MATCH.getValue()); parent.setShouldBomExist(1); parent.setBomExist(1); parent.setSourceRowId(0L); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java index 3474ce84..43d27205 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java @@ -296,7 +296,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { 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.setCurrentVersion(VersionUtil.getNextVersion(Objects.isNull(ebom) ? "" : VersionUtil.getNextVersion(ebom.getCurrentVersion()) )); eBomParent.setConvertToEbomTime(LocalDateTime.now()); eBomParent.setSourceRowId(parentEnt.getBomRowId()); eBomParent.setLastVersionIs(1); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/TreeUtils.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/TreeUtils.java index fe29c2e7..567400b5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/TreeUtils.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/TreeUtils.java @@ -1,7 +1,8 @@ package com.nflg.product.bomnew.util; import cn.hutool.core.collection.CollUtil; - +import com.nflg.product.bomnew.service.domain.EBom.DependencyChecker; + import javax.validation.constraints.NotNull; import java.util.*; @@ -127,22 +128,25 @@ public class TreeUtils { * @return List 存在循环依赖的具体行-rowId */ public static List checkParentChildRelationship(List list ,Function getParentFun, Function getChildFun,Function getRowIdFun) { - Set parents = new HashSet<>(); - List result=new ArrayList<>(); + DependencyChecker checker = new DependencyChecker(); for (T data : list) { String parent = getParentFun.apply(data); String child = getChildFun.apply(data); + checker.addDependency(child, parent); - if (parents.contains(child)) { - result.add(getRowIdFun.apply(data)); - } - - parents.add(parent); } - return result; + if (checker.hasCycle()) { + System.out.println("存在循环依赖"); + } else { + System.out.println("不存在循环依赖"); + } + + + + return null; } }