From e85f625754d9fde8ac8177b79daa7763ff776071 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Wed, 3 Sep 2025 19:49:21 +0800 Subject: [PATCH 01/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/node/UpdateNodesByFilterHandler.java | 33 ++++++++----------- .../job/node/UpdateNodesByInputHandler.java | 11 +++---- .../job/node/UpdateNodesSelectHandler.java | 12 ++----- .../service/AutoexecJobActionServiceImpl.java | 1 - .../service/AutoexecJobServiceImpl.java | 7 ++++ 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index f6633094..681f5b49 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -17,7 +17,6 @@ package neatlogic.module.autoexec.job.node; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; @@ -40,7 +39,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Objects; @Service @@ -50,6 +48,7 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { @Resource private AutoexecResourceMapper autoexecResourceMapper; private static final Logger logger = LoggerFactory.getLogger(UpdateNodesByFilterHandler.class); + @Override public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; @@ -80,33 +79,29 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { JSONObject filterJson = executeNodeConfigVo.getFilter(); boolean isHasNode = false; if (MapUtils.isNotEmpty(filterJson)) { + ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); //如果作业层面的节点则补充前置filter if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { AutoexecCombopConfigVo config = jobVo.getConfig(); - JSONObject preFilter = null; - if (config != null && config.getExecuteConfig() != null && config.getExecuteConfig().getCombopNodeConfig() != null && MapUtils.isNotEmpty(config.getExecuteConfig().getCombopNodeConfig().getFilter())) { - if (Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue())) { - preFilter = config.getExecuteConfig().getCombopNodeConfig().getFilter(); - //以preFilter为主 - for (Map.Entry entry : preFilter.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - if (value == null || (value instanceof JSONArray && CollectionUtils.isEmpty((JSONArray) value))) { - continue; - } - if (filterJson.containsKey(key)) { - filterJson.put(key, value); - } - } - } + if (config != null && config.getExecuteConfig() != null + && config.getExecuteConfig().getPreCondition() != null + && Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue()) + ) { + searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); } } - ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); + searchVo.setMaxPageSize(50000); searchVo.setPageSize(50000); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); List idList; StringBuilder sqlSb = new StringBuilder(); + //是否存在前置条件 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.setPreConditionWhereSql(preSqlSb.toString()); + } if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo, sqlSb.toString()); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index 2452568a..ea814af5 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -17,7 +17,6 @@ package neatlogic.module.autoexec.job.node; -import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; @@ -32,7 +31,6 @@ import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -75,18 +73,17 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { throw new AutoexecInputOutOfCountException(1000); } nodeVoList.forEach(o -> ipPortNameList.add(new ResourceVo(o.getIp(), o.getPort(), o.getName()))); - JSONObject preFilter = null; + ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { //如果作业层面的节点则补充前置filter AutoexecCombopConfigVo config = jobVo.getConfig(); if (config != null && config.getExecuteConfig() != null - && config.getExecuteConfig().getCombopNodeConfig() != null - && MapUtils.isNotEmpty(config.getExecuteConfig().getCombopNodeConfig().getFilter()) + && config.getExecuteConfig().getPreCondition() != null && (Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue()))) { - preFilter = config.getExecuteConfig().getCombopNodeConfig().getFilter(); + searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); } } - ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preFilter); + IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); Set resourceIdSet = new HashSet<>(); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index 625cc587..f06bc7ca 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -17,9 +17,7 @@ package neatlogic.module.autoexec.job.node; -import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; -import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -28,7 +26,6 @@ import neatlogic.framework.autoexec.job.node.IUpdateNodes; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -68,17 +65,14 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { List nodeVoList = executeNodeConfigVo.getSelectNodeList(); boolean isHasNode = false; if (CollectionUtils.isNotEmpty(nodeVoList)) { - JSONObject preFilter = null; + ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { //如果作业层面的节点则补充前置filter AutoexecCombopConfigVo config = jobVo.getConfig(); - if (config != null && config.getExecuteConfig() != null && config.getExecuteConfig().getCombopNodeConfig() != null && MapUtils.isNotEmpty(config.getExecuteConfig().getCombopNodeConfig().getFilter())) { - if (Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue())) { - preFilter = config.getExecuteConfig().getCombopNodeConfig().getFilter(); - } + if (config != null && config.getExecuteConfig() != null && config.getExecuteConfig().getPreCondition() != null) { + searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); } } - ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preFilter); searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); isHasNode = autoexecJobService.updateNode(jobVo, userName, protocolId, searchVo); } diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobActionServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobActionServiceImpl.java index 2ba11b21..eeeef2d6 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobActionServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobActionServiceImpl.java @@ -488,7 +488,6 @@ public class AutoexecJobActionServiceImpl implements AutoexecJobActionService, I if (combopExecuteConfigVo == null) { combopExecuteConfigVo = new AutoexecCombopExecuteConfigVo(); } - combopExecuteConfigVo.setCombopNodeConfig(combopExecuteConfigVo.getExecuteNodeConfig()); if (autoexecJobParam.getExecuteConfig().getProtocolId() != null) { combopExecuteConfigVo.setProtocolId(autoexecJobParam.getExecuteConfig().getProtocolId()); } diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index 2637e164..025ee1f0 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -2191,6 +2191,13 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC boolean isHasNode = false; StringBuilder sqlSb = new StringBuilder(); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + //是否存在前置条件 + if(searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()){ + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb,searchVo.getPreCondition()); + searchVo.setPreConditionWhereSql(preSqlSb.toString()); + } + if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo, sqlSb.toString()); -- Gitee From 602548186be8d6bf4030424d2c74ab861276861d Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Thu, 4 Sep 2025 12:12:00 +0800 Subject: [PATCH 02/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/node/UpdateNodesByFilterHandler.java | 16 ++++++++-------- .../job/node/UpdateNodesByInputHandler.java | 16 ++++++++-------- .../job/node/UpdateNodesByParamsHandler.java | 16 ++++++++-------- .../node/UpdateNodesByPrePhaseOutputHandler.java | 16 ++++++++-------- .../job/node/UpdateNodesSelectHandler.java | 16 ++++++++-------- .../autoexec/service/AutoexecJobServiceImpl.java | 3 +-- 6 files changed, 41 insertions(+), 42 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 681f5b49..8a52ddfa 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -21,7 +21,7 @@ import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; @@ -50,15 +50,15 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { private static final Logger logger = LoggerFactory.getLogger(UpdateNodesByFilterHandler.class); @Override - public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - if (executeNodeConfigVo == null) { + if (executeConfigVo == null) { return false; } - if (MapUtils.isNotEmpty(executeNodeConfigVo.getFilter())) { + if (executeConfigVo.getExecuteNodeConfig() != null && MapUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getFilter())) { logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------start"); //long updateNodeResourceByFilter = System.currentTimeMillis(); - isHasNode = updateNodeResourceByFilter(executeNodeConfigVo, jobVo, userName, protocolId); + isHasNode = updateNodeResourceByFilter(executeConfigVo, jobVo, userName, protocolId); //System.out.println((System.currentTimeMillis() - updateNodeResourceByFilter) + " ##updateNodeResourceByFilter:-------------------------------------------------------------------------------"); logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------end"); @@ -70,13 +70,13 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { * filter * 根据过滤器 更新节点 * - * @param executeNodeConfigVo 执行节点配置 + * @param executeConfigVo 执行节点配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - public boolean updateNodeResourceByFilter(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - JSONObject filterJson = executeNodeConfigVo.getFilter(); + public boolean updateNodeResourceByFilter(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + JSONObject filterJson = executeConfigVo.getExecuteNodeConfig().getFilter(); boolean isHasNode = false; if (MapUtils.isNotEmpty(filterJson)) { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index ea814af5..70070bbd 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -20,7 +20,7 @@ package neatlogic.module.autoexec.job.node; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.exception.job.AutoexecInputOutOfCountException; @@ -43,14 +43,14 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { AutoexecJobService autoexecJobService; @Override - public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - if (executeNodeConfigVo == null) { + if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { return false; } - if (CollectionUtils.isNotEmpty(executeNodeConfigVo.getInputNodeList())) { - isHasNode = updateNodeResourceByInput(executeNodeConfigVo, jobVo, userName, protocolId); + if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getInputNodeList())) { + isHasNode = updateNodeResourceByInput(executeConfigVo, jobVo, userName, protocolId); } return isHasNode; } @@ -59,13 +59,13 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { * inputNodeList、selectNodeList * 根据输入和选择节点 更新作业节点 * - * @param executeNodeConfigVo 执行节点配置 + * @param executeConfigVo 执行节点配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - private boolean updateNodeResourceByInput(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - List nodeVoList = executeNodeConfigVo.getInputNodeList(); + private boolean updateNodeResourceByInput(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + List nodeVoList = executeConfigVo.getExecuteNodeConfig().getInputNodeList(); boolean isHasNode = false; List ipPortNameList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(nodeVoList)) { diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java index 056201c6..38fe9396 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java @@ -20,7 +20,7 @@ package neatlogic.module.autoexec.job.node; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.dto.AutoexecParamVo; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.exception.job.JobParamNodeNullException; import neatlogic.framework.autoexec.job.node.IUpdateNodes; @@ -46,14 +46,14 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { AutoexecJobService autoexecJobService; @Override - public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - if (executeNodeConfigVo == null) { + if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { return false; } - if (CollectionUtils.isNotEmpty(executeNodeConfigVo.getParamList())) { - isHasNode = updateNodeResourceByParam(jobVo, executeNodeConfigVo, userName, protocolId); + if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getParamList())) { + isHasNode = updateNodeResourceByParam(jobVo, executeConfigVo, userName, protocolId); } return isHasNode; } @@ -62,13 +62,13 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { * param * 根据运行参数中定义的节点参数 更新作业节点 * - * @param executeNodeConfigVo 执行节点配置 + * @param executeConfigVo 执行节点配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - private boolean updateNodeResourceByParam(AutoexecJobVo jobVo, AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, String userName, Long protocolId) { - List paramList = executeNodeConfigVo.getParamList(); + private boolean updateNodeResourceByParam(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { + List paramList = executeConfigVo.getExecuteNodeConfig().getParamList(); if (CollectionUtils.isNotEmpty(paramList)) { List runTimeParamList = jobVo.getRunTimeParamList(); Set resourceIdSet = new HashSet<>(); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index e69abca5..395fe2a8 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -22,7 +22,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.ExecMode; import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobPhaseNodeVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobPhaseOperationVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -58,14 +58,14 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { private MongoTemplate mongoTemplate; @Override - public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - if (executeNodeConfigVo == null) { + if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { return false; } - if (CollectionUtils.isNotEmpty(executeNodeConfigVo.getPreOutputList())) { - isHasNode = updateNodeResourceByPrePhaseOutput(jobVo, executeNodeConfigVo, userName, protocolId); + if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getPreOutputList())) { + isHasNode = updateNodeResourceByPrePhaseOutput(jobVo, executeConfigVo, userName, protocolId); } return isHasNode; } @@ -74,13 +74,13 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { * param * 根据上游阶段出参 更新作业节点 * - * @param executeNodeConfigVo 执行节点配置 + * @param executeConfigVo 执行节点配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - private boolean updateNodeResourceByPrePhaseOutput(AutoexecJobVo jobVo, AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, String userName, Long protocolId) { - List preOutputList = executeNodeConfigVo.getPreOutputList(); + private boolean updateNodeResourceByPrePhaseOutput(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { + List preOutputList = executeConfigVo.getExecuteNodeConfig().getPreOutputList(); if (CollectionUtils.isEmpty(preOutputList) && preOutputList.size() != 3) { throw new AutoexecJobUpdateNodeByPreOutPutListException(jobVo); } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index f06bc7ca..1d28c957 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -19,7 +19,7 @@ package neatlogic.module.autoexec.job.node; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; @@ -40,14 +40,14 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { AutoexecJobService autoexecJobService; @Override - public boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { + public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - if (executeNodeConfigVo == null) { + if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { return false; } - if (CollectionUtils.isNotEmpty(executeNodeConfigVo.getSelectNodeList())) { - isHasNode = updateNodeResourceBySelect(jobVo, executeNodeConfigVo, userName, protocolId); + if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getSelectNodeList())) { + isHasNode = updateNodeResourceBySelect(jobVo, executeConfigVo, userName, protocolId); } return isHasNode; } @@ -56,13 +56,13 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { * selectNodeList * 根据输入和选择节点 更新作业节点 * - * @param executeNodeConfigVo 执行节点配置 + * @param executeConfigVo 执行节点配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - private boolean updateNodeResourceBySelect(AutoexecJobVo jobVo, AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, String userName, Long protocolId) { - List nodeVoList = executeNodeConfigVo.getSelectNodeList(); + private boolean updateNodeResourceBySelect(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { + List nodeVoList = executeConfigVo.getExecuteNodeConfig().getSelectNodeList(); boolean isHasNode = false; if (CollectionUtils.isNotEmpty(nodeVoList)) { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index 025ee1f0..b55cbc59 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -1049,8 +1049,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } jobVo.getExecutePhase().setLcd(updateTime); - AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo = combopExecuteConfigVo.getExecuteNodeConfig(); - boolean isHasNode = UpdateNodesFactory.updateNodes(executeNodeConfigVo, jobVo, userName, protocolId); + boolean isHasNode = UpdateNodesFactory.updateNodes(combopExecuteConfigVo, jobVo, userName, protocolId); logger.debug("##AfterUpdateNodes:-------------------------------------------------------------------------------start"); //long ccc = System.currentTimeMillis(); AutoexecJobPhaseVo jobPhaseVo = jobVo.getExecutePhase(); -- Gitee From e4e29d4dea715349b09664b50bab87533734e978 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Thu, 4 Sep 2025 16:05:35 +0800 Subject: [PATCH 03/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoexec/job/node/UpdateNodesByFilterHandler.java | 9 ++++----- .../autoexec/job/node/UpdateNodesByInputHandler.java | 9 +++++---- .../autoexec/job/node/UpdateNodesSelectHandler.java | 6 ++++-- .../module/autoexec/service/AutoexecJobServiceImpl.java | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 8a52ddfa..9efe135b 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -17,9 +17,9 @@ package neatlogic.module.autoexec.job.node; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; -import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -84,10 +84,9 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { AutoexecCombopConfigVo config = jobVo.getConfig(); if (config != null && config.getExecuteConfig() != null - && config.getExecuteConfig().getPreCondition() != null - && Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue()) + && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) ) { - searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); + searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); } } @@ -100,7 +99,7 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { StringBuilder preSqlSb = new StringBuilder(); searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.setPreConditionWhereSql(preSqlSb.toString()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); } if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index 70070bbd..ced89686 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -17,8 +17,8 @@ package neatlogic.module.autoexec.job.node; +import com.alibaba.fastjson.JSON; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; -import neatlogic.framework.autoexec.constvalue.CombopNodeSpecify; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -31,6 +31,7 @@ import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -78,9 +79,9 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { //如果作业层面的节点则补充前置filter AutoexecCombopConfigVo config = jobVo.getConfig(); if (config != null && config.getExecuteConfig() != null - && config.getExecuteConfig().getPreCondition() != null - && (Objects.equals(config.getExecuteConfig().getWhenToSpecify(), CombopNodeSpecify.RUNTIME.getValue()))) { - searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); + && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) + ) { + searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); } } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index 1d28c957..cb5eee04 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -17,6 +17,7 @@ package neatlogic.module.autoexec.job.node; +import com.alibaba.fastjson.JSON; import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; @@ -26,6 +27,7 @@ import neatlogic.framework.autoexec.job.node.IUpdateNodes; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -69,8 +71,8 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { //如果作业层面的节点则补充前置filter AutoexecCombopConfigVo config = jobVo.getConfig(); - if (config != null && config.getExecuteConfig() != null && config.getExecuteConfig().getPreCondition() != null) { - searchVo.setPreCondition(config.getExecuteConfig().getPreCondition()); + if (config != null && config.getExecuteConfig() != null && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition())) { + searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); } } searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index b55cbc59..8ef178ba 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -2194,7 +2194,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC if(searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()){ StringBuilder preSqlSb = new StringBuilder(); searchVo.getPreCondition().buildConditionWhereSql(preSqlSb,searchVo.getPreCondition()); - searchVo.setPreConditionWhereSql(preSqlSb.toString()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); } if (searchVo.isCustomCondition()) { -- Gitee From e459f5ad7ea07c1ddd360950d66073666a81fab2 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Thu, 4 Sep 2025 16:53:14 +0800 Subject: [PATCH 04/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/autoexec/job/node/UpdateNodesByFilterHandler.java | 3 ++- .../module/autoexec/service/AutoexecJobServiceImpl.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 9efe135b..d9eca0d1 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -103,7 +103,8 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { } if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); - idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo, sqlSb.toString()); + searchVo.setConditionWhereSql(sqlSb.toString()); + idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); } else { idList = resourceCrossoverMapper.getResourceIdList(searchVo); } diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index 8ef178ba..e1bec0c3 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -2199,7 +2199,8 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); - count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo, sqlSb.toString()); + searchVo.setConditionWhereSql(sqlSb.toString()); + count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo); } else { count = resourceCrossoverMapper.getResourceCount(searchVo); } @@ -2209,7 +2210,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC searchVo.setCurrentPage(i); List idList; if (searchVo.isCustomCondition()) { - idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo, sqlSb.toString()); + idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); } else { idList = resourceCrossoverMapper.getResourceIdList(searchVo); } -- Gitee From 4cc48028a789afe049f35296be4bf9cb8dd27a8d Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 5 Sep 2025 16:47:13 +0800 Subject: [PATCH 05/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1500817822023680]自动化组合工具“全局“、“阶段组”和“阶段”都支持选择执行目标支持“前置过滤器” http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1500817822023680 --- .../job/node/UpdateNodesByFilterHandler.java | 5 ++--- .../service/AutoexecJobServiceImpl.java | 17 ++++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index d9eca0d1..b6daae7a 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -104,10 +104,9 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); searchVo.setConditionWhereSql(sqlSb.toString()); - idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); - } else { - idList = resourceCrossoverMapper.getResourceIdList(searchVo); +// idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); } + idList = resourceCrossoverMapper.getResourceIdList(searchVo); int count = idList.size(); if (count > 0) { int index = 0; diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index e1bec0c3..c1739a03 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -2200,20 +2200,19 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); searchVo.setConditionWhereSql(sqlSb.toString()); - count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo); - } else { - count = resourceCrossoverMapper.getResourceCount(searchVo); +// count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo); } + count = resourceCrossoverMapper.getResourceCount(searchVo); if (count > 0) { int pageCount = PageUtil.getPageCount(count, searchVo.getPageSize()); for (int i = 1; i <= pageCount; i++) { searchVo.setCurrentPage(i); - List idList; - if (searchVo.isCustomCondition()) { - idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); - } else { - idList = resourceCrossoverMapper.getResourceIdList(searchVo); - } + List idList = resourceCrossoverMapper.getResourceIdList(searchVo); +// if (searchVo.isCustomCondition()) { +// idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); +// } else { +// idList = resourceCrossoverMapper.getResourceIdList(searchVo); +// } if (CollectionUtils.isNotEmpty(idList)) { List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); if (CollectionUtils.isNotEmpty(resourceList)) { -- Gitee From 206f65d53e7ed63889632ed8f72656ea4d330d0c Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Fri, 5 Sep 2025 17:29:44 +0800 Subject: [PATCH 06/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoexecCombopProcessConfigInitApi.java | 8 ++++ .../job/node/UpdateNodesByFilterHandler.java | 48 ++++++++----------- .../job/node/UpdateNodesByInputHandler.java | 43 +++++++++-------- .../job/node/UpdateNodesByParamsHandler.java | 9 +--- .../UpdateNodesByPrePhaseOutputHandler.java | 9 +--- .../job/node/UpdateNodesSelectHandler.java | 9 +--- 6 files changed, 57 insertions(+), 69 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/api/combop/AutoexecCombopProcessConfigInitApi.java b/src/main/java/neatlogic/module/autoexec/api/combop/AutoexecCombopProcessConfigInitApi.java index fc984e52..6c2acd84 100644 --- a/src/main/java/neatlogic/module/autoexec/api/combop/AutoexecCombopProcessConfigInitApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/combop/AutoexecCombopProcessConfigInitApi.java @@ -253,6 +253,14 @@ public class AutoexecCombopProcessConfigInitApi extends PrivateApiComponentBase JSONArray executeParamList = new JSONArray(); if (executeConfigVo != null) { if (needExecuteNode) { + //补充前置过滤器 + if(executeConfigVo.getPreCondition() != null) { + JSONObject preCondition = new JSONObject(); + preCondition.put("key", "preCondition"); + preCondition.put("name", "前置过滤器"); + preCondition.put("value", executeConfigVo.getPreCondition()); + executeParamList.add(preCondition); + } JSONObject executeNode = new JSONObject(); executeNode.put("key", "executeNodeConfig"); executeNode.put("name", "执行目标"); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index b6daae7a..4eae57aa 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -17,9 +17,7 @@ package neatlogic.module.autoexec.job.node; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -28,7 +26,6 @@ import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.crossover.CrossoverServiceFactory; -import neatlogic.module.autoexec.dao.mapper.AutoexecResourceMapper; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -39,30 +36,23 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import java.util.Objects; @Service public class UpdateNodesByFilterHandler implements IUpdateNodes { @Resource AutoexecJobService autoexecJobService; - @Resource - private AutoexecResourceMapper autoexecResourceMapper; private static final Logger logger = LoggerFactory.getLogger(UpdateNodesByFilterHandler.class); @Override public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - boolean isHasNode = false; - if (executeConfigVo == null) { + if (MapUtils.isEmpty(executeConfigVo.getExecuteNodeConfig().getFilter())) { return false; } - if (executeConfigVo.getExecuteNodeConfig() != null && MapUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getFilter())) { - logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------start"); - //long updateNodeResourceByFilter = System.currentTimeMillis(); - isHasNode = updateNodeResourceByFilter(executeConfigVo, jobVo, userName, protocolId); - //System.out.println((System.currentTimeMillis() - updateNodeResourceByFilter) + " ##updateNodeResourceByFilter:-------------------------------------------------------------------------------"); - logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------end"); - - } + logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------start"); + //long updateNodeResourceByFilter = System.currentTimeMillis(); + boolean isHasNode = updateNodeResourceByFilter(executeConfigVo, jobVo, userName, protocolId); + //System.out.println((System.currentTimeMillis() - updateNodeResourceByFilter) + " ##updateNodeResourceByFilter:-------------------------------------------------------------------------------"); + logger.debug("##updateNodeResourceByFilter:-------------------------------------------------------------------------------end"); return isHasNode; } @@ -71,23 +61,27 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { * 根据过滤器 更新节点 * * @param executeConfigVo 执行节点配置 - * @param jobVo 作业 - * @param userName 执行用户 - * @param protocolId 协议id + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id */ public boolean updateNodeResourceByFilter(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { JSONObject filterJson = executeConfigVo.getExecuteNodeConfig().getFilter(); boolean isHasNode = false; if (MapUtils.isNotEmpty(filterJson)) { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); - //如果作业层面的节点则补充前置filter - if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { - AutoexecCombopConfigVo config = jobVo.getConfig(); - if (config != null && config.getExecuteConfig() != null - && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) - ) { - searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); - } + AutoexecCombopConfigVo config = jobVo.getConfig(); + JSONObject preCondition = null; + //如果局部存在前置过滤器,优先使用局部的 + if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { + preCondition = executeConfigVo.getPreCondition(); + } else if (config != null && config.getExecuteConfig() != null + && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) + ) { + preCondition = config.getExecuteConfig().getPreCondition(); + } + if (MapUtils.isNotEmpty(preCondition)) { + searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); } searchVo.setMaxPageSize(50000); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index ced89686..8f4a4e8a 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -17,8 +17,7 @@ package neatlogic.module.autoexec.job.node; -import com.alibaba.fastjson.JSON; -import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; @@ -35,7 +34,10 @@ import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; @Service @@ -45,15 +47,10 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { @Override public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - boolean isHasNode = false; - if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { + if (CollectionUtils.isEmpty(executeConfigVo.getExecuteNodeConfig().getInputNodeList())) { return false; } - - if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getInputNodeList())) { - isHasNode = updateNodeResourceByInput(executeConfigVo, jobVo, userName, protocolId); - } - return isHasNode; + return updateNodeResourceByInput(executeConfigVo, jobVo, userName, protocolId); } /** @@ -61,9 +58,9 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { * 根据输入和选择节点 更新作业节点 * * @param executeConfigVo 执行节点配置 - * @param jobVo 作业 - * @param userName 执行用户 - * @param protocolId 协议id + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id */ private boolean updateNodeResourceByInput(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { List nodeVoList = executeConfigVo.getExecuteNodeConfig().getInputNodeList(); @@ -75,14 +72,18 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { } nodeVoList.forEach(o -> ipPortNameList.add(new ResourceVo(o.getIp(), o.getPort(), o.getName()))); ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); - if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { - //如果作业层面的节点则补充前置filter - AutoexecCombopConfigVo config = jobVo.getConfig(); - if (config != null && config.getExecuteConfig() != null - && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) - ) { - searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); - } + AutoexecCombopConfigVo config = jobVo.getConfig(); + JSONObject preCondition = null; + //如果局部存在前置过滤器,优先使用局部的 + if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { + preCondition = executeConfigVo.getPreCondition(); + } else if (config != null && config.getExecuteConfig() != null + && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) + ) { + preCondition = config.getExecuteConfig().getPreCondition(); + } + if (MapUtils.isNotEmpty(preCondition)) { + searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); } IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java index 38fe9396..c15c309c 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java @@ -47,15 +47,10 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { @Override public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - boolean isHasNode = false; - if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { + if (CollectionUtils.isEmpty(executeConfigVo.getExecuteNodeConfig().getParamList())) { return false; } - - if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getParamList())) { - isHasNode = updateNodeResourceByParam(jobVo, executeConfigVo, userName, protocolId); - } - return isHasNode; + return updateNodeResourceByParam(jobVo, executeConfigVo, userName, protocolId); } /** diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index 395fe2a8..03f3e9e2 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -59,15 +59,10 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { @Override public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - boolean isHasNode = false; - if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { + if (CollectionUtils.isEmpty(executeConfigVo.getExecuteNodeConfig().getPreOutputList())) { return false; } - - if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getPreOutputList())) { - isHasNode = updateNodeResourceByPrePhaseOutput(jobVo, executeConfigVo, userName, protocolId); - } - return isHasNode; + return updateNodeResourceByPrePhaseOutput(jobVo, executeConfigVo, userName, protocolId); } /** diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index cb5eee04..dc1177c4 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -43,15 +43,10 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { @Override public boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { - boolean isHasNode = false; - if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { + if (CollectionUtils.isEmpty(executeConfigVo.getExecuteNodeConfig().getSelectNodeList())) { return false; } - - if (CollectionUtils.isNotEmpty(executeConfigVo.getExecuteNodeConfig().getSelectNodeList())) { - isHasNode = updateNodeResourceBySelect(jobVo, executeConfigVo, userName, protocolId); - } - return isHasNode; + return updateNodeResourceBySelect(jobVo, executeConfigVo, userName, protocolId); } /** -- Gitee From c0b150ba9992b52d29c6695bcdedac7801b96e84 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Fri, 5 Sep 2025 19:04:08 +0800 Subject: [PATCH 07/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/node/UpdateNodesByFilterHandler.java | 37 ++++----- .../job/node/UpdateNodesByInputHandler.java | 52 ++----------- .../job/node/UpdateNodesByParamsHandler.java | 51 ++++++------ .../UpdateNodesByPrePhaseOutputHandler.java | 28 +++---- .../job/node/UpdateNodesSelectHandler.java | 43 +++++++--- .../autoexec/service/AutoexecJobService.java | 27 +++++-- .../service/AutoexecJobServiceImpl.java | 78 ++++++++++++------- 7 files changed, 163 insertions(+), 153 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 4eae57aa..095fe016 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -18,7 +18,6 @@ package neatlogic.module.autoexec.job.node; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; @@ -70,37 +69,27 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { boolean isHasNode = false; if (MapUtils.isNotEmpty(filterJson)) { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, filterJson); - AutoexecCombopConfigVo config = jobVo.getConfig(); - JSONObject preCondition = null; - //如果局部存在前置过滤器,优先使用局部的 - if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { - preCondition = executeConfigVo.getPreCondition(); - } else if (config != null && config.getExecuteConfig() != null - && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) - ) { - preCondition = config.getExecuteConfig().getPreCondition(); - } + JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); + //存在前置条件是高级模式 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); + } } - - searchVo.setMaxPageSize(50000); - searchVo.setPageSize(50000); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - List idList; StringBuilder sqlSb = new StringBuilder(); - //是否存在前置条件 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } + //存在条件是高级模式 if (searchVo.isCustomCondition()) { searchVo.buildConditionWhereSql(sqlSb, searchVo); searchVo.setConditionWhereSql(sqlSb.toString()); -// idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); } - idList = resourceCrossoverMapper.getResourceIdList(searchVo); + searchVo.setMaxPageSize(50000); + searchVo.setPageSize(50000); + IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + + List idList = resourceCrossoverMapper.getResourceIdList(searchVo); int count = idList.size(); if (count > 0) { int index = 0; diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index 8f4a4e8a..80078458 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -18,16 +18,13 @@ package neatlogic.module.autoexec.job.node; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.exception.job.AutoexecInputOutOfCountException; import neatlogic.framework.autoexec.job.node.IUpdateNodes; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -35,10 +32,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; @Service public class UpdateNodesByInputHandler implements IUpdateNodes { @@ -72,49 +66,17 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { } nodeVoList.forEach(o -> ipPortNameList.add(new ResourceVo(o.getIp(), o.getPort(), o.getName()))); ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); - AutoexecCombopConfigVo config = jobVo.getConfig(); - JSONObject preCondition = null; - //如果局部存在前置过滤器,优先使用局部的 - if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { - preCondition = executeConfigVo.getPreCondition(); - } else if (config != null && config.getExecuteConfig() != null - && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) - ) { - preCondition = config.getExecuteConfig().getPreCondition(); - } + JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); - } - - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - - Set resourceIdSet = new HashSet<>(); - List inputNodeResourceList = new ArrayList<>(); - for (ResourceVo resourceVo : ipPortNameList) { - inputNodeResourceList.add(resourceVo); - if (inputNodeResourceList.size() > 500) { - searchVo.setInputNodeList(inputNodeResourceList); - List resourceList = resourceCrossoverMapper.getResourceListByIpAndPortAndNameWithFilter(searchVo); - if (CollectionUtils.isNotEmpty(resourceList)) { - resourceIdSet.addAll(resourceList.stream().map(ResourceVo::getId).collect(Collectors.toList())); - } - inputNodeResourceList.clear(); + //存在前置条件是高级模式 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); } } - if (CollectionUtils.isNotEmpty(inputNodeResourceList)) { - searchVo.setInputNodeList(inputNodeResourceList); - List resourceList = resourceCrossoverMapper.getResourceListByIpAndPortAndNameWithFilter(searchVo); - if (CollectionUtils.isNotEmpty(resourceList)) { - resourceIdSet.addAll(resourceList.stream().map(ResourceVo::getId).collect(Collectors.toList())); - } - inputNodeResourceList.clear(); - } - if (CollectionUtils.isNotEmpty(resourceIdSet)) { - searchVo.setIdList(new ArrayList<>(resourceIdSet)); - searchVo.setMaxPageSize(1000); - searchVo.setPageSize(1000); - isHasNode = autoexecJobService.updateNode(jobVo, userName, protocolId, searchVo); - } + isHasNode = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } return isHasNode; } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java index c15c309c..aab51ff1 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java @@ -24,12 +24,11 @@ import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.exception.job.JobParamNodeNullException; import neatlogic.framework.autoexec.job.node.IUpdateNodes; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -58,17 +57,18 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { * 根据运行参数中定义的节点参数 更新作业节点 * * @param executeConfigVo 执行节点配置 - * @param jobVo 作业 - * @param userName 执行用户 - * @param protocolId 协议id + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id */ private boolean updateNodeResourceByParam(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { + boolean isHasNode = false; List paramList = executeConfigVo.getExecuteNodeConfig().getParamList(); if (CollectionUtils.isNotEmpty(paramList)) { List runTimeParamList = jobVo.getRunTimeParamList(); Set resourceIdSet = new HashSet<>(); - List resourceSearchList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(runTimeParamList)) { + List ipPortNameList = new ArrayList<>(); List paramObjList = runTimeParamList.stream().filter(p -> paramList.contains(p.getKey())).collect(Collectors.toList()); paramObjList.forEach(p -> { if (!(p.getValue() instanceof JSONArray) || CollectionUtils.isEmpty((JSONArray) p.getValue())) { @@ -86,36 +86,37 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { if (StringUtils.isNotBlank(ip)) { Integer port = valueObj.getInteger("port"); String name = valueObj.getString("name"); - ResourceSearchVo resourceSearchVo = new ResourceSearchVo(); - resourceSearchVo.setIp(ip); - if (port != null) { - resourceSearchVo.setPort(port.toString()); - } - resourceSearchVo.setName(name); - resourceSearchList.add(resourceSearchVo); + ipPortNameList.add(new ResourceVo(ip, port, name)); } } } } }); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - if (CollectionUtils.isNotEmpty(resourceSearchList)) { - for (ResourceSearchVo resourceSearchVo : resourceSearchList) { - Long id = resourceCrossoverMapper.getResourceIdByIpAndPortAndName(resourceSearchVo); - if (id != null) { - resourceIdSet.add(id); - } + ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); + JSONObject preCondition = executeConfigVo.getPreCondition(); + if (MapUtils.isNotEmpty(preCondition)) { + searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); + //存在前置条件是高级模式 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); + } + } + if (CollectionUtils.isNotEmpty(ipPortNameList)) { + boolean isHasNodeTmp = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); + if (isHasNodeTmp) { + isHasNode = true; } } if (CollectionUtils.isNotEmpty(resourceIdSet)) { - List resourceVoList = resourceCrossoverMapper.getResourceByIdList(new ArrayList<>(resourceIdSet)); - if (CollectionUtils.isNotEmpty(resourceVoList)) { - autoexecJobService.updateJobPhaseNode(jobVo, resourceVoList, userName, protocolId); - return true; + boolean isHasNodeTmp = autoexecJobService.updateNodeByResourceIdList(new ArrayList<>(resourceIdSet), searchVo, jobVo, userName, protocolId); + if (isHasNodeTmp) { + isHasNode = true; } } } } - return false; + return isHasNode; } } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index 03f3e9e2..50ec2ec7 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -31,10 +31,8 @@ import neatlogic.framework.autoexec.exception.AutoexecJobNodePreParamValueNotInv import neatlogic.framework.autoexec.exception.AutoexecJobPhaseOperationNotFoundException; import neatlogic.framework.autoexec.exception.AutoexecJobUpdateNodeByPreOutPutListException; import neatlogic.framework.autoexec.job.node.IUpdateNodes; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; -import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -70,9 +68,9 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { * 根据上游阶段出参 更新作业节点 * * @param executeConfigVo 执行节点配置 - * @param jobVo 作业 - * @param userName 执行用户 - * @param protocolId 协议id + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id */ private boolean updateNodeResourceByPrePhaseOutput(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { List preOutputList = executeConfigVo.getExecuteNodeConfig().getPreOutputList(); @@ -132,16 +130,18 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { List ipPortNameList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(nodeVoList)) { nodeVoList.forEach(o -> ipPortNameList.add(new ResourceVo(o.getIp(), o.getPort(), o.getName()))); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo); - List resourceVoList = resourceCrossoverMapper.getResourceListByResourceVoList(ipPortNameList, searchVo); - if (CollectionUtils.isNotEmpty(resourceVoList)) { - autoexecJobService.updateJobPhaseNode(jobVo, resourceVoList, userName, protocolId); - //重置节点状态 - //List jobNodeVoList = autoexecJobMapper.getJobPhaseNodeListWithRunnerByJobPhaseIdAndExceptStatusList(jobVo.getCurrentPhase().getId(), Collections.singletonList(JobNodeStatus.IGNORED.getValue())); - //resetJobNodeStatus(jobVo, jobNodeVoList); - return true; + ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); + JSONObject preCondition = executeConfigVo.getPreCondition(); + if (MapUtils.isNotEmpty(preCondition)) { + searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); + //存在前置条件是高级模式 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); + } } + autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } return false; } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index dc1177c4..e1cbce9c 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -18,13 +18,15 @@ package neatlogic.module.autoexec.job.node; import com.alibaba.fastjson.JSON; -import neatlogic.framework.autoexec.constvalue.AutoexecJobPhaseNodeFrom; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; +import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; +import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; +import neatlogic.framework.common.util.PageUtil; +import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.module.autoexec.service.AutoexecJobService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -32,7 +34,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; -import java.util.Objects; import static java.util.stream.Collectors.toList; @@ -54,24 +55,42 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { * 根据输入和选择节点 更新作业节点 * * @param executeConfigVo 执行节点配置 - * @param jobVo 作业 - * @param userName 执行用户 - * @param protocolId 协议id + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id */ private boolean updateNodeResourceBySelect(AutoexecJobVo jobVo, AutoexecCombopExecuteConfigVo executeConfigVo, String userName, Long protocolId) { List nodeVoList = executeConfigVo.getExecuteNodeConfig().getSelectNodeList(); boolean isHasNode = false; if (CollectionUtils.isNotEmpty(nodeVoList)) { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); - if (Objects.equals(jobVo.getNodeFrom(), AutoexecJobPhaseNodeFrom.JOB.getValue())) { - //如果作业层面的节点则补充前置filter - AutoexecCombopConfigVo config = jobVo.getConfig(); - if (config != null && config.getExecuteConfig() != null && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition())) { - searchVo.setPreCondition(JSON.toJavaObject(config.getExecuteConfig().getPreCondition(),ResourceSearchVo.class)); + if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { + searchVo.setPreCondition(JSON.toJavaObject(executeConfigVo.getPreCondition(), ResourceSearchVo.class)); + //存在前置条件是高级模式 + if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { + StringBuilder preSqlSb = new StringBuilder(); + searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); + searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); } } searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); - isHasNode = autoexecJobService.updateNode(jobVo, userName, protocolId, searchVo); + int count; + IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + count = resourceCrossoverMapper.getResourceCount(searchVo); + if (count > 0) { + int pageCount = PageUtil.getPageCount(count, searchVo.getPageSize()); + for (int i = 1; i <= pageCount; i++) { + searchVo.setCurrentPage(i); + List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + if (CollectionUtils.isNotEmpty(idList)) { + List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); + if (CollectionUtils.isNotEmpty(resourceList)) { + autoexecJobService.updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + isHasNode = true; + } + } + } + } } return isHasNode; } diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobService.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobService.java index cf4ab574..ed2006c6 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobService.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobService.java @@ -332,11 +332,12 @@ public interface AutoexecJobService { /** * 获取最终的阶段状态 - * @param statusList 节点或阶段runner的状态列表 + * + * @param statusList 节点或阶段runner的状态列表 * @param currentPhaseStatus 当前阶段状态,目前只有updateStatusApi用到 * @return 作业状态 */ - String getJobPhaseStatus(List statusList,String currentPhaseStatus); + String getJobPhaseStatus(List statusList, String currentPhaseStatus); String updatePartialNodeJobAndPhaseWithRunnerId(AutoexecJobPhaseVo jobPhaseVo, Long runnerId, AutoexecJobVo jobVo, String currentPhaseStatus, Integer phaseRunnerWarnCount); @@ -344,10 +345,22 @@ public interface AutoexecJobService { /** * 更新节点 - * @param jobVo 作业 - * @param userName 执行用户 + * + * @param jobVo 作业 + * @param userName 执行用户 + * @param protocolId 协议id + * @param searchVo 过滤条件 + */ + boolean updateNodeByIpPortNameList(List ipPortNameList, ResourceSearchVo searchVo, AutoexecJobVo jobVo, String userName, Long protocolId); + + + /** + * 更新节点 + * + * @param jobVo 作业 + * @param userName 执行用户 * @param protocolId 协议id - * @param searchVo 过滤条件 + * @param searchVo 过滤条件 */ - boolean updateNode(AutoexecJobVo jobVo, String userName, Long protocolId, ResourceSearchVo searchVo); -} + boolean updateNodeByResourceIdList(List resourceIdList, ResourceSearchVo searchVo, AutoexecJobVo jobVo, String userName, Long protocolId); +} \ No newline at end of file diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index c1739a03..cff2bf61 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -56,7 +56,6 @@ import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.cmdb.exception.resourcecenter.ResourceCenterAccountProtocolNotFoundException; import neatlogic.framework.common.constvalue.RunnerStatus; import neatlogic.framework.common.constvalue.systemuser.SystemUser; -import neatlogic.framework.common.util.PageUtil; import neatlogic.framework.config.ConfigManager; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.UserMapper; @@ -2185,34 +2184,15 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } @Override - public boolean updateNode(AutoexecJobVo jobVo, String userName, Long protocolId, ResourceSearchVo searchVo) { - int count; + public boolean updateNodeByIpPortNameList(List ipPortNameList, ResourceSearchVo searchVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - StringBuilder sqlSb = new StringBuilder(); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - //是否存在前置条件 - if(searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()){ - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb,searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } - - if (searchVo.isCustomCondition()) { - searchVo.buildConditionWhereSql(sqlSb, searchVo); - searchVo.setConditionWhereSql(sqlSb.toString()); -// count = resourceCrossoverMapper.getResourceCountByDynamicCondition(searchVo); - } - count = resourceCrossoverMapper.getResourceCount(searchVo); - if (count > 0) { - int pageCount = PageUtil.getPageCount(count, searchVo.getPageSize()); - for (int i = 1; i <= pageCount; i++) { - searchVo.setCurrentPage(i); + List inputNodeResourceList = new ArrayList<>(); + for (ResourceVo resourceVo : ipPortNameList) { + inputNodeResourceList.add(resourceVo); + if (inputNodeResourceList.size() > 1000) { + searchVo.setInputNodeList(inputNodeResourceList); List idList = resourceCrossoverMapper.getResourceIdList(searchVo); -// if (searchVo.isCustomCondition()) { -// idList = resourceCrossoverMapper.getResourceIdListByDynamicCondition(searchVo); -// } else { -// idList = resourceCrossoverMapper.getResourceIdList(searchVo); -// } if (CollectionUtils.isNotEmpty(idList)) { List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); if (CollectionUtils.isNotEmpty(resourceList)) { @@ -2220,6 +2200,52 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC isHasNode = true; } } + inputNodeResourceList.clear(); + } + } + if (CollectionUtils.isNotEmpty(inputNodeResourceList)) { + searchVo.setInputNodeList(inputNodeResourceList); + List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + if (CollectionUtils.isNotEmpty(idList)) { + List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); + if (CollectionUtils.isNotEmpty(resourceList)) { + updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + isHasNode = true; + } + } + } + return isHasNode; + } + + @Override + public boolean updateNodeByResourceIdList(List idList,ResourceSearchVo searchVo,AutoexecJobVo jobVo,String userName,Long protocolId) { + boolean isHasNode = false; + IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + List resourceIdList = new ArrayList<>(); + for (Long id : idList) { + resourceIdList.add(id); + if (resourceIdList.size() > 1000) { + searchVo.setIdList(resourceIdList); + List invalidIdList = resourceCrossoverMapper.getResourceIdList(searchVo); + if (CollectionUtils.isNotEmpty(invalidIdList)) { + List resourceList = resourceCrossoverMapper.getResourceListByIdList(invalidIdList); + if (CollectionUtils.isNotEmpty(resourceList)) { + updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + isHasNode = true; + } + } + resourceIdList.clear(); + } + } + if (CollectionUtils.isNotEmpty(resourceIdList)) { + searchVo.setIdList(resourceIdList); + List invalidIdList = resourceCrossoverMapper.getResourceIdList(searchVo); + if (CollectionUtils.isNotEmpty(invalidIdList)) { + List resourceList = resourceCrossoverMapper.getResourceListByIdList(invalidIdList); + if (CollectionUtils.isNotEmpty(resourceList)) { + updateJobPhaseNode(jobVo, resourceList, userName, protocolId); + isHasNode = true; + } } } return isHasNode; -- Gitee From 884d3f542dc65fc34e334624f7272764d6c9177a Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 5 Sep 2025 19:18:20 +0800 Subject: [PATCH 08/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1500817822023680]自动化组合工具“全局“、“阶段组”和“阶段”都支持选择执行目标支持“前置过滤器” http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1500817822023680 --- .../DownloadAutoexecJobPhaseNodesApi.java | 5 +++-- .../job/node/UpdateNodesByFilterHandler.java | 9 ++++---- .../job/node/UpdateNodesSelectHandler.java | 8 ++++--- .../service/AutoexecJobServiceImpl.java | 21 +++++++++---------- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java b/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java index 318c429f..9a97f39a 100644 --- a/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/job/exec/DownloadAutoexecJobPhaseNodesApi.java @@ -42,6 +42,7 @@ import neatlogic.framework.autoexec.source.AutoexecJobSourceFactory; import neatlogic.framework.autoexec.source.IAutoexecJobSource; import neatlogic.framework.cmdb.crossover.IResourceAccountCrossoverMapper; import neatlogic.framework.cmdb.crossover.IResourceCenterAccountCrossoverService; +import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.AccountBaseVo; import neatlogic.framework.cmdb.dto.resourcecenter.AccountProtocolVo; @@ -293,13 +294,13 @@ public class DownloadAutoexecJobPhaseNodesApi extends PrivateBinaryStreamApiComp autoexecJobSourceActionHandler.addExtraJobPhaseNodeBlueGreenInfoByList(jobVo.getId(), autoexecJobPhaseNodeVoList); } - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); List resourceIdList = autoexecJobPhaseNodeVoList.stream().map(AutoexecJobPhaseNodeVo::getResourceId).filter(Objects::nonNull).collect(Collectors.toList()); List resourceIncludeOsIdList = new ArrayList<>(resourceIdList); //针对巡检 批量补充对应资产的appSystemId if (CollectionUtils.isNotEmpty(resourceIdList)) { if (isInspect) { - List ipObjectResourceList = resourceCrossoverMapper.getResourceListByIdList(resourceIdList); + List ipObjectResourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(resourceIdList); if (CollectionUtils.isNotEmpty(ipObjectResourceList)) { resourceAppSystemMap.putAll(ipObjectResourceList.stream().filter(o -> o.getAppSystemId() != null).collect(Collectors.toMap(ResourceVo::getId, o -> { List appSystemIdList = new ArrayList<>(); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 095fe016..40efab06 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; +import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; @@ -88,8 +89,8 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { searchVo.setMaxPageSize(50000); searchVo.setPageSize(50000); IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - - List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); + List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); int count = idList.size(); if (count > 0) { int index = 0; @@ -103,7 +104,7 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { i--; logger.debug("##getResourceListByIdList:-------------------------------------------------------------------------------start"); //long bbb = System.currentTimeMillis(); - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idPageList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(idPageList); //System.out.println((System.currentTimeMillis() - bbb) + " ##bbb:-------------------------------------------------------------------------------"); logger.debug("##getResourceListByIdList:-------------------------------------------------------------------------------end"); if (CollectionUtils.isNotEmpty(resourceList)) { @@ -120,7 +121,7 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { if (CollectionUtils.isNotEmpty(idPageList)) { logger.debug("##getResourceListByIdList last:-------------------------------------------------------------------------------start"); //long bbb = System.currentTimeMillis(); - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idPageList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(idPageList); //System.out.println((System.currentTimeMillis() - bbb) + " ##bbb:-------------------------------------------------------------------------------"); logger.debug("##getResourceListByIdList last:-------------------------------------------------------------------------------end"); if (CollectionUtils.isNotEmpty(resourceList)) { diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index e1cbce9c..ef955b3b 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -22,6 +22,7 @@ import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; +import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; @@ -76,14 +77,15 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); int count; IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); - count = resourceCrossoverMapper.getResourceCount(searchVo); + IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); + count = resourceCenterResourceCrossoverService.getResourceCount(searchVo); if (count > 0) { int pageCount = PageUtil.getPageCount(count, searchVo.getPageSize()); for (int i = 1; i <= pageCount; i++) { searchVo.setCurrentPage(i); - List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(idList); if (CollectionUtils.isNotEmpty(resourceList)) { autoexecJobService.updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index cff2bf61..8c8dea2c 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -49,7 +49,6 @@ import neatlogic.framework.autoexec.source.IAutoexecJobSource; import neatlogic.framework.autoexec.util.AutoexecUtil; import neatlogic.framework.cmdb.crossover.IResourceAccountCrossoverMapper; import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.AccountProtocolVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; @@ -2186,15 +2185,15 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC @Override public boolean updateNodeByIpPortNameList(List ipPortNameList, ResourceSearchVo searchVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); List inputNodeResourceList = new ArrayList<>(); for (ResourceVo resourceVo : ipPortNameList) { inputNodeResourceList.add(resourceVo); if (inputNodeResourceList.size() > 1000) { searchVo.setInputNodeList(inputNodeResourceList); - List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(idList); if (CollectionUtils.isNotEmpty(resourceList)) { updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; @@ -2205,9 +2204,9 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } if (CollectionUtils.isNotEmpty(inputNodeResourceList)) { searchVo.setInputNodeList(inputNodeResourceList); - List idList = resourceCrossoverMapper.getResourceIdList(searchVo); + List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); if (CollectionUtils.isNotEmpty(idList)) { - List resourceList = resourceCrossoverMapper.getResourceListByIdList(idList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(idList); if (CollectionUtils.isNotEmpty(resourceList)) { updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; @@ -2220,15 +2219,15 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC @Override public boolean updateNodeByResourceIdList(List idList,ResourceSearchVo searchVo,AutoexecJobVo jobVo,String userName,Long protocolId) { boolean isHasNode = false; - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); + IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); List resourceIdList = new ArrayList<>(); for (Long id : idList) { resourceIdList.add(id); if (resourceIdList.size() > 1000) { searchVo.setIdList(resourceIdList); - List invalidIdList = resourceCrossoverMapper.getResourceIdList(searchVo); + List invalidIdList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); if (CollectionUtils.isNotEmpty(invalidIdList)) { - List resourceList = resourceCrossoverMapper.getResourceListByIdList(invalidIdList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(invalidIdList); if (CollectionUtils.isNotEmpty(resourceList)) { updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; @@ -2239,9 +2238,9 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } if (CollectionUtils.isNotEmpty(resourceIdList)) { searchVo.setIdList(resourceIdList); - List invalidIdList = resourceCrossoverMapper.getResourceIdList(searchVo); + List invalidIdList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); if (CollectionUtils.isNotEmpty(invalidIdList)) { - List resourceList = resourceCrossoverMapper.getResourceListByIdList(invalidIdList); + List resourceList = resourceCenterResourceCrossoverService.getResourceListByIdList(invalidIdList); if (CollectionUtils.isNotEmpty(resourceList)) { updateJobPhaseNode(jobVo, resourceList, userName, protocolId); isHasNode = true; -- Gitee From bfaa5057e695c8e1d6223d8e72b1e20f5b93806e Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Mon, 8 Sep 2025 10:46:32 +0800 Subject: [PATCH 09/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1500817822023680]自动化组合工具“全局“、“阶段组”和“阶段”都支持选择执行目标支持“前置过滤器” http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1500817822023680 --- .../job/node/UpdateNodesByFilterHandler.java | 24 +++++++++---------- .../job/node/UpdateNodesByInputHandler.java | 10 ++++---- .../job/node/UpdateNodesByParamsHandler.java | 10 ++++---- .../UpdateNodesByPrePhaseOutputHandler.java | 10 ++++---- .../job/node/UpdateNodesSelectHandler.java | 12 +++++----- .../service/AutoexecJobServiceImpl.java | 4 ++-- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 40efab06..90bf5b22 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -74,21 +74,21 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); //存在前置条件是高级模式 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } - } - StringBuilder sqlSb = new StringBuilder(); - //存在条件是高级模式 - if (searchVo.isCustomCondition()) { - searchVo.buildConditionWhereSql(sqlSb, searchVo); - searchVo.setConditionWhereSql(sqlSb.toString()); +// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { +// StringBuilder preSqlSb = new StringBuilder(); +// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); +// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); +// } } +// StringBuilder sqlSb = new StringBuilder(); +// //存在条件是高级模式 +// if (searchVo.isCustomCondition()) { +// searchVo.buildConditionWhereSql(sqlSb, searchVo); +// searchVo.setConditionWhereSql(sqlSb.toString()); +// } searchVo.setMaxPageSize(50000); searchVo.setPageSize(50000); - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); +// IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); int count = idList.size(); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index 80078458..ec8bfc18 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -70,11 +70,11 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); //存在前置条件是高级模式 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } +// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { +// StringBuilder preSqlSb = new StringBuilder(); +// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); +// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); +// } } isHasNode = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java index aab51ff1..a1e767db 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java @@ -97,11 +97,11 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); //存在前置条件是高级模式 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } +// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { +// StringBuilder preSqlSb = new StringBuilder(); +// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); +// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); +// } } if (CollectionUtils.isNotEmpty(ipPortNameList)) { boolean isHasNodeTmp = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index 50ec2ec7..ccbd69a4 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -135,11 +135,11 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); //存在前置条件是高级模式 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } +// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { +// StringBuilder preSqlSb = new StringBuilder(); +// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); +// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); +// } } autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index ef955b3b..73ae08c5 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -68,15 +68,15 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { searchVo.setPreCondition(JSON.toJavaObject(executeConfigVo.getPreCondition(), ResourceSearchVo.class)); //存在前置条件是高级模式 - if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { - StringBuilder preSqlSb = new StringBuilder(); - searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); - searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); - } +// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { +// StringBuilder preSqlSb = new StringBuilder(); +// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); +// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); +// } } searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); int count; - IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); +// IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); count = resourceCenterResourceCrossoverService.getResourceCount(searchVo); if (count > 0) { diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index 8c8dea2c..ec0940dc 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -1162,8 +1162,8 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC } IResourceCenterResourceCrossoverService resourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); ResourceSearchVo searchVo = resourceCrossoverService.assembleResourceSearchVo(filterJson); - resourceCrossoverService.handleBatchSearchList(searchVo); - resourceCrossoverService.setIpFieldAttrIdAndNameFieldAttrId(searchVo); +// resourceCrossoverService.handleBatchSearchList(searchVo); +// resourceCrossoverService.setIpFieldAttrIdAndNameFieldAttrId(searchVo); return searchVo; } -- Gitee From c3923668f227060aff15cc11743940d0ed0d31bc Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Mon, 8 Sep 2025 11:56:17 +0800 Subject: [PATCH 10/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/node/UpdateNodesByFilterHandler.java | 14 -------------- .../job/node/UpdateNodesByInputHandler.java | 6 ------ .../job/node/UpdateNodesByParamsHandler.java | 6 ------ .../node/UpdateNodesByPrePhaseOutputHandler.java | 6 ------ .../job/node/UpdateNodesSelectHandler.java | 8 -------- 5 files changed, 40 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java index 90bf5b22..f9caacfe 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByFilterHandler.java @@ -22,7 +22,6 @@ import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.crossover.CrossoverServiceFactory; @@ -73,22 +72,9 @@ public class UpdateNodesByFilterHandler implements IUpdateNodes { JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); - //存在前置条件是高级模式 -// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { -// StringBuilder preSqlSb = new StringBuilder(); -// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); -// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); -// } } -// StringBuilder sqlSb = new StringBuilder(); -// //存在条件是高级模式 -// if (searchVo.isCustomCondition()) { -// searchVo.buildConditionWhereSql(sqlSb, searchVo); -// searchVo.setConditionWhereSql(sqlSb.toString()); -// } searchVo.setMaxPageSize(50000); searchVo.setPageSize(50000); -// IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); List idList = resourceCenterResourceCrossoverService.getResourceIdList(searchVo); int count = idList.size(); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java index ec8bfc18..5caa3a40 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByInputHandler.java @@ -69,12 +69,6 @@ public class UpdateNodesByInputHandler implements IUpdateNodes { JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); - //存在前置条件是高级模式 -// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { -// StringBuilder preSqlSb = new StringBuilder(); -// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); -// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); -// } } isHasNode = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java index a1e767db..7c55b76e 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByParamsHandler.java @@ -96,12 +96,6 @@ public class UpdateNodesByParamsHandler implements IUpdateNodes { JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); - //存在前置条件是高级模式 -// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { -// StringBuilder preSqlSb = new StringBuilder(); -// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); -// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); -// } } if (CollectionUtils.isNotEmpty(ipPortNameList)) { boolean isHasNodeTmp = autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index ccbd69a4..0acde10a 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -134,12 +134,6 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { JSONObject preCondition = executeConfigVo.getPreCondition(); if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); - //存在前置条件是高级模式 -// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { -// StringBuilder preSqlSb = new StringBuilder(); -// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); -// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); -// } } autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java index 73ae08c5..61443afb 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesSelectHandler.java @@ -23,7 +23,6 @@ import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.autoexec.job.node.IUpdateNodes; import neatlogic.framework.cmdb.crossover.IResourceCenterResourceCrossoverService; -import neatlogic.framework.cmdb.crossover.IResourceCrossoverMapper; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceSearchVo; import neatlogic.framework.cmdb.dto.resourcecenter.ResourceVo; import neatlogic.framework.common.util.PageUtil; @@ -67,16 +66,9 @@ public class UpdateNodesSelectHandler implements IUpdateNodes { ResourceSearchVo searchVo = autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, null); if (MapUtils.isNotEmpty(executeConfigVo.getPreCondition())) { searchVo.setPreCondition(JSON.toJavaObject(executeConfigVo.getPreCondition(), ResourceSearchVo.class)); - //存在前置条件是高级模式 -// if (searchVo.getPreCondition() != null && searchVo.getPreCondition().isCustomCondition()) { -// StringBuilder preSqlSb = new StringBuilder(); -// searchVo.getPreCondition().buildConditionWhereSql(preSqlSb, searchVo.getPreCondition()); -// searchVo.getPreCondition().setConditionWhereSql(preSqlSb.toString()); -// } } searchVo.setIdList(nodeVoList.stream().map(AutoexecNodeVo::getId).collect(toList())); int count; -// IResourceCrossoverMapper resourceCrossoverMapper = CrossoverServiceFactory.getApi(IResourceCrossoverMapper.class); IResourceCenterResourceCrossoverService resourceCenterResourceCrossoverService = CrossoverServiceFactory.getApi(IResourceCenterResourceCrossoverService.class); count = resourceCenterResourceCrossoverService.getResourceCount(searchVo); if (count > 0) { -- Gitee From 791707a09cf68773c4534485f79ea769de378b75 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Wed, 17 Sep 2025 11:38:08 +0800 Subject: [PATCH 11/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=89=A7=E8=A1=8C=E6=97=B6=E5=86=8D=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E6=89=A7=E8=A1=8C=E7=9B=AE=E6=A0=87=E7=9A=84=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E5=88=B0=E5=89=8D=E7=BD=AE=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RefreshCombopExecuteNodeConfigFilter.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 src/main/java/neatlogic/module/autoexec/api/combop/RefreshCombopExecuteNodeConfigFilter.java diff --git a/src/main/java/neatlogic/module/autoexec/api/combop/RefreshCombopExecuteNodeConfigFilter.java b/src/main/java/neatlogic/module/autoexec/api/combop/RefreshCombopExecuteNodeConfigFilter.java new file mode 100644 index 00000000..21525f11 --- /dev/null +++ b/src/main/java/neatlogic/module/autoexec/api/combop/RefreshCombopExecuteNodeConfigFilter.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.module.autoexec.api.combop; + +import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopVersionConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopVersionVo; +import neatlogic.framework.autoexec.exception.AutoexecCombopVersionNotFoundException; +import neatlogic.framework.common.constvalue.ApiParamType; +import neatlogic.framework.common.dto.BasePageVo; +import neatlogic.framework.restful.annotation.Description; +import neatlogic.framework.restful.annotation.Input; +import neatlogic.framework.restful.annotation.Param; +import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; +import neatlogic.module.autoexec.dao.mapper.AutoexecCombopVersionMapper; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 临时刷新数据用,后续废除 + */ +@Service +public class RefreshCombopExecuteNodeConfigFilter extends PrivateApiComponentBase { + + @Resource + AutoexecCombopVersionMapper autoexecCombopVerMapper; + + @Input({ + @Param(name = "combopId", type = ApiParamType.LONG, desc = "组合工具ID") + }) + @Description(desc = "刷新历史执行时再指定执行目标的过滤器到前置过滤器") + @Override + public Object myDoService(JSONObject paramObj) throws Exception { + Long combopId = paramObj.getLong("combopId"); + if (combopId != null) { + AutoexecCombopVersionVo activeCombopVersionVo = autoexecCombopVerMapper.getAutoexecCombopActiveVersionByCombopId(combopId); + if (activeCombopVersionVo == null) { + throw new AutoexecCombopVersionNotFoundException(combopId.toString()); + } + exchange(activeCombopVersionVo); + } else { + //更新所有组合工具 + BasePageVo basePageVo = new BasePageVo(); + int rowNum = autoexecCombopVerMapper.getAutoexecCombopVersionCountForUpdateConfig(); + basePageVo.setPageSize(100); + basePageVo.setRowNum(rowNum); + if (rowNum > 0) { + for (int i = 0; i < basePageVo.getPageSize(); i++) { + basePageVo.setCurrentPage(i+1); + List> versionList = autoexecCombopVerMapper.getAutoexecCombopVersionListForUpdateConfig(basePageVo); + for (Map versionVo : versionList) { + Long id = (Long) versionVo.get("id"); + String configStr = (String) versionVo.get("config"); + if (StringUtils.isBlank(configStr)) { + continue; + } + JSONObject config = null; + try { + config = JSONObject.parseObject(configStr); + } catch (JSONException e) { + //System.out.println("格式不对"); + } + if (MapUtils.isEmpty(config)) { + continue; + } + AutoexecCombopVersionVo autoexecCombopVersionVo = new AutoexecCombopVersionVo(); + autoexecCombopVersionVo.setId(id); + autoexecCombopVersionVo.setConfigStr(configStr); + exchange(autoexecCombopVersionVo); + } + } + + } + } + + return null; + } + + /** + * 将历史执行时再指定执行目标的过滤器迁移到前置过滤器 + * + * @param versionVo 组合工具版本 + */ + private void exchange(AutoexecCombopVersionVo versionVo) { + AutoexecCombopVersionConfigVo configVo = versionVo.getConfig(); + if (configVo != null && configVo.getExecuteConfig() != null && configVo.getExecuteConfig().getExecuteNodeConfig() != null && MapUtils.isNotEmpty(configVo.getExecuteConfig().getExecuteNodeConfig().getFilter())) { + configVo.getExecuteConfig().setPreCondition(configVo.getExecuteConfig().getExecuteNodeConfig().getFilter()); + configVo.getExecuteConfig().getExecuteNodeConfig().setFilter(null); + } + autoexecCombopVerMapper.updateAutoexecCombopVersionConfigById(versionVo.getId(), JSONObject.toJSONString(configVo)); + } + + @Override + public String getToken() { + return "combop/executenodeconfig/filter/refresh"; + } + + @Override + public String getName() { + return "刷新历史执行时再指定执行目标的过滤器"; + } +} -- Gitee From 269543b7da45c0eeb5677b64940f397e66e3e999 Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Fri, 19 Sep 2025 15:13:06 +0800 Subject: [PATCH 12/14] update --- .../api/job/ExportAutoexecJobApi.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/api/job/ExportAutoexecJobApi.java b/src/main/java/neatlogic/module/autoexec/api/job/ExportAutoexecJobApi.java index fa15608c..9ce1f3b7 100644 --- a/src/main/java/neatlogic/module/autoexec/api/job/ExportAutoexecJobApi.java +++ b/src/main/java/neatlogic/module/autoexec/api/job/ExportAutoexecJobApi.java @@ -110,7 +110,7 @@ public class ExportAutoexecJobApi extends PrivateBinaryStreamApiComponentBase { } } List phaseVoList = autoexecJobMapper.getJobPhaseListWithGroupByJobId(jobId); - if (phaseVoList.size() > 0) { + if (!phaseVoList.isEmpty()) { ExcelBuilder builder = new ExcelBuilder(SXSSFWorkbook.class); builder.withBorderColor(HSSFColor.HSSFColorPredefined.GREY_40_PERCENT) .withHeadFontColor(HSSFColor.HSSFColorPredefined.WHITE) @@ -122,21 +122,16 @@ public class ExportAutoexecJobApi extends PrivateBinaryStreamApiComponentBase { handler.exportJobPhaseNodeWithNodeOutputParam(jobVo, phaseVo, phaseOutputParamMap.get(phaseVo.getName()), builder, getHeadList(phaseVo.getExecMode()), getColumnList(phaseVo.getExecMode())); } } - Workbook workbook = builder.build(); - if (workbook != null) { - String fileName = FileUtil.getEncodedFileName(jobVo.getName() + ".xlsx"); - response.setContentType("application/vnd.ms-excel;charset=utf-8"); - response.setHeader("Content-Disposition", " attachment; filename=\"" + fileName + "\""); - - try (OutputStream os = response.getOutputStream()) { + try (Workbook workbook = builder.build(); + OutputStream os = response.getOutputStream()) { + if (workbook != null) { + String fileName = FileUtil.getEncodedFileName(jobVo.getName() + ".xlsx"); + response.setContentType("application/vnd.ms-excel;charset=utf-8"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); workbook.write(os); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } finally { - if (workbook != null) { - ((SXSSFWorkbook) workbook).dispose(); - } } + } catch (IOException e) { + logger.error(e.getMessage(), e); } } return null; -- Gitee From 6beb4ec53f00319240ede0ca87938058b1780c9c Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Tue, 23 Sep 2025 21:47:16 +0800 Subject: [PATCH 13/14] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5=E7=BB=84?= =?UTF-8?q?=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D=E9=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=99=A8=E2=80=9D=20#[1500817822023680]=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E7=BB=84=E5=90=88=E5=B7=A5=E5=85=B7=E2=80=9C?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E2=80=9C=E3=80=81=E2=80=9C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=BB=84=E2=80=9D=E5=92=8C=E2=80=9C=E9=98=B6=E6=AE=B5=E2=80=9D?= =?UTF-8?q?=E9=83=BD=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=94=AF=E6=8C=81=E2=80=9C=E5=89=8D=E7=BD=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E2=80=9D=20http://192.168.0.96:8090?= =?UTF-8?q?/demo/rdm.html#/story-detail/939050947543040/939050947543042/15?= =?UTF-8?q?00817822023680?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java index 0acde10a..17066463 100644 --- a/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java +++ b/src/main/java/neatlogic/module/autoexec/job/node/UpdateNodesByPrePhaseOutputHandler.java @@ -135,7 +135,7 @@ public class UpdateNodesByPrePhaseOutputHandler implements IUpdateNodes { if (MapUtils.isNotEmpty(preCondition)) { searchVo.setPreCondition(autoexecJobService.getResourceSearchVoWithCmdbGroupType(jobVo, preCondition)); } - autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); + return autoexecJobService.updateNodeByIpPortNameList(ipPortNameList, searchVo, jobVo, userName, protocolId); } return false; } -- Gitee From fb53791faaebf9791c63577aff4af61b37ca274b Mon Sep 17 00:00:00 2001 From: lvzk <897706680@qq.com> Date: Wed, 24 Sep 2025 11:10:56 +0800 Subject: [PATCH 14/14] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=A0=87=E7=AD=BE=E9=99=90=E5=88=B6=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/autoexec/service/AutoexecJobServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java index c7943547..e6077ca6 100644 --- a/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java +++ b/src/main/java/neatlogic/module/autoexec/service/AutoexecJobServiceImpl.java @@ -386,6 +386,7 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC */ @Override public void updateNodeByPreOutput(AutoexecJobVo jobVo, AutoexecJobPhaseVo currentJobPhaseVo) { + getAutoexecJobDetail(jobVo); jobVo.setPreOutputPhase(currentJobPhaseVo); List combopPhaseVoList = new ArrayList<>(); List jobPhaseVoList = getJobPhaseListByPreOutput(jobVo, currentJobPhaseVo, combopPhaseVoList); @@ -608,6 +609,10 @@ public class AutoexecJobServiceImpl implements AutoexecJobService, IAutoexecJobC Integer parallelCount = null; AutoexecJobPhaseVo jobPhase = jobVo.getExecutePhase(); AutoexecJobGroupVo jobGroupVo = jobVo.getExecutePhase().getJobGroupVo(); + //动态节点是在上游节点执行完后才更新节点动态节点,需要依赖创建作业时的groupTag参数 + if(jobVo.getRunnerGroupTag() == null){ + jobVo.setRunnerGroupTag(combopExecuteConfigVo.getRunnerGroupTag()); + } //作业层执行用户引用作业参数且抛作业参数为空 String jobUserNameParamNullKey = StringUtils.EMPTY; if (combopExecuteConfigVo != null) { -- Gitee