From b9c321eb19a73bb2abebd98ae552ac7fd1903c7c Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Thu, 8 May 2025 19:19:50 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-itsm?= =?UTF-8?q?=E6=B5=81=E7=A8=8B-=E8=87=AA=E5=8A=A8=E5=8C=96=E8=8A=82?= =?UTF-8?q?=E7=82=B9&=E5=A4=96=E9=83=A8=E8=B0=83=E7=94=A8=E8=8A=82?= =?UTF-8?q?=E7=82=B9=20=E5=8F=82=E6=95=B0=E6=98=A0=E5=B0=84=E4=B8=8D?= =?UTF-8?q?=E5=81=9A=E8=A1=A8=E5=8D=95=E7=B1=BB=E5=9E=8B=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1416779639783424]后端-itsm流程-自动化节点&外部调用节点 参数映射不做表单类型限制 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1416779639783424 --- .../process/util/CreateJobConfigUtil.java | 103 +++++++++++------- .../paramtype/ScriptParamTypePassword.java | 2 +- .../script/paramtype/ScriptParamTypeText.java | 2 +- .../paramtype/ScriptParamTypeTextarea.java | 2 +- 4 files changed, 69 insertions(+), 40 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java b/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java index 9a569d41..abfb723f 100644 --- a/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java +++ b/src/main/java/neatlogic/module/autoexec/process/util/CreateJobConfigUtil.java @@ -60,11 +60,18 @@ public class CreateJobConfigUtil { public static List createAutoexecJobBuilderList(ProcessTaskStepVo currentProcessTaskStepVo, CreateJobConfigConfigVo createJobConfigConfigVo, AutoexecCombopVersionVo autoexecCombopVersionVo) { Long processTaskId = currentProcessTaskStepVo.getProcessTaskId(); // 如果工单有表单信息,则查询出表单配置及数据 - Map formAttributeDataMap = new HashMap<>(); + Map formTableComponentDataMap = new HashMap<>(); + Map formCommonComponentDataMap = new HashMap<>(); Map originalFormAttributeDataMap = new HashMap<>(); IProcessTaskCrossoverService processTaskCrossoverService = CrossoverServiceFactory.getApi(IProcessTaskCrossoverService.class); List formAttributeList = processTaskCrossoverService.getFormAttributeListByProcessTaskIdAngTagNew(processTaskId, createJobConfigConfigVo.getFormTag()); if (CollectionUtils.isNotEmpty(formAttributeList)) { + Map formAttributeMap = new HashMap<>(); + for (FormAttributeVo formAttributeVo : formAttributeList) { + if (!formAttributeMap.containsKey(formAttributeVo.getUuid())) { + formAttributeMap.put(formAttributeVo.getUuid(), formAttributeVo); + } + } List processTaskFormAttributeDataList = processTaskCrossoverService.getProcessTaskFormAttributeDataListByProcessTaskIdAndTagNew(processTaskId, createJobConfigConfigVo.getFormTag()); for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { // 放入表单普通组件数据 @@ -74,15 +81,29 @@ public class CreateJobConfigUtil { IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(attributeDataVo.getHandler()); if (handler != null) { Object simpleValue = handler.getSimpleValue(attributeDataVo.getDataObj()); - formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), simpleValue); - formAttributeDataMap.put(attributeDataVo.getAttributeKey(), simpleValue); + formTableComponentDataMap.put(attributeDataVo.getAttributeUuid(), simpleValue); + formTableComponentDataMap.put(attributeDataVo.getAttributeKey(), simpleValue); } else { Object dataObj = attributeDataVo.getDataObj(); - formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); - formAttributeDataMap.put(attributeDataVo.getAttributeKey(), dataObj); + formTableComponentDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); + formTableComponentDataMap.put(attributeDataVo.getAttributeKey(), dataObj); } } Object dataObj = attributeDataVo.getDataObj(); + FormAttributeVo formAttributeVo = formAttributeMap.get(attributeDataVo.getAttributeUuid()); + if (dataObj != null && formAttributeVo != null) { + IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(formAttributeVo.getHandler()); + if (handler != null) { + Object enhanceReadabilityValue = handler.getEnhanceReadabilityValue(dataObj, formAttributeVo); + formCommonComponentDataMap.put(formAttributeVo.getUuid(), enhanceReadabilityValue); + formCommonComponentDataMap.put(formAttributeVo.getKey(), enhanceReadabilityValue); + formCommonComponentDataMap.put(formAttributeVo.getLabel(), enhanceReadabilityValue); + } else { + formCommonComponentDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); + formCommonComponentDataMap.put(attributeDataVo.getAttributeKey(), dataObj); + formCommonComponentDataMap.put(attributeDataVo.getAttributeLabel(), dataObj); + } + } originalFormAttributeDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); originalFormAttributeDataMap.put(attributeDataVo.getAttributeKey(), dataObj); } @@ -109,12 +130,12 @@ public class CreateJobConfigUtil { // 作业策略createJobPolicy为single时表示单次创建作业,createJobPolicy为batch时表示批量创建作业 String createPolicy = createJobConfigConfigVo.getCreatePolicy(); if (Objects.equals(createPolicy, "single")) { - AutoexecJobBuilder builder = createSingleAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + AutoexecJobBuilder builder = createSingleAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); List builderList = new ArrayList<>(); builderList.add(builder); return builderList; } else if (Objects.equals(createPolicy, "batch")) { - List builderList = createBatchAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + List builderList = createBatchAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); return builderList; } else { return null; @@ -128,7 +149,8 @@ public class CreateJobConfigUtil { * @param createJobConfigConfigVo * @param formAttributeList * @param originalFormAttributeDataMap - * @param formAttributeDataMap + * @param formTableComponentDataMap + * @param formCommonComponentDataMap * @param processTaskParam * @return */ @@ -138,7 +160,8 @@ public class CreateJobConfigUtil { AutoexecCombopVersionVo autoexecCombopVersionVo, List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, + Map formCommonComponentDataMap, JSONObject processTaskParam) { List resultList = new ArrayList<>(); @@ -147,7 +170,7 @@ public class CreateJobConfigUtil { if (batchDataSourceMapping == null) { return resultList; } - JSONArray tbodyList = parseFormTableComponentMappingMode(batchDataSourceMapping, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray tbodyList = parseFormTableComponentMappingMode(batchDataSourceMapping, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); if (CollectionUtils.isEmpty(tbodyList)) { return resultList; } @@ -161,9 +184,9 @@ public class CreateJobConfigUtil { // 遍历表格数据,创建AutoexecJobVo对象列表 for (Object obj : tbodyList) { List list = Collections.singletonList(obj); - formAttributeDataMap.put(formAttributeVo.getUuid(), list); - formAttributeDataMap.put(formAttributeVo.getKey(), list); - AutoexecJobBuilder builder = createSingleAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + formTableComponentDataMap.put(formAttributeVo.getUuid(), list); + formTableComponentDataMap.put(formAttributeVo.getKey(), list); + AutoexecJobBuilder builder = createSingleAutoexecJobBuilder(currentProcessTaskStepVo, createJobConfigConfigVo, autoexecCombopVersionVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); resultList.add(builder); } return resultList; @@ -176,7 +199,7 @@ public class CreateJobConfigUtil { * @param createJobConfigConfigVo * @param formAttributeList * @param originalFormAttributeDataMap - * @param formAttributeDataMap + * @param formTableComponentDataMap * @param processTaskParam * @return */ @@ -186,7 +209,8 @@ public class CreateJobConfigUtil { AutoexecCombopVersionVo autoexecCombopVersionVo, List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, + Map formCommonComponentDataMap, JSONObject processTaskParam) { // 组合工具ID Long combopId = createJobConfigConfigVo.getCombopId(); @@ -197,7 +221,7 @@ public class CreateJobConfigUtil { rawData.put("autoexecCombopVersionVo", autoexecCombopVersionVo); rawData.put("formAttributeList", formAttributeList); rawData.put("originalFormAttributeDataMap", originalFormAttributeDataMap); - rawData.put("formAttributeDataMap", formAttributeDataMap); + rawData.put("formTableComponentDataMap", formTableComponentDataMap); rawData.put("processTaskParam", processTaskParam); builder.setRawData(JSONObject.parseObject(rawData.toJSONString())); // 作业名称 @@ -207,7 +231,7 @@ public class CreateJobConfigUtil { if (CollectionUtils.isNotEmpty(versionConfig.getScenarioList())) { List scenarioParamMappingGroupList = createJobConfigConfigVo.getScenarioParamMappingGroupList(); if (CollectionUtils.isNotEmpty(scenarioParamMappingGroupList)) { - JSONArray jsonArray = parseCreateJobConfigMappingGroup(scenarioParamMappingGroupList.get(0), formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(scenarioParamMappingGroupList.get(0), formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); Long scenarioId = getScenarioId(jsonArray, versionConfig.getScenarioList()); builder.setScenarioId(scenarioId); } @@ -224,7 +248,7 @@ public class CreateJobConfigUtil { if (autoexecParamVo == null) { continue; } - JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); if (CollectionUtils.isEmpty(jsonArray)) { continue; } @@ -277,7 +301,7 @@ public class CreateJobConfigUtil { executeConfig.setWhenToSpecify(CombopNodeSpecify.RUNTIME.getValue()); CreateJobConfigMappingGroupVo mappingGroupVo = executeParamMappingGroupMap.get("executeNodeConfig"); if (mappingGroupVo != null) { - JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo = getExecuteNodeConfig(jsonArray); if (executeNodeConfigVo != null) { executeConfig.setExecuteNodeConfig(executeNodeConfigVo); @@ -291,7 +315,7 @@ public class CreateJobConfigUtil { } else { CreateJobConfigMappingGroupVo mappingGroupVo = executeParamMappingGroupMap.get("protocolId"); if (mappingGroupVo != null) { - JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); Long protocolId = getProtocolId(jsonArray); executeConfig.setProtocolId(protocolId); } @@ -304,7 +328,7 @@ public class CreateJobConfigUtil { } else { CreateJobConfigMappingGroupVo mappingGroupVo = executeParamMappingGroupMap.get("executeUser"); if (mappingGroupVo != null) { - JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); String executeUser = getFirstNotBlankString(jsonArray); if (StringUtils.isNotBlank(executeUser)) { ParamMappingVo paramMappingVo = new ParamMappingVo(); @@ -321,7 +345,7 @@ public class CreateJobConfigUtil { } else { CreateJobConfigMappingGroupVo mappingGroupVo = executeParamMappingGroupMap.get("roundCount"); if (mappingGroupVo != null) { - JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray jsonArray = parseCreateJobConfigMappingGroup(mappingGroupVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); Integer roundCount = getFirstNotBlankInteger(jsonArray); if (roundCount != null) { builder.setRoundCount(roundCount); @@ -663,7 +687,8 @@ public class CreateJobConfigUtil { private static JSONArray parseCreateJobConfigMappingGroup(CreateJobConfigMappingGroupVo mappingGroupVo, List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, + Map formCommonComponentDataMap, JSONObject processTaskParam) { JSONArray resultList = new JSONArray(); List mappingList = mappingGroupVo.getMappingList(); @@ -677,16 +702,16 @@ public class CreateJobConfigUtil { } String mappingMode = mappingVo.getMappingMode(); if (Objects.equals(mappingMode, "formTableComponent")) { - resultList.addAll(parseFormTableComponentMappingMode(mappingVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam)); + resultList.addAll(parseFormTableComponentMappingMode(mappingVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam)); } else if (Objects.equals(mappingMode, "formCommonComponent")) { - resultList.add(formAttributeDataMap.get(value)); + resultList.add(formCommonComponentDataMap.get(value)); } else if (Objects.equals(mappingMode, "constant")) { resultList.add(value); } else if (Objects.equals(mappingMode, "processTaskParam")) { resultList.add(processTaskParam.get(value)); } else if (Objects.equals(mappingMode, "expression")) { if (value instanceof JSONArray) { - resultList.add(parseExpression((JSONArray) value, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam)); + resultList.add(parseExpression((JSONArray) value, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam)); } } } @@ -698,17 +723,19 @@ public class CreateJobConfigUtil { * @param mappingVo * @param formAttributeList * @param originalFormAttributeDataMap - * @param formAttributeDataMap + * @param formTableComponentDataMap + * @param formCommonComponentDataMap * @param processTaskParam * @return */ private static JSONArray parseFormTableComponentMappingMode(CreateJobConfigMappingVo mappingVo, List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, + Map formCommonComponentDataMap, Map processTaskParam) { JSONArray resultList = new JSONArray(); - List mainTableDataList = getFormTableComponentData(formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, mappingVo.getValue().toString()); + List mainTableDataList = getFormTableComponentData(formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, mappingVo.getValue().toString()); if (CollectionUtils.isEmpty(mainTableDataList)) { return resultList; } @@ -737,7 +764,7 @@ public class CreateJobConfigUtil { } } if (!flag) { - List rightTableDataList = getFormTableComponentData(formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, filterVo.getRightValue()); + List rightTableDataList = getFormTableComponentData(formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, filterVo.getRightValue()); if (CollectionUtils.isNotEmpty(rightTableDataList)) { for (JSONObject rowData : totalDerivedTableDataList) { Object leftData = rowData.get(filterVo.getLeftValue() + "." + filterVo.getLeftColumn()); @@ -764,7 +791,7 @@ public class CreateJobConfigUtil { } } } else if (Objects.equals(filterVo.getRightMappingMode() ,"formCommonComponent")) { - Object rightData = formAttributeDataMap.get(filterVo.getRightValue()); + Object rightData = formCommonComponentDataMap.get(filterVo.getRightValue()); for (JSONObject rowData : totalDerivedTableDataList) { Object leftData = rowData.get(filterVo.getLeftValue() + "." + filterVo.getLeftColumn()); if (expressionAssert(leftData, filterVo.getExpression(), rightData)) { @@ -902,7 +929,7 @@ public class CreateJobConfigUtil { private static List getFormTableComponentData( List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, String attribute) { List resultList = new ArrayList<>(); FormAttributeVo formAttributeVo = getFormAttributeVo(formAttributeList, attribute); @@ -912,7 +939,7 @@ public class CreateJobConfigUtil { if (formAttributeVo == null) { return resultList; } - Object object = formAttributeDataMap.get(attribute); + Object object = formTableComponentDataMap.get(attribute); if (object != null) { return (List) object; } @@ -986,14 +1013,16 @@ public class CreateJobConfigUtil { * @param valueList * @param formAttributeList * @param originalFormAttributeDataMap - * @param formAttributeDataMap + * @param formTableComponentDataMap + * @param formCommonComponentDataMap * @param processTaskParam * @return */ private static String parseExpression(JSONArray valueList, List formAttributeList, Map originalFormAttributeDataMap, - Map formAttributeDataMap, + Map formTableComponentDataMap, + Map formCommonComponentDataMap, JSONObject processTaskParam) { StringBuilder stringBuilder = new StringBuilder(); List mappingList = valueList.toJavaList(CreateJobConfigMappingVo.class); @@ -1001,14 +1030,14 @@ public class CreateJobConfigUtil { String value = mappingVo.getValue().toString(); String mappingMode = mappingVo.getMappingMode(); if (Objects.equals(mappingMode, "formTableComponent")) { - JSONArray array = parseFormTableComponentMappingMode(mappingVo, formAttributeList, originalFormAttributeDataMap, formAttributeDataMap, processTaskParam); + JSONArray array = parseFormTableComponentMappingMode(mappingVo, formAttributeList, originalFormAttributeDataMap, formTableComponentDataMap, formCommonComponentDataMap, processTaskParam); List list = new ArrayList<>(); for (int j = 0; j < array.size(); j++) { list.add(array.getString(j)); } stringBuilder.append(String.join(",", list)); } else if (Objects.equals(mappingMode, "formCommonComponent")) { - Object obj = formAttributeDataMap.get(value); + Object obj = formCommonComponentDataMap.get(value); if (obj != null) { if (obj instanceof JSONArray) { List list = new ArrayList<>(); diff --git a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypePassword.java b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypePassword.java index 3a692cd9..eb7d0033 100644 --- a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypePassword.java +++ b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypePassword.java @@ -98,6 +98,6 @@ public class ScriptParamTypePassword extends ScriptParamTypeBase { @Override public Object convertDataForProcessComponent(JSONArray jsonArray) { - return String.join(",", getStringList(jsonArray)); + return getString(jsonArray); } } diff --git a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeText.java b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeText.java index a26e3a38..c583537e 100644 --- a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeText.java +++ b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeText.java @@ -85,6 +85,6 @@ public class ScriptParamTypeText extends ScriptParamTypeBase { @Override public Object convertDataForProcessComponent(JSONArray jsonArray) { - return String.join(",", getStringList(jsonArray)); + return getString(jsonArray); } } diff --git a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeTextarea.java b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeTextarea.java index e7617496..42966e58 100644 --- a/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeTextarea.java +++ b/src/main/java/neatlogic/module/autoexec/script/paramtype/ScriptParamTypeTextarea.java @@ -85,6 +85,6 @@ public class ScriptParamTypeTextarea extends ScriptParamTypeBase { @Override public Object convertDataForProcessComponent(JSONArray jsonArray) { - return String.join(",", getStringList(jsonArray)); + return getString(jsonArray); } } -- Gitee