From 055647659bc97c3dd37d6460831c7684f4e1d4d5 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Fri, 5 Jan 2024 18:33:16 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-ITSM-?= =?UTF-8?q?CMDB=E5=90=8C=E6=AD=A5=E8=8A=82=E7=82=B9-=E8=B5=B7=E5=A7=8B?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=BA=E6=8A=BD=E8=B1=A1=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=85=B6=E5=AD=90=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E9=85=8D=E7=BD=AE=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1062110417616896]后端-ITSM-CMDB同步节点-起始模式为抽象模型时,增加其子模型配置入口 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1062110417616896 --- .../stephandler/CmdbSyncProcessComponent.java | 2 +- .../CmdbSyncProcessUtilHandler.java | 60 +++++++++++++++++-- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java index 13a86487..3113fd7c 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -1261,7 +1261,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { newConfigObj.setCiId(targetCiConfig.getCiId()); newConfigObj.setCiName(targetCiConfig.getCiName()); newConfigObj.setCiLabel(targetCiConfig.getCiLabel()); - newConfigObj.setIsStart(targetCiConfig.getIsStart()); + newConfigObj.setIsStart(currentConfig.getIsStart()); newConfigObj.setCiIcon(targetCiConfig.getCiIcon()); newConfigObj.setEditMode(targetCiConfig.getEditMode()); } diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessUtilHandler.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessUtilHandler.java index 2cc8460d..22b3f925 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessUtilHandler.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessUtilHandler.java @@ -45,10 +45,8 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Service public class CmdbSyncProcessUtilHandler extends ProcessStepInternalHandlerBase { @@ -520,7 +518,7 @@ public class CmdbSyncProcessUtilHandler extends ProcessStepInternalHandlerBase { for (int i = 0; i < valueList.size(); i++) { if (valueList.get(i) == null) { logger.warn("ciEntityConfig.configList[" + name + "].mappingList[y].valueList[z] is null"); - throw new CiEntityConfigIllegalException("ciEntityConfig.configList[" + name + "].mappingList[y].valueList[0] is null"); + throw new CiEntityConfigIllegalException("ciEntityConfig.configList[" + name + "].mappingList[y].valueList[z] is null"); } } if (CollectionUtils.isNotEmpty(filterList)) { @@ -576,6 +574,58 @@ public class CmdbSyncProcessUtilHandler extends ProcessStepInternalHandlerBase { } } } + + Set usedUuidList = new HashSet<>(); + List allUuidList = configList.stream().map(CiEntitySyncConfigVo::getUuid).collect(Collectors.toList()); + for (CiEntitySyncConfigVo ciEntitySyncConfigVo : configList) { + String ciName = ciEntitySyncConfigVo.getCiName(); + String name = ciName; + String ciLabel = ciEntitySyncConfigVo.getCiLabel(); + name += "(" + ciLabel + ")"; + JSONArray children = ciEntitySyncConfigVo.getChildren(); + if (CollectionUtils.isNotEmpty(children)) { + for (int i = 0; i < children.size(); i++) { + JSONObject child = children.getJSONObject(i); + String ciEntityUuid = child.getString("ciEntityUuid"); + if (!allUuidList.contains(ciEntityUuid)) { + logger.warn("ciEntityConfig.configList[" + name + "].children[i].ciEntityUuid = '" + ciEntityUuid + "' is illegal"); + throw new CiEntityConfigIllegalException("ciEntityConfig.configList[" + name + "].children[i].ciEntityUuid = '" + ciEntityUuid + "' is illegal"); + } + usedUuidList.add(ciEntityUuid); + } + } + List mappingList = ciEntitySyncConfigVo.getMappingList(); + if (CollectionUtils.isNotEmpty(mappingList)) { + for (CiEntitySyncMappingVo mapping : mappingList) { + if (Objects.equals(mapping.getMappingMode(), "new")) { + JSONArray valueList = mapping.getValueList(); + for (int i = 0; i < valueList.size(); i++) { + JSONObject valueObj = valueList.getJSONObject(i); + String type = valueObj.getString("type"); + if (!Objects.equals(type, "new")) { + continue; + } + String ciEntityUuid = valueObj.getString("ciEntityUuid"); + if (!allUuidList.contains(ciEntityUuid)) { + logger.warn("ciEntityConfig.configList[" + name + "].mappingList[y].valueList[z].ciEntityUuid = '" + ciEntityUuid + "' is illegal"); + throw new CiEntityConfigIllegalException("ciEntityConfig.configList[" + name + "].mappingList[y].valueList[z].ciEntityUuid = '" + ciEntityUuid + "' is illegal"); + } + usedUuidList.add(ciEntityUuid); + } + } + } + } + } + allUuidList.removeAll(usedUuidList); + if (CollectionUtils.isNotEmpty(allUuidList)) { + for (int i = configList.size() - 1; i >= 0; i--) { + CiEntitySyncConfigVo ciEntitySyncConfigVo = configList.get(i); + if (allUuidList.contains(ciEntitySyncConfigVo.getUuid()) && !Objects.equals(ciEntitySyncConfigVo.getIsStart(), 1)) { + logger.warn("ciEntitySyncConfig is not used:" + JSONObject.toJSONString(ciEntitySyncConfigVo)); + configList.remove(i); + } + } + } return ciEntitySyncVo; } } -- Gitee