From baada20aca3439db2b1d482b65cc942be054b9fe Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Fri, 1 Dec 2023 16:15:11 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-C?= =?UTF-8?q?MDB=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031703835934720]后端-CMDB节点支持子表单 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031703835934720 --- .../stephandler/CmdbSyncProcessComponent.java | 1132 ++++++++++++----- 1 file changed, 830 insertions(+), 302 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java index e68ee68d..ce12a279 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -29,9 +29,11 @@ import neatlogic.framework.cmdb.dto.cientity.CiEntityVo; import neatlogic.framework.cmdb.dto.cientity.RelEntityVo; import neatlogic.framework.cmdb.dto.globalattr.GlobalAttrVo; import neatlogic.framework.cmdb.dto.transaction.CiEntityTransactionVo; +import neatlogic.framework.cmdb.enums.PropHandlerType; import neatlogic.framework.cmdb.enums.RelDirectionType; import neatlogic.framework.cmdb.enums.SearchExpression; import neatlogic.framework.cmdb.enums.TransactionActionType; +import neatlogic.framework.cmdb.exception.attr.AttrValueIrregularException; import neatlogic.framework.cmdb.exception.ci.CiNotFoundException; import neatlogic.framework.cmdb.exception.cientity.NewCiEntityNotFoundException; import neatlogic.framework.cmdb.utils.RelUtil; @@ -151,6 +153,58 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return null; } + private Object getFormAttributeData(ProcessTaskFormAttributeDataVo attributeDataVo, FormAttributeVo formAttributeVo) { + if (attributeDataVo == null) { + return null; + } + Object dataObj = attributeDataVo.getDataObj(); + if (dataObj == null) { + return null; + } + if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { + JSONArray resultList = new JSONArray(); + if (dataObj instanceof JSONArray) { + JSONArray dataArray = (JSONArray) dataObj; + for (int m = 0; m < dataArray.size(); m++) { + JSONObject data = dataArray.getJSONObject(m); + Long id = data.getLong("id"); + if (id != null) { + resultList.add(id); + } + } + } + return resultList; + } else if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMRADIO.getHandler()) + || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) + || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { + if (dataObj instanceof JSONObject) { + String valueStr = ((JSONObject) dataObj).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + return valueStr; + } + return null; + } else if (dataObj instanceof JSONArray) { + JSONArray resultList = new JSONArray(); + JSONArray valueArray = (JSONArray) dataObj; + for (int j = 0; j < valueArray.size(); j++) { + Object valueObj = valueArray.get(j); + if (valueObj instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + resultList.add(valueStr); + } + } else { + String valueStr = valueObj.toString(); + resultList.add(valueStr); + } + } + return resultList; + } else if (dataObj instanceof String) { + return dataObj; + } + } + return dataObj; + } @Override protected int myActive(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException { try { @@ -171,7 +225,10 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { myAutoComplete(currentProcessTaskStepVo); return 0; } - Map processTaskFormAttributeDataMap = new HashMap<>(); + List formAttributeList = new ArrayList<>(); + List processTaskFormAttributeDataList = new ArrayList<>(); + Map formAttributeDataMap = new HashMap<>(); +// Map processTaskFormAttributeDataMap = new HashMap<>(); Map formAttributeMap = new HashMap<>(); Long processTaskId = currentProcessTaskStepVo.getProcessTaskId(); // 如果工单有表单信息,则查询出表单配置及数据 @@ -182,13 +239,25 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { formVersionVo.setFormUuid(processTaskFormVo.getFormUuid()); formVersionVo.setFormName(processTaskFormVo.getFormName()); formVersionVo.setFormConfig(JSONObject.parseObject(formContent)); - List formAttributeList = formVersionVo.getFormAttributeList(); + formAttributeList = formVersionVo.getFormAttributeList(); if (CollectionUtils.isNotEmpty(formAttributeList)) { formAttributeMap = formAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e)); } - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); + processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataList)) { - processTaskFormAttributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); +// processTaskFormAttributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); + for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { +// FormAttributeVo formAttributeVo = formAttributeMap.get(attributeDataVo.getAttributeUuid()); +// if (formAttributeVo == null) { +// continue; +// } +// Object dataObj = getFormAttributeData(attributeDataVo, formAttributeVo); +// if (dataObj == null) { +// continue; +// } +// formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); + formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), getFormAttributeData(attributeDataVo, formAttributeMap.get(attributeDataVo.getAttributeUuid()))); + } } } boolean flag = false; @@ -218,7 +287,8 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } List configList = ciEntitySyncVo.getConfigList(); /* 重新构建configList配置信息 */ - configList = rebuildConfigList(configList, formAttributeMap, processTaskFormAttributeDataMap); + configList = rebuildConfigList2(configList, formAttributeDataMap); +// configList = rebuildConfigList(configList, formAttributeMap, processTaskFormAttributeDataMap, formAttributeDataMap); if (CollectionUtils.isEmpty(configList)) { myAutoComplete(currentProcessTaskStepVo); return 1; @@ -399,129 +469,138 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param processTaskFormAttributeDataMap 表单数据信息 * @return */ - private List handleBatchDataSource( - List configList, - Map processTaskFormAttributeDataMap - ) { - Map> oldUuid2NewUuidListMap = new HashMap<>(); - List newConfigList = new ArrayList<>(); - for (CiEntitySyncConfigVo configObj : configList) { - if (!Objects.equals(configObj.getCreatePolicy(), "batch")) { - // 单个操作配置,不做修改 - newConfigList.add(configObj); - continue; - } - String oldUuid = configObj.getUuid(); - // 批量操作配置信息 - CiEntitySyncBatchDataSourceVo batchDataSource = configObj.getBatchDataSource(); - String attributeUuid = batchDataSource.getAttributeUuid(); - ProcessTaskFormAttributeDataVo formAttributeDataVo = processTaskFormAttributeDataMap.get(attributeUuid); - List filterList = batchDataSource.getFilterList(); - JSONArray tbodyList = getTbodyList(formAttributeDataVo, filterList); - if (CollectionUtils.isEmpty(tbodyList)) { - continue; - } - List mappingList = configObj.getMappingList(); - // 遍历批量操作表格数据 - for (int j = 0; j < tbodyList.size(); j++) { - JSONObject tbodyObj = tbodyList.getJSONObject(j); - if (MapUtils.isEmpty(tbodyObj)) { - continue; - } - CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); - List newMappingList = new ArrayList<>(); - for (CiEntitySyncMappingVo mappingObj : mappingList) { - CiEntitySyncMappingVo newMappingObj = new CiEntitySyncMappingVo(mappingObj); - String mappingMode = mappingObj.getMappingMode(); - if (Objects.equals(mappingMode, "formTableComponent")) { - // 映射模式是表单表格组件 - JSONArray valueList = mappingObj.getValueList(); - if (CollectionUtils.isNotEmpty(valueList)) { - String value = valueList.getString(0); - if (Objects.equals(value, attributeUuid)) { - String column = mappingObj.getColumn(); - JSONArray newValueList = new JSONArray(); - Object valueObj = tbodyObj.get(column); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else if (valueObj instanceof JSONArray) { - JSONArray valueArray = (JSONArray) valueObj; - for (int k = 0; k < valueArray.size(); k++) { - Object valueObj2 = valueArray.get(k); - if (valueObj2 instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj2).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else { - newValueList.add(valueObj2.toString()); - } - } - } else { - String valueStr = valueObj.toString(); - newValueList.add(valueStr); - } - if (CollectionUtils.isNotEmpty(newValueList)) { - newMappingObj.setMappingMode("constant"); - newMappingObj.setValueList(newValueList); - } else { - continue; - } - } - } else { - continue; - } - } - newMappingList.add(newMappingObj); - } - String newUuid = UuidUtil.randomUuid(); - oldUuid2NewUuidListMap.computeIfAbsent(oldUuid, key -> new ArrayList<>()).add(newUuid); - newConfigObj.setUuid(newUuid); - newConfigObj.setCiId(configObj.getCiId()); - newConfigObj.setCiName(configObj.getCiName()); - newConfigObj.setCiLabel(configObj.getCiLabel()); - newConfigObj.setIsStart(configObj.getIsStart()); - newConfigObj.setCiIcon(configObj.getCiIcon()); - newConfigObj.setMappingList(newMappingList); - newConfigList.add(newConfigObj); - } - } - // 遍历newConfigList,根据oldUuid2NewUuidListMap,将关系映射配置信息中的valueList数据重新构建 - for (CiEntitySyncConfigVo configObj : newConfigList) { - List mappingList = configObj.getMappingList(); - for (CiEntitySyncMappingVo mappingObj : mappingList) { - String key = mappingObj.getKey(); - if (key.startsWith("rel")) { - JSONArray valueList = mappingObj.getValueList(); - if (CollectionUtils.isNotEmpty(valueList)) { - JSONArray newValueList = new JSONArray(); - for (int i = 0; i < valueList.size(); i++) { - JSONObject valueObj = valueList.getJSONObject(i); - String ciEntityUuid = valueObj.getString("ciEntityUuid"); - List newUuidList = oldUuid2NewUuidListMap.get(ciEntityUuid); - if (CollectionUtils.isNotEmpty(newUuidList)) { - for (String newUuid : newUuidList) { - JSONObject newValueObj = new JSONObject(); - newValueObj.putAll(valueObj); - newValueObj.put("ciEntityUuid", newUuid); - newValueList.add(newValueObj); - } - mappingObj.setValueList(newValueList); - } else { - JSONObject newValueObj = new JSONObject(); - newValueObj.putAll(valueObj); - newValueList.add(newValueObj); - } - } - } - } - } - } - return newConfigList; - } +// private List handleBatchDataSource( +// List configList, +// Map processTaskFormAttributeDataMap//, +//// List formAttributeList, +//// List processTaskFormAttributeDataList +// ) { +// Map> oldUuid2NewUuidListMap = new HashMap<>(); +// List newConfigList = new ArrayList<>(); +// for (CiEntitySyncConfigVo configObj : configList) { +// if (!Objects.equals(configObj.getCreatePolicy(), "batch")) { +// // 单个操作配置,不做修改 +// newConfigList.add(configObj); +// continue; +// } +// String oldUuid = configObj.getUuid(); +// // 批量操作配置信息 +// CiEntitySyncBatchDataSourceVo batchDataSource = configObj.getBatchDataSource(); +// String attributeUuid = batchDataSource.getAttributeUuid(); +// ProcessTaskFormAttributeDataVo formAttributeDataVo = processTaskFormAttributeDataMap.get(attributeUuid); +// List filterList = batchDataSource.getFilterList(); +// JSONArray tbodyList = getTbodyList(formAttributeDataVo, filterList); +// if (CollectionUtils.isEmpty(tbodyList)) { +// continue; +// } +// List mappingList = configObj.getMappingList(); +// // 遍历批量操作表格数据 +// for (int j = 0; j < tbodyList.size(); j++) { +// JSONObject tbodyObj = tbodyList.getJSONObject(j); +// if (MapUtils.isEmpty(tbodyObj)) { +// continue; +// } +// CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); +// List newMappingList = new ArrayList<>(); +// for (CiEntitySyncMappingVo mappingObj : mappingList) { +// JSONArray valueList = mappingObj.getValueList(); +// if (CollectionUtils.isEmpty(valueList)) { +// continue; +// } +// CiEntitySyncMappingVo newMappingObj = new CiEntitySyncMappingVo(mappingObj); +// String mappingMode = mappingObj.getMappingMode(); +// if (Objects.equals(mappingMode, "formTableComponent")) { +// // 映射模式是表单表格组件 +// if (valueList.size() == 1) { +// newMappingList.add(newMappingObj); +// continue; +// } +// String value = valueList.getString(0); +// if (Objects.equals(value, attributeUuid)) { +// String column = valueList.getString(1); +// JSONArray newValueList = new JSONArray(); +// Object valueObj = tbodyObj.get(column); +// if (valueObj instanceof JSONObject) { +// String valueStr = ((JSONObject) valueObj).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else if (valueObj instanceof JSONArray) { +// JSONArray valueArray = (JSONArray) valueObj; +// for (int k = 0; k < valueArray.size(); k++) { +// Object valueObj2 = valueArray.get(k); +// if (valueObj2 instanceof JSONObject) { +// String valueStr = ((JSONObject) valueObj2).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else { +// newValueList.add(valueObj2.toString()); +// } +// } +// } else { +// String valueStr = valueObj.toString(); +// newValueList.add(valueStr); +// } +// if (CollectionUtils.isNotEmpty(newValueList)) { +// newMappingObj.setMappingMode("constant"); +// newMappingObj.setValueList(newValueList); +// } else { +// continue; +// } +// } +// newMappingList.add(newMappingObj); +// } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { +// +// } else { +// newMappingList.add(newMappingObj); +// } +// } +// String newUuid = UuidUtil.randomUuid(); +// oldUuid2NewUuidListMap.computeIfAbsent(oldUuid, key -> new ArrayList<>()).add(newUuid); +// newConfigObj.setUuid(newUuid); +// newConfigObj.setCiId(configObj.getCiId()); +// newConfigObj.setCiName(configObj.getCiName()); +// newConfigObj.setCiLabel(configObj.getCiLabel()); +// newConfigObj.setIsStart(configObj.getIsStart()); +// newConfigObj.setCiIcon(configObj.getCiIcon()); +// newConfigObj.setMappingList(newMappingList); +// newConfigList.add(newConfigObj); +// } +// } +// // 遍历newConfigList,根据oldUuid2NewUuidListMap,将关系映射配置信息中的valueList数据重新构建 +// for (CiEntitySyncConfigVo configObj : newConfigList) { +// List mappingList = configObj.getMappingList(); +// for (CiEntitySyncMappingVo mappingObj : mappingList) { +// String key = mappingObj.getKey(); +// if (key.startsWith("rel")) { +// JSONArray valueList = mappingObj.getValueList(); +// if (CollectionUtils.isNotEmpty(valueList)) { +// JSONArray newValueList = new JSONArray(); +// for (int i = 0; i < valueList.size(); i++) { +// JSONObject valueObj = valueList.getJSONObject(i); +// String ciEntityUuid = valueObj.getString("ciEntityUuid"); +// List newUuidList = oldUuid2NewUuidListMap.get(ciEntityUuid); +// if (CollectionUtils.isNotEmpty(newUuidList)) { +// for (String newUuid : newUuidList) { +// JSONObject newValueObj = new JSONObject(); +// newValueObj.putAll(valueObj); +// newValueObj.put("ciEntityUuid", newUuid); +// newValueList.add(newValueObj); +// } +// mappingObj.setValueList(newValueList); +// } else { +// JSONObject newValueObj = new JSONObject(); +// newValueObj.putAll(valueObj); +// newValueList.add(newValueObj); +// } +// } +// } +// } +// } +// } +// return newConfigList; +// } /** * 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 @@ -529,126 +608,126 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param formAttributeMap 表单组件信息 * @param processTaskFormAttributeDataMap 表单数据信息 */ - private void handleMappingFormComponent( - List configList, - Map formAttributeMap, - Map processTaskFormAttributeDataMap - ) { - for (CiEntitySyncConfigVo configObj : configList) { - List mappingList = configObj.getMappingList(); - for (CiEntitySyncMappingVo mappingObj : mappingList) { - JSONArray valueList = mappingObj.getValueList(); - if (CollectionUtils.isEmpty(valueList)) { - continue; - } - JSONArray newValueList = new JSONArray(); - String mappingMode = mappingObj.getMappingMode(); - mappingObj.setValueList(newValueList); - if (Objects.equals(mappingMode, "formTableComponent")) { - mappingObj.setMappingMode("constant"); - ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); - if (attributeDataVo == null) { - continue; - } - List filterList = mappingObj.getFilterList(); - JSONArray tbodyList = getTbodyList(attributeDataVo, filterList); - if (CollectionUtils.isEmpty(tbodyList)) { - continue; - } - String column = mappingObj.getColumn(); - for (int m = 0; m < tbodyList.size(); m++) { - JSONObject tbodyObj = tbodyList.getJSONObject(m); - if (MapUtils.isEmpty(tbodyObj)) { - continue; - } - Object valueObj = tbodyObj.get(column); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else if (valueObj instanceof JSONArray) { - JSONArray valueArray = (JSONArray) valueObj; - for (int j = 0; j < valueArray.size(); j++) { - Object valueObj2 = valueArray.get(j); - if (valueObj2 instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj2).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else { - String valueStr = valueObj2.toString(); - newValueList.add(valueStr); - } - } - } else { - String valueStr = valueObj.toString(); - newValueList.add(valueStr); - } - } - } else if (Objects.equals(mappingMode, "formCommonComponent")) { - mappingObj.setMappingMode("constant"); - ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); - if (attributeDataVo == null) { - continue; - } - Object dataObj = attributeDataVo.getDataObj(); - if (dataObj == null) { - continue; - } - FormAttributeVo formAttributeVo = formAttributeMap.get(valueList.getString(0)); - if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { - if (dataObj instanceof JSONArray) { - JSONArray dataArray = (JSONArray) dataObj; - for (int m = 0; m < dataArray.size(); m++) { - JSONObject data = dataArray.getJSONObject(m); - Long id = data.getLong("id"); - if (id != null) { - newValueList.add(id); - } - } - } - } else if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMRADIO.getHandler()) - || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) - || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { - if (dataObj instanceof JSONObject) { - String valueStr = ((JSONObject) dataObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else if (dataObj instanceof JSONArray) { - JSONArray valueArray = (JSONArray) dataObj; - for (int j = 0; j < valueArray.size(); j++) { - Object valueObj = valueArray.get(j); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else { - String valueStr = valueObj.toString(); - newValueList.add(valueStr); - } - } - } else if (dataObj instanceof String) { - String valueStr = (String) dataObj; - newValueList.add(valueStr); - } - } else { - if (dataObj instanceof JSONObject) { - - } else if (dataObj instanceof JSONArray) { - newValueList.addAll((JSONArray) dataObj); - } else { - newValueList.add(dataObj); - } - } - } else { - newValueList.addAll(valueList); - } - } - } - } +// private void handleMappingFormComponent( +// List configList, +// Map formAttributeMap, +// Map processTaskFormAttributeDataMap +// ) { +// for (CiEntitySyncConfigVo configObj : configList) { +// List mappingList = configObj.getMappingList(); +// for (CiEntitySyncMappingVo mappingObj : mappingList) { +// JSONArray valueList = mappingObj.getValueList(); +// if (CollectionUtils.isEmpty(valueList)) { +// continue; +// } +// JSONArray newValueList = new JSONArray(); +// String mappingMode = mappingObj.getMappingMode(); +// mappingObj.setValueList(newValueList); +// if (Objects.equals(mappingMode, "formTableComponent")) { +// mappingObj.setMappingMode("constant"); +// ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); +// if (attributeDataVo == null) { +// continue; +// } +// List filterList = mappingObj.getFilterList(); +// JSONArray tbodyList = getTbodyList(attributeDataVo, filterList); +// if (CollectionUtils.isEmpty(tbodyList)) { +// continue; +// } +// String column = mappingObj.getColumn(); +// for (int m = 0; m < tbodyList.size(); m++) { +// JSONObject tbodyObj = tbodyList.getJSONObject(m); +// if (MapUtils.isEmpty(tbodyObj)) { +// continue; +// } +// Object valueObj = tbodyObj.get(column); +// if (valueObj instanceof JSONObject) { +// String valueStr = ((JSONObject) valueObj).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else if (valueObj instanceof JSONArray) { +// JSONArray valueArray = (JSONArray) valueObj; +// for (int j = 0; j < valueArray.size(); j++) { +// Object valueObj2 = valueArray.get(j); +// if (valueObj2 instanceof JSONObject) { +// String valueStr = ((JSONObject) valueObj2).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else { +// String valueStr = valueObj2.toString(); +// newValueList.add(valueStr); +// } +// } +// } else { +// String valueStr = valueObj.toString(); +// newValueList.add(valueStr); +// } +// } +// } else if (Objects.equals(mappingMode, "formCommonComponent")) { +// mappingObj.setMappingMode("constant"); +// ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); +// if (attributeDataVo == null) { +// continue; +// } +// Object dataObj = attributeDataVo.getDataObj(); +// if (dataObj == null) { +// continue; +// } +// FormAttributeVo formAttributeVo = formAttributeMap.get(valueList.getString(0)); +// if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { +// if (dataObj instanceof JSONArray) { +// JSONArray dataArray = (JSONArray) dataObj; +// for (int m = 0; m < dataArray.size(); m++) { +// JSONObject data = dataArray.getJSONObject(m); +// Long id = data.getLong("id"); +// if (id != null) { +// newValueList.add(id); +// } +// } +// } +// } else if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMRADIO.getHandler()) +// || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) +// || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { +// if (dataObj instanceof JSONObject) { +// String valueStr = ((JSONObject) dataObj).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else if (dataObj instanceof JSONArray) { +// JSONArray valueArray = (JSONArray) dataObj; +// for (int j = 0; j < valueArray.size(); j++) { +// Object valueObj = valueArray.get(j); +// if (valueObj instanceof JSONObject) { +// String valueStr = ((JSONObject) valueObj).getString("value"); +// if (StringUtils.isNotBlank(valueStr)) { +// newValueList.add(valueStr); +// } +// } else { +// String valueStr = valueObj.toString(); +// newValueList.add(valueStr); +// } +// } +// } else if (dataObj instanceof String) { +// String valueStr = (String) dataObj; +// newValueList.add(valueStr); +// } +// } else { +// if (dataObj instanceof JSONObject) { +// +// } else if (dataObj instanceof JSONArray) { +// newValueList.addAll((JSONArray) dataObj); +// } else { +// newValueList.add(dataObj); +// } +// } +// } else { +// newValueList.addAll(valueList); +// } +// } +// } +// } /** * 遍历configList,根据唯一规则属性值删除重复配置信息 @@ -727,37 +806,37 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param configList 配置信息列表 * @return */ - private List updateUuidValue(List configList) { - Map oldUuid2NewUuidMap = new HashMap<>(); - for (CiEntitySyncConfigVo configObject : configList) { - String uuid = configObject.getUuid(); - Long id = configObject.getId(); - if (id != null) { - CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoById(id); - if (ciEntityVo == null) { - configObject.setId(null); - oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); - } else { - if (!Objects.equals(uuid, ciEntityVo.getUuid())) { - oldUuid2NewUuidMap.put(uuid, ciEntityVo.getUuid()); - } - } - } else if (StringUtils.isNotBlank(uuid)) { - CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoByUuid(uuid); - if (ciEntityVo != null) { - oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); - } - } - } - if (MapUtils.isNotEmpty(oldUuid2NewUuidMap)) { - String configListStr = JSONObject.toJSONString(configList); - for (Map.Entry entry : oldUuid2NewUuidMap.entrySet()) { - configListStr = configListStr.replace(entry.getKey(), entry.getValue()); - } - return JSONObject.parseArray(configListStr, CiEntitySyncConfigVo.class); - } - return configList; - } +// private List updateUuidValue(List configList) { +// Map oldUuid2NewUuidMap = new HashMap<>(); +// for (CiEntitySyncConfigVo configObject : configList) { +// String uuid = configObject.getUuid(); +// Long id = configObject.getId(); +// if (id != null) { +// CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoById(id); +// if (ciEntityVo == null) { +// configObject.setId(null); +// oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); +// } else { +// if (!Objects.equals(uuid, ciEntityVo.getUuid())) { +// oldUuid2NewUuidMap.put(uuid, ciEntityVo.getUuid()); +// } +// } +// } else if (StringUtils.isNotBlank(uuid)) { +// CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoByUuid(uuid); +// if (ciEntityVo != null) { +// oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); +// } +// } +// } +// if (MapUtils.isNotEmpty(oldUuid2NewUuidMap)) { +// String configListStr = JSONObject.toJSONString(configList); +// for (Map.Entry entry : oldUuid2NewUuidMap.entrySet()) { +// configListStr = configListStr.replace(entry.getKey(), entry.getValue()); +// } +// return JSONObject.parseArray(configListStr, CiEntitySyncConfigVo.class); +// } +// return configList; +// } /** * 重新构建configList配置信息 * @param configList 配置信息列表 @@ -765,18 +844,34 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param processTaskFormAttributeDataMap 表单数据信息 * @return */ - private List rebuildConfigList( +// private List rebuildConfigList( +// List configList, +// Map formAttributeMap, +// Map processTaskFormAttributeDataMap, +// Map formAttributeDataMap) { +// // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 +// configList = handleBatchDataSource(configList, processTaskFormAttributeDataMap); +// // 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 +// handleMappingFormComponent(configList, formAttributeMap, processTaskFormAttributeDataMap); +// // 遍历configList,根据唯一规则属性值删除重复配置信息 +// configList = removeDuplicatesByUniqueAttrValue(configList); +// // 遍历configList,重新生成uuid的值 +// configList = updateUuidValue(configList); +// return configList; +// } + + /** + * 重新构建configList配置信息 + * @param configList 配置信息列表 + * @param formAttributeDataMap 表单数据信息 + * @return + */ + private List rebuildConfigList2( List configList, - Map formAttributeMap, - Map processTaskFormAttributeDataMap) { - // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 - configList = handleBatchDataSource(configList, processTaskFormAttributeDataMap); - // 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 - handleMappingFormComponent(configList, formAttributeMap, processTaskFormAttributeDataMap); + Map formAttributeDataMap) { + configList = handleMappingFormComponent2(configList, formAttributeDataMap); // 遍历configList,根据唯一规则属性值删除重复配置信息 configList = removeDuplicatesByUniqueAttrValue(configList); - // 遍历configList,重新生成uuid的值 - configList = updateUuidValue(configList); return configList; } @@ -857,6 +952,28 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } } + System.out.println(attrVo.getType()); + System.out.println(key + " = " + valueList.toJSONString()); + System.out.println("attrVo.getTargetCiId() = " + attrVo.getTargetCiId()); + if (PropHandlerType.SELECT.getValue().equals(attrVo.getType())) { + if (CollectionUtils.isNotEmpty(valueList)) { + for (int i = 0; i < valueList.size(); i++) { + String value = valueList.getString(i); + try { + Long attrId = Long.valueOf(value); + CiEntityVo ciEntity = ciEntityMapper.getCiEntityBaseInfoById(attrId); + if (ciEntity == null) { + throw new AttrValueIrregularException(attrVo, value); + } + if (!Objects.equals(ciEntity.getCiId(), attrVo.getTargetCiId())) { + throw new AttrValueIrregularException(attrVo, value); + } + } catch (NumberFormatException ex) { + throw new AttrValueIrregularException(attrVo, value); + } + } + } + } JSONObject attrEntity = new JSONObject(); attrEntity.put("type", attrVo.getType()); attrEntity.put("config", attrVo.getConfig()); @@ -986,19 +1103,84 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return ciEntityTransactionList; } - private JSONArray getTbodyList(ProcessTaskFormAttributeDataVo formAttributeDataVo, List filterList) { +// private JSONArray getTbodyList(ProcessTaskFormAttributeDataVo formAttributeDataVo, List filterList) { +// JSONArray tbodyList = new JSONArray(); +// if (formAttributeDataVo == null) { +// return tbodyList; +// } +// if (!Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLEINPUTER.getHandler()) +// && !Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLESELECTOR.getHandler())) { +// return tbodyList; +// } +// if (formAttributeDataVo.getDataObj() == null) { +// return tbodyList; +// } +// JSONArray dataList = (JSONArray) formAttributeDataVo.getDataObj(); +// // 数据过滤 +// if (CollectionUtils.isNotEmpty(filterList)) { +// for (int i = 0; i < dataList.size(); i++) { +// JSONObject data = dataList.getJSONObject(i); +// if (MapUtils.isEmpty(data)) { +// continue; +// } +// boolean flag = true; +// for (CiEntitySyncFilterVo filterObj : filterList) { +// String column = filterObj.getColumn(); +// if (StringUtils.isBlank(column)) { +// continue; +// } +// String expression = filterObj.getExpression(); +// if (StringUtils.isBlank(expression)) { +// continue; +// } +// String value = filterObj.getValue(); +// if (StringUtils.isBlank(value)) { +// continue; +// } +// if (Objects.equals(expression, Expression.EQUAL.getExpression())) { +// if (!Objects.equals(value, data.getString(column))) { +// flag = false; +// break; +// } +// } else if (Objects.equals(expression, Expression.UNEQUAL.getExpression())) { +// if (Objects.equals(value, data.getString(column))) { +// flag = false; +// break; +// } +// } else if (Objects.equals(expression, Expression.LIKE.getExpression())) { +// String columnValue = data.getString(column); +// if (StringUtils.isBlank(columnValue)) { +// flag = false; +// break; +// } +// if (!columnValue.contains(value)) { +// flag = false; +// break; +// } +// } else if (Objects.equals(expression, Expression.NOTLIKE.getExpression())) { +// String columnValue = data.getString(column); +// if (StringUtils.isBlank(columnValue)) { +// continue; +// } +// if (columnValue.contains(value)) { +// flag = false; +// break; +// } +// } +// } +// if (flag) { +// tbodyList.add(data); +// } +// } +// } else { +// tbodyList = dataList; +// } +// return tbodyList; +// } + + private JSONArray getTbodyList2(JSONArray dataList, List filterList) { JSONArray tbodyList = new JSONArray(); - if (formAttributeDataVo == null) { - return tbodyList; - } - if (!Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLEINPUTER.getHandler()) - && !Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLESELECTOR.getHandler())) { - return tbodyList; - } - if (formAttributeDataVo.getDataObj() == null) { - return tbodyList; - } - JSONArray dataList = (JSONArray) formAttributeDataVo.getDataObj(); + JSONArray tempList = new JSONArray(); // 数据过滤 if (CollectionUtils.isNotEmpty(filterList)) { for (int i = 0; i < dataList.size(); i++) { @@ -1052,15 +1234,361 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } if (flag) { - tbodyList.add(data); + tempList.add(data); } } } else { - tbodyList = dataList; + tempList = dataList; + } + + for (int i = 0; i < tempList.size(); i++) { + JSONObject newRowDataObj = new JSONObject(); + JSONObject rowDataObj = tempList.getJSONObject(i); + for (Map.Entry entry : rowDataObj.entrySet()) { + Object valueObj = entry.getValue(); + if (valueObj instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + newRowDataObj.put(entry.getKey(), valueStr); + } + } else if (valueObj instanceof JSONArray) { + JSONArray valueList = new JSONArray(); + JSONArray valueArray = (JSONArray) valueObj; + for (int k = 0; k < valueArray.size(); k++) { + Object valueObj2 = valueArray.get(k); + if (valueObj2 instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj2).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + valueList.add(valueStr); + } else { + valueList.add(valueObj2); + } + } else { + valueList.add(valueObj2); + } + } + newRowDataObj.put(entry.getKey(), valueList); + } else { + newRowDataObj.put(entry.getKey(), valueObj); + } + } + tbodyList.add(newRowDataObj); } return tbodyList; } + /** + * 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 + * @param configList 配置信息列表 + * @param formAttributeDataMap 表单数据信息 + */ + private List handleMappingFormComponent2( + List configList, + Map formAttributeDataMap + ) { + System.out.println("configList = " + JSONObject.toJSONString(configList)); + List newCiEntitySyncConfigList = new ArrayList<>(); + CiEntitySyncConfigVo startConfigObj = null; + Map ciEntitySyncConfigMap = new HashMap<>(); + for (CiEntitySyncConfigVo configObj : configList) { + String uuid = configObj.getUuid(); + ciEntitySyncConfigMap.put(uuid, configObj); + if (Objects.equals(configObj.getIsStart(), 1)) { + startConfigObj = configObj; + } + } + if (startConfigObj != null) { + startConfigObj.setUuid(UuidUtil.randomUuid()); + handleMappingFormComponent3(newCiEntitySyncConfigList, startConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); + } + System.out.println("newCiEntitySyncConfigList = " + JSONObject.toJSONString(newCiEntitySyncConfigList)); + return newCiEntitySyncConfigList; + } + + private List handleMappingFormComponent3( + List newCiEntitySyncConfigList, + CiEntitySyncConfigVo configObj, + Map ciEntitySyncConfigMap, + Map formAttributeDataMap + ) { + List newUuidList = new ArrayList<>(); + List batchDataColumnList = new ArrayList<>(); + JSONArray tbodyList = new JSONArray(); + if (Objects.equals(configObj.getCreatePolicy(), "batch")) { + // 批量操作配置信息 + CiEntitySyncBatchDataSourceVo batchDataSource = configObj.getBatchDataSource(); + String attributeUuid = batchDataSource.getAttributeUuid(); + Object dataObj = formAttributeDataMap.get(attributeUuid); + if (dataObj instanceof JSONArray) { + JSONArray dataList = (JSONArray) dataObj; + List filterList = batchDataSource.getFilterList(); + tbodyList = getTbodyList2(dataList, filterList); + if (CollectionUtils.isEmpty(tbodyList)) { + return newUuidList; + } + JSONObject tbodyObj = tbodyList.getJSONObject(0); + batchDataColumnList.addAll(tbodyObj.keySet()); + } else { + return newUuidList; + } + } + handleMappingFormComponent4(configObj, batchDataColumnList, formAttributeDataMap); + List mappingList = configObj.getMappingList(); + if (CollectionUtils.isNotEmpty(tbodyList)) { + // 遍历批量操作表格数据 + for (int j = 0; j < tbodyList.size(); j++) { + JSONObject tbodyObj = tbodyList.getJSONObject(j); + if (MapUtils.isEmpty(tbodyObj)) { + continue; + } + CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); + List newMappingList = new ArrayList<>(); + for (CiEntitySyncMappingVo mappingObj : mappingList) { + JSONArray valueList = mappingObj.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + continue; + } + CiEntitySyncMappingVo newMappingObj = new CiEntitySyncMappingVo(mappingObj); + String mappingMode = mappingObj.getMappingMode(); + if (Objects.equals(mappingMode, "formTableComponent")) { + // 映射模式是表单表格组件 + String attributeUuid = valueList.getString(valueList.size() -1); + if (!batchDataColumnList.contains(attributeUuid)) { + continue; + } + JSONArray newValueList = new JSONArray(); + Object valueObj = tbodyObj.get(attributeUuid); + if (valueObj instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + newValueList.add(valueStr); + } + } else if (valueObj instanceof JSONArray) { + JSONArray valueArray = (JSONArray) valueObj; + for (int k = 0; k < valueArray.size(); k++) { + Object valueObj2 = valueArray.get(k); + if (valueObj2 instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj2).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + newValueList.add(valueStr); + } + } else { + newValueList.add(valueObj2.toString()); + } + } + } else { + String valueStr = valueObj.toString(); + newValueList.add(valueStr); + } + if (CollectionUtils.isNotEmpty(newValueList)) { + newMappingObj.setMappingMode("constant"); + newMappingObj.setValueList(newValueList); + } else { + continue; + } + newMappingList.add(newMappingObj); + } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { + // 映射模式是子表单组件 + String attributeUuid = valueList.getString(valueList.size() -1); + if (!batchDataColumnList.contains(attributeUuid)) { + continue; + } + JSONArray newValueList = new JSONArray(); + Object valueObj = tbodyObj.get(attributeUuid); + if (valueObj instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + newValueList.add(valueStr); + } + } else if (valueObj instanceof JSONArray) { + JSONArray valueArray = (JSONArray) valueObj; + for (int k = 0; k < valueArray.size(); k++) { + Object valueObj2 = valueArray.get(k); + if (valueObj2 instanceof JSONObject) { + String valueStr = ((JSONObject) valueObj2).getString("value"); + if (StringUtils.isNotBlank(valueStr)) { + newValueList.add(valueStr); + } + } else { + newValueList.add(valueObj2.toString()); + } + } + } else { + String valueStr = valueObj.toString(); + newValueList.add(valueStr); + } + if (CollectionUtils.isNotEmpty(newValueList)) { + newMappingObj.setMappingMode("constant"); + newMappingObj.setValueList(newValueList); + } else { + continue; + } + newMappingList.add(newMappingObj); + } else { + newMappingList.add(newMappingObj); + } + } + String newUuid = UuidUtil.randomUuid(); + newConfigObj.setUuid(newUuid); + newConfigObj.setCiId(configObj.getCiId()); + newConfigObj.setCiName(configObj.getCiName()); + newConfigObj.setCiLabel(configObj.getCiLabel()); + newConfigObj.setIsStart(configObj.getIsStart()); + newConfigObj.setCiIcon(configObj.getCiIcon()); + newConfigObj.setMappingList(newMappingList); + newUuidList.add(newConfigObj.getUuid()); + formAttributeDataMap.putAll(tbodyObj); + newCiEntitySyncConfigList.add(newConfigObj); + handleMappingRelConfig(newCiEntitySyncConfigList, newConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); + } + } else { + newUuidList.add(configObj.getUuid()); + newCiEntitySyncConfigList.add(configObj); + handleMappingRelConfig(newCiEntitySyncConfigList, configObj, ciEntitySyncConfigMap, formAttributeDataMap); + } + return newUuidList; + } + + /** + * 处理关系的新的配置项数据 + * @param newCiEntitySyncConfigList + * @param configObj + * @param ciEntitySyncConfigMap + * @param formAttributeDataMap + */ + private void handleMappingRelConfig( + List newCiEntitySyncConfigList, + CiEntitySyncConfigVo configObj, + Map ciEntitySyncConfigMap, + Map formAttributeDataMap//, +// Map processTaskFormAttributeDataMap, +// Map formAttributeMap + ) { + List mappingList = configObj.getMappingList(); + for (CiEntitySyncMappingVo mappingObj : mappingList) { + String mappingMode = mappingObj.getMappingMode(); + if (!Objects.equals(mappingMode, "new")) { + continue; + } + JSONArray valueList = mappingObj.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + continue; + } + JSONArray newValueList = new JSONArray(); + for (int i = 0; i < valueList.size(); i++) { + JSONObject valueObj = valueList.getJSONObject(i); + if (MapUtils.isEmpty(valueObj)) { + continue; + } + String ciEntityUuid = valueObj.getString("ciEntityUuid"); + if (StringUtils.isBlank(ciEntityUuid)) { + continue; + } + String type = valueObj.getString("type"); + if (Objects.equals(type, "new")) { + CiEntitySyncConfigVo relConfigObj = ciEntitySyncConfigMap.get(ciEntityUuid); + replaceMappingRelFromCiEntityUuid(relConfigObj, configObj.getUuid()); + relConfigObj.setUuid(UuidUtil.randomUuid()); + List newCiEntityUuidList = handleMappingFormComponent3(newCiEntitySyncConfigList, relConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); + for (String newCiEntityUuid : newCiEntityUuidList) { + JSONObject newValueObj = new JSONObject(); + newValueObj.putAll(valueObj); + newValueObj.put("ciEntityUuid", newCiEntityUuid); + newValueList.add(newValueObj); + } + } else { + JSONObject newValueObj = new JSONObject(); + newValueObj.putAll(valueObj); + newValueList.add(newValueObj); + } + } + mappingObj.setValueList(newValueList); + } + } + + /** + * 替换关系的配置信息中的来源配置项的ciEntityUuid + * @param relConfigObj + * @param fromCiEntityUuid + */ + private void replaceMappingRelFromCiEntityUuid(CiEntitySyncConfigVo relConfigObj, String fromCiEntityUuid) { + List mappingList = relConfigObj.getMappingList(); + for (CiEntitySyncMappingVo mappingObj : mappingList) { + String mappingMode = mappingObj.getMappingMode(); + if (!Objects.equals(mappingMode, "new")) { + continue; + } + JSONArray valueList = mappingObj.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + continue; + } + for (int i = 0; i < valueList.size(); i++) { + JSONObject valueObj = valueList.getJSONObject(i); + if (MapUtils.isEmpty(valueObj)) { + continue; + } + String ciEntityUuid = valueObj.getString("ciEntityUuid"); + if (StringUtils.isBlank(ciEntityUuid)) { + continue; + } + String type = valueObj.getString("type"); + if (Objects.equals(type, "from")) { + valueObj.put("ciEntityUuid", fromCiEntityUuid); + } + } + } + } + + private void handleMappingFormComponent4( + CiEntitySyncConfigVo configObj, + List batchDataColumnList, + Map formAttributeDataMap) { + + List mappingList = configObj.getMappingList(); + for (CiEntitySyncMappingVo mappingObj : mappingList) { + JSONArray valueList = mappingObj.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + continue; + } + JSONArray newValueList = new JSONArray(); + String mappingMode = mappingObj.getMappingMode(); + mappingObj.setValueList(newValueList); + if (Objects.equals(mappingMode, "formTableComponent")) { + String attributeUuid = valueList.getString(valueList.size() -1); + if (batchDataColumnList.contains(attributeUuid)) { + newValueList.addAll(valueList); + continue; + } + mappingObj.setMappingMode("constant"); + Object dataObj = formAttributeDataMap.get(attributeUuid); + if (dataObj == null) { + continue; + } + if (dataObj instanceof JSONObject) { + // TODO 一般不会出现 + } else if (dataObj instanceof JSONArray) { + newValueList.addAll((JSONArray) dataObj); + } else { + newValueList.add(dataObj); + } + } else if (Objects.equals(mappingMode, "formCommonComponent")) { + mappingObj.setMappingMode("constant"); + Object dataObj = formAttributeDataMap.get(valueList.getString(0)); + if (dataObj == null) { + continue; + } + if (dataObj instanceof JSONObject) { + // TODO 一般不会出现 + } else if (dataObj instanceof JSONArray) { + newValueList.addAll((JSONArray) dataObj); + } else { + newValueList.add(dataObj); + } + } else { + newValueList.addAll(valueList); + } + } + } @Override protected int myAssign(ProcessTaskStepVo currentProcessTaskStepVo, Set workerSet) throws ProcessTaskException { return defaultAssign(currentProcessTaskStepVo, workerSet); -- Gitee From 7d6cda5b29a0db8421e5141e4b276c1fbcfcaae0 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Sat, 2 Dec 2023 10:13:18 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-C?= =?UTF-8?q?MDB=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031703835934720]后端-CMDB节点支持子表单 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031703835934720 --- .../stephandler/CmdbSyncProcessComponent.java | 582 ++++-------------- 1 file changed, 103 insertions(+), 479 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java index ce12a279..3f893d82 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -225,10 +225,9 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { myAutoComplete(currentProcessTaskStepVo); return 0; } - List formAttributeList = new ArrayList<>(); - List processTaskFormAttributeDataList = new ArrayList<>(); +// List formAttributeList = new ArrayList<>(); +// List processTaskFormAttributeDataList = new ArrayList<>(); Map formAttributeDataMap = new HashMap<>(); -// Map processTaskFormAttributeDataMap = new HashMap<>(); Map formAttributeMap = new HashMap<>(); Long processTaskId = currentProcessTaskStepVo.getProcessTaskId(); // 如果工单有表单信息,则查询出表单配置及数据 @@ -239,13 +238,12 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { formVersionVo.setFormUuid(processTaskFormVo.getFormUuid()); formVersionVo.setFormName(processTaskFormVo.getFormName()); formVersionVo.setFormConfig(JSONObject.parseObject(formContent)); - formAttributeList = formVersionVo.getFormAttributeList(); + List formAttributeList = formVersionVo.getFormAttributeList(); if (CollectionUtils.isNotEmpty(formAttributeList)) { formAttributeMap = formAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e)); } - processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); + List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataList)) { -// processTaskFormAttributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { // FormAttributeVo formAttributeVo = formAttributeMap.get(attributeDataVo.getAttributeUuid()); // if (formAttributeVo == null) { @@ -287,8 +285,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } List configList = ciEntitySyncVo.getConfigList(); /* 重新构建configList配置信息 */ - configList = rebuildConfigList2(configList, formAttributeDataMap); -// configList = rebuildConfigList(configList, formAttributeMap, processTaskFormAttributeDataMap, formAttributeDataMap); + configList = rebuildConfigList(configList, formAttributeDataMap); if (CollectionUtils.isEmpty(configList)) { myAutoComplete(currentProcessTaskStepVo); return 1; @@ -463,272 +460,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } - /** - * 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 - * @param configList 配置信息列表 - * @param processTaskFormAttributeDataMap 表单数据信息 - * @return - */ -// private List handleBatchDataSource( -// List configList, -// Map processTaskFormAttributeDataMap//, -//// List formAttributeList, -//// List processTaskFormAttributeDataList -// ) { -// Map> oldUuid2NewUuidListMap = new HashMap<>(); -// List newConfigList = new ArrayList<>(); -// for (CiEntitySyncConfigVo configObj : configList) { -// if (!Objects.equals(configObj.getCreatePolicy(), "batch")) { -// // 单个操作配置,不做修改 -// newConfigList.add(configObj); -// continue; -// } -// String oldUuid = configObj.getUuid(); -// // 批量操作配置信息 -// CiEntitySyncBatchDataSourceVo batchDataSource = configObj.getBatchDataSource(); -// String attributeUuid = batchDataSource.getAttributeUuid(); -// ProcessTaskFormAttributeDataVo formAttributeDataVo = processTaskFormAttributeDataMap.get(attributeUuid); -// List filterList = batchDataSource.getFilterList(); -// JSONArray tbodyList = getTbodyList(formAttributeDataVo, filterList); -// if (CollectionUtils.isEmpty(tbodyList)) { -// continue; -// } -// List mappingList = configObj.getMappingList(); -// // 遍历批量操作表格数据 -// for (int j = 0; j < tbodyList.size(); j++) { -// JSONObject tbodyObj = tbodyList.getJSONObject(j); -// if (MapUtils.isEmpty(tbodyObj)) { -// continue; -// } -// CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); -// List newMappingList = new ArrayList<>(); -// for (CiEntitySyncMappingVo mappingObj : mappingList) { -// JSONArray valueList = mappingObj.getValueList(); -// if (CollectionUtils.isEmpty(valueList)) { -// continue; -// } -// CiEntitySyncMappingVo newMappingObj = new CiEntitySyncMappingVo(mappingObj); -// String mappingMode = mappingObj.getMappingMode(); -// if (Objects.equals(mappingMode, "formTableComponent")) { -// // 映射模式是表单表格组件 -// if (valueList.size() == 1) { -// newMappingList.add(newMappingObj); -// continue; -// } -// String value = valueList.getString(0); -// if (Objects.equals(value, attributeUuid)) { -// String column = valueList.getString(1); -// JSONArray newValueList = new JSONArray(); -// Object valueObj = tbodyObj.get(column); -// if (valueObj instanceof JSONObject) { -// String valueStr = ((JSONObject) valueObj).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else if (valueObj instanceof JSONArray) { -// JSONArray valueArray = (JSONArray) valueObj; -// for (int k = 0; k < valueArray.size(); k++) { -// Object valueObj2 = valueArray.get(k); -// if (valueObj2 instanceof JSONObject) { -// String valueStr = ((JSONObject) valueObj2).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else { -// newValueList.add(valueObj2.toString()); -// } -// } -// } else { -// String valueStr = valueObj.toString(); -// newValueList.add(valueStr); -// } -// if (CollectionUtils.isNotEmpty(newValueList)) { -// newMappingObj.setMappingMode("constant"); -// newMappingObj.setValueList(newValueList); -// } else { -// continue; -// } -// } -// newMappingList.add(newMappingObj); -// } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { -// -// } else { -// newMappingList.add(newMappingObj); -// } -// } -// String newUuid = UuidUtil.randomUuid(); -// oldUuid2NewUuidListMap.computeIfAbsent(oldUuid, key -> new ArrayList<>()).add(newUuid); -// newConfigObj.setUuid(newUuid); -// newConfigObj.setCiId(configObj.getCiId()); -// newConfigObj.setCiName(configObj.getCiName()); -// newConfigObj.setCiLabel(configObj.getCiLabel()); -// newConfigObj.setIsStart(configObj.getIsStart()); -// newConfigObj.setCiIcon(configObj.getCiIcon()); -// newConfigObj.setMappingList(newMappingList); -// newConfigList.add(newConfigObj); -// } -// } -// // 遍历newConfigList,根据oldUuid2NewUuidListMap,将关系映射配置信息中的valueList数据重新构建 -// for (CiEntitySyncConfigVo configObj : newConfigList) { -// List mappingList = configObj.getMappingList(); -// for (CiEntitySyncMappingVo mappingObj : mappingList) { -// String key = mappingObj.getKey(); -// if (key.startsWith("rel")) { -// JSONArray valueList = mappingObj.getValueList(); -// if (CollectionUtils.isNotEmpty(valueList)) { -// JSONArray newValueList = new JSONArray(); -// for (int i = 0; i < valueList.size(); i++) { -// JSONObject valueObj = valueList.getJSONObject(i); -// String ciEntityUuid = valueObj.getString("ciEntityUuid"); -// List newUuidList = oldUuid2NewUuidListMap.get(ciEntityUuid); -// if (CollectionUtils.isNotEmpty(newUuidList)) { -// for (String newUuid : newUuidList) { -// JSONObject newValueObj = new JSONObject(); -// newValueObj.putAll(valueObj); -// newValueObj.put("ciEntityUuid", newUuid); -// newValueList.add(newValueObj); -// } -// mappingObj.setValueList(newValueList); -// } else { -// JSONObject newValueObj = new JSONObject(); -// newValueObj.putAll(valueObj); -// newValueList.add(newValueObj); -// } -// } -// } -// } -// } -// } -// return newConfigList; -// } - - /** - * 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 - * @param configList 配置信息列表 - * @param formAttributeMap 表单组件信息 - * @param processTaskFormAttributeDataMap 表单数据信息 - */ -// private void handleMappingFormComponent( -// List configList, -// Map formAttributeMap, -// Map processTaskFormAttributeDataMap -// ) { -// for (CiEntitySyncConfigVo configObj : configList) { -// List mappingList = configObj.getMappingList(); -// for (CiEntitySyncMappingVo mappingObj : mappingList) { -// JSONArray valueList = mappingObj.getValueList(); -// if (CollectionUtils.isEmpty(valueList)) { -// continue; -// } -// JSONArray newValueList = new JSONArray(); -// String mappingMode = mappingObj.getMappingMode(); -// mappingObj.setValueList(newValueList); -// if (Objects.equals(mappingMode, "formTableComponent")) { -// mappingObj.setMappingMode("constant"); -// ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); -// if (attributeDataVo == null) { -// continue; -// } -// List filterList = mappingObj.getFilterList(); -// JSONArray tbodyList = getTbodyList(attributeDataVo, filterList); -// if (CollectionUtils.isEmpty(tbodyList)) { -// continue; -// } -// String column = mappingObj.getColumn(); -// for (int m = 0; m < tbodyList.size(); m++) { -// JSONObject tbodyObj = tbodyList.getJSONObject(m); -// if (MapUtils.isEmpty(tbodyObj)) { -// continue; -// } -// Object valueObj = tbodyObj.get(column); -// if (valueObj instanceof JSONObject) { -// String valueStr = ((JSONObject) valueObj).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else if (valueObj instanceof JSONArray) { -// JSONArray valueArray = (JSONArray) valueObj; -// for (int j = 0; j < valueArray.size(); j++) { -// Object valueObj2 = valueArray.get(j); -// if (valueObj2 instanceof JSONObject) { -// String valueStr = ((JSONObject) valueObj2).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else { -// String valueStr = valueObj2.toString(); -// newValueList.add(valueStr); -// } -// } -// } else { -// String valueStr = valueObj.toString(); -// newValueList.add(valueStr); -// } -// } -// } else if (Objects.equals(mappingMode, "formCommonComponent")) { -// mappingObj.setMappingMode("constant"); -// ProcessTaskFormAttributeDataVo attributeDataVo = processTaskFormAttributeDataMap.get(valueList.getString(0)); -// if (attributeDataVo == null) { -// continue; -// } -// Object dataObj = attributeDataVo.getDataObj(); -// if (dataObj == null) { -// continue; -// } -// FormAttributeVo formAttributeVo = formAttributeMap.get(valueList.getString(0)); -// if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { -// if (dataObj instanceof JSONArray) { -// JSONArray dataArray = (JSONArray) dataObj; -// for (int m = 0; m < dataArray.size(); m++) { -// JSONObject data = dataArray.getJSONObject(m); -// Long id = data.getLong("id"); -// if (id != null) { -// newValueList.add(id); -// } -// } -// } -// } else if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMRADIO.getHandler()) -// || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) -// || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { -// if (dataObj instanceof JSONObject) { -// String valueStr = ((JSONObject) dataObj).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else if (dataObj instanceof JSONArray) { -// JSONArray valueArray = (JSONArray) dataObj; -// for (int j = 0; j < valueArray.size(); j++) { -// Object valueObj = valueArray.get(j); -// if (valueObj instanceof JSONObject) { -// String valueStr = ((JSONObject) valueObj).getString("value"); -// if (StringUtils.isNotBlank(valueStr)) { -// newValueList.add(valueStr); -// } -// } else { -// String valueStr = valueObj.toString(); -// newValueList.add(valueStr); -// } -// } -// } else if (dataObj instanceof String) { -// String valueStr = (String) dataObj; -// newValueList.add(valueStr); -// } -// } else { -// if (dataObj instanceof JSONObject) { -// -// } else if (dataObj instanceof JSONArray) { -// newValueList.addAll((JSONArray) dataObj); -// } else { -// newValueList.add(dataObj); -// } -// } -// } else { -// newValueList.addAll(valueList); -// } -// } -// } -// } - /** * 遍历configList,根据唯一规则属性值删除重复配置信息 * @param configList 配置信息列表 @@ -801,78 +532,36 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return newConfigList; } - /** - * 遍历configList,重新生成uuid的值 - * @param configList 配置信息列表 - * @return - */ -// private List updateUuidValue(List configList) { -// Map oldUuid2NewUuidMap = new HashMap<>(); -// for (CiEntitySyncConfigVo configObject : configList) { -// String uuid = configObject.getUuid(); -// Long id = configObject.getId(); -// if (id != null) { -// CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoById(id); -// if (ciEntityVo == null) { -// configObject.setId(null); -// oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); -// } else { -// if (!Objects.equals(uuid, ciEntityVo.getUuid())) { -// oldUuid2NewUuidMap.put(uuid, ciEntityVo.getUuid()); -// } -// } -// } else if (StringUtils.isNotBlank(uuid)) { -// CiEntityVo ciEntityVo = ciEntityMapper.getCiEntityBaseInfoByUuid(uuid); -// if (ciEntityVo != null) { -// oldUuid2NewUuidMap.put(uuid, UuidUtil.randomUuid()); -// } -// } -// } -// if (MapUtils.isNotEmpty(oldUuid2NewUuidMap)) { -// String configListStr = JSONObject.toJSONString(configList); -// for (Map.Entry entry : oldUuid2NewUuidMap.entrySet()) { -// configListStr = configListStr.replace(entry.getKey(), entry.getValue()); -// } -// return JSONObject.parseArray(configListStr, CiEntitySyncConfigVo.class); -// } -// return configList; -// } /** * 重新构建configList配置信息 - * @param configList 配置信息列表 - * @param formAttributeMap 表单组件信息 - * @param processTaskFormAttributeDataMap 表单数据信息 - * @return - */ -// private List rebuildConfigList( -// List configList, -// Map formAttributeMap, -// Map processTaskFormAttributeDataMap, -// Map formAttributeDataMap) { -// // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 -// configList = handleBatchDataSource(configList, processTaskFormAttributeDataMap); -// // 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 -// handleMappingFormComponent(configList, formAttributeMap, processTaskFormAttributeDataMap); -// // 遍历configList,根据唯一规则属性值删除重复配置信息 -// configList = removeDuplicatesByUniqueAttrValue(configList); -// // 遍历configList,重新生成uuid的值 -// configList = updateUuidValue(configList); -// return configList; -// } - - /** - * 重新构建configList配置信息 - * @param configList 配置信息列表 + * @param originalConfigList 原始配置信息列表 * @param formAttributeDataMap 表单数据信息 * @return */ - private List rebuildConfigList2( - List configList, + private List rebuildConfigList( + List originalConfigList, Map formAttributeDataMap) { - configList = handleMappingFormComponent2(configList, formAttributeDataMap); + System.out.println("configList = " + JSONObject.toJSONString(originalConfigList)); + List newConfigList = new ArrayList<>(); + // 保存起始模型配置信息 +// CiEntitySyncConfigVo startConfigObj = null; +// Map ciEntitySyncConfigMap = new HashMap<>(); +// for (CiEntitySyncConfigVo configObj : originalConfigList) { +// String uuid = configObj.getUuid(); +// ciEntitySyncConfigMap.put(uuid, configObj); +// if (Objects.equals(configObj.getIsStart(), 1)) { +// startConfigObj = configObj; +// } +// } + CiEntitySyncConfigVo startConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getIsStart(), 1)).findFirst().get(); + if (startConfigObj != null) { +// startConfigObj.setUuid(UuidUtil.randomUuid()); + // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 + handleBatchDataSource(originalConfigList, startConfigObj, formAttributeDataMap, newConfigList); + } + System.out.println("newCiEntitySyncConfigList = " + JSONObject.toJSONString(newConfigList)); // 遍历configList,根据唯一规则属性值删除重复配置信息 - configList = removeDuplicatesByUniqueAttrValue(configList); - return configList; + return removeDuplicatesByUniqueAttrValue(newConfigList); } private List createCiEntityTransactionVo( @@ -1103,82 +792,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return ciEntityTransactionList; } -// private JSONArray getTbodyList(ProcessTaskFormAttributeDataVo formAttributeDataVo, List filterList) { -// JSONArray tbodyList = new JSONArray(); -// if (formAttributeDataVo == null) { -// return tbodyList; -// } -// if (!Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLEINPUTER.getHandler()) -// && !Objects.equals(formAttributeDataVo.getType(), neatlogic.framework.form.constvalue.FormHandler.FORMTABLESELECTOR.getHandler())) { -// return tbodyList; -// } -// if (formAttributeDataVo.getDataObj() == null) { -// return tbodyList; -// } -// JSONArray dataList = (JSONArray) formAttributeDataVo.getDataObj(); -// // 数据过滤 -// if (CollectionUtils.isNotEmpty(filterList)) { -// for (int i = 0; i < dataList.size(); i++) { -// JSONObject data = dataList.getJSONObject(i); -// if (MapUtils.isEmpty(data)) { -// continue; -// } -// boolean flag = true; -// for (CiEntitySyncFilterVo filterObj : filterList) { -// String column = filterObj.getColumn(); -// if (StringUtils.isBlank(column)) { -// continue; -// } -// String expression = filterObj.getExpression(); -// if (StringUtils.isBlank(expression)) { -// continue; -// } -// String value = filterObj.getValue(); -// if (StringUtils.isBlank(value)) { -// continue; -// } -// if (Objects.equals(expression, Expression.EQUAL.getExpression())) { -// if (!Objects.equals(value, data.getString(column))) { -// flag = false; -// break; -// } -// } else if (Objects.equals(expression, Expression.UNEQUAL.getExpression())) { -// if (Objects.equals(value, data.getString(column))) { -// flag = false; -// break; -// } -// } else if (Objects.equals(expression, Expression.LIKE.getExpression())) { -// String columnValue = data.getString(column); -// if (StringUtils.isBlank(columnValue)) { -// flag = false; -// break; -// } -// if (!columnValue.contains(value)) { -// flag = false; -// break; -// } -// } else if (Objects.equals(expression, Expression.NOTLIKE.getExpression())) { -// String columnValue = data.getString(column); -// if (StringUtils.isBlank(columnValue)) { -// continue; -// } -// if (columnValue.contains(value)) { -// flag = false; -// break; -// } -// } -// } -// if (flag) { -// tbodyList.add(data); -// } -// } -// } else { -// tbodyList = dataList; -// } -// return tbodyList; -// } - - private JSONArray getTbodyList2(JSONArray dataList, List filterList) { + private JSONArray getTbodyList(JSONArray dataList, List filterList) { JSONArray tbodyList = new JSONArray(); JSONArray tempList = new JSONArray(); // 数据过滤 @@ -1278,51 +892,31 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } /** - * 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 - * @param configList 配置信息列表 + * 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 + * @param originalConfigList 原始配置信息列表 + * @param currentConfig 当前要处理的配置信息 * @param formAttributeDataMap 表单数据信息 + * @param newConfigList 收集新产生的配置信息列表 + * @return */ - private List handleMappingFormComponent2( - List configList, - Map formAttributeDataMap - ) { - System.out.println("configList = " + JSONObject.toJSONString(configList)); - List newCiEntitySyncConfigList = new ArrayList<>(); - CiEntitySyncConfigVo startConfigObj = null; - Map ciEntitySyncConfigMap = new HashMap<>(); - for (CiEntitySyncConfigVo configObj : configList) { - String uuid = configObj.getUuid(); - ciEntitySyncConfigMap.put(uuid, configObj); - if (Objects.equals(configObj.getIsStart(), 1)) { - startConfigObj = configObj; - } - } - if (startConfigObj != null) { - startConfigObj.setUuid(UuidUtil.randomUuid()); - handleMappingFormComponent3(newCiEntitySyncConfigList, startConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); - } - System.out.println("newCiEntitySyncConfigList = " + JSONObject.toJSONString(newCiEntitySyncConfigList)); - return newCiEntitySyncConfigList; - } - - private List handleMappingFormComponent3( - List newCiEntitySyncConfigList, - CiEntitySyncConfigVo configObj, - Map ciEntitySyncConfigMap, - Map formAttributeDataMap + private List handleBatchDataSource( + List originalConfigList, + CiEntitySyncConfigVo currentConfig, + Map formAttributeDataMap, + List newConfigList ) { List newUuidList = new ArrayList<>(); List batchDataColumnList = new ArrayList<>(); JSONArray tbodyList = new JSONArray(); - if (Objects.equals(configObj.getCreatePolicy(), "batch")) { + if (Objects.equals(currentConfig.getCreatePolicy(), "batch")) { // 批量操作配置信息 - CiEntitySyncBatchDataSourceVo batchDataSource = configObj.getBatchDataSource(); + CiEntitySyncBatchDataSourceVo batchDataSource = currentConfig.getBatchDataSource(); String attributeUuid = batchDataSource.getAttributeUuid(); Object dataObj = formAttributeDataMap.get(attributeUuid); if (dataObj instanceof JSONArray) { JSONArray dataList = (JSONArray) dataObj; List filterList = batchDataSource.getFilterList(); - tbodyList = getTbodyList2(dataList, filterList); + tbodyList = getTbodyList(dataList, filterList); if (CollectionUtils.isEmpty(tbodyList)) { return newUuidList; } @@ -1332,8 +926,8 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return newUuidList; } } - handleMappingFormComponent4(configObj, batchDataColumnList, formAttributeDataMap); - List mappingList = configObj.getMappingList(); + handleMappingFormComponent(currentConfig, batchDataColumnList, formAttributeDataMap); + List mappingList = currentConfig.getMappingList(); if (CollectionUtils.isNotEmpty(tbodyList)) { // 遍历批量操作表格数据 for (int j = 0; j < tbodyList.size(); j++) { @@ -1341,7 +935,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { if (MapUtils.isEmpty(tbodyObj)) { continue; } - CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); List newMappingList = new ArrayList<>(); for (CiEntitySyncMappingVo mappingObj : mappingList) { JSONArray valueList = mappingObj.getValueList(); @@ -1428,43 +1021,49 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { newMappingList.add(newMappingObj); } } - String newUuid = UuidUtil.randomUuid(); - newConfigObj.setUuid(newUuid); - newConfigObj.setCiId(configObj.getCiId()); - newConfigObj.setCiName(configObj.getCiName()); - newConfigObj.setCiLabel(configObj.getCiLabel()); - newConfigObj.setIsStart(configObj.getIsStart()); - newConfigObj.setCiIcon(configObj.getCiIcon()); + CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); + newConfigObj.setUuid(UuidUtil.randomUuid()); + newConfigObj.setCiId(currentConfig.getCiId()); + newConfigObj.setCiName(currentConfig.getCiName()); + newConfigObj.setCiLabel(currentConfig.getCiLabel()); + newConfigObj.setIsStart(currentConfig.getIsStart()); + newConfigObj.setCiIcon(currentConfig.getCiIcon()); newConfigObj.setMappingList(newMappingList); newUuidList.add(newConfigObj.getUuid()); + newConfigList.add(newConfigObj); formAttributeDataMap.putAll(tbodyObj); - newCiEntitySyncConfigList.add(newConfigObj); - handleMappingRelConfig(newCiEntitySyncConfigList, newConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); + handleMappingRelConfig(originalConfigList, newConfigObj, formAttributeDataMap, newConfigList); } } else { - newUuidList.add(configObj.getUuid()); - newCiEntitySyncConfigList.add(configObj); - handleMappingRelConfig(newCiEntitySyncConfigList, configObj, ciEntitySyncConfigMap, formAttributeDataMap); + CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); + newConfigObj.setUuid(UuidUtil.randomUuid()); + newConfigObj.setCiId(currentConfig.getCiId()); + newConfigObj.setCiName(currentConfig.getCiName()); + newConfigObj.setCiLabel(currentConfig.getCiLabel()); + newConfigObj.setIsStart(currentConfig.getIsStart()); + newConfigObj.setCiIcon(currentConfig.getCiIcon()); + newConfigObj.setMappingList(currentConfig.getMappingList()); + newUuidList.add(newConfigObj.getUuid()); + newConfigList.add(newConfigObj); + handleMappingRelConfig(originalConfigList, newConfigObj, formAttributeDataMap, newConfigList); } return newUuidList; } /** * 处理关系的新的配置项数据 - * @param newCiEntitySyncConfigList - * @param configObj - * @param ciEntitySyncConfigMap - * @param formAttributeDataMap + * @param originalConfigList 原始配置信息列表 + * @param currentConfig 当前要处理的配置信息 + * @param formAttributeDataMap 表单数据信息 + * @param newConfigList 收集新产生的配置信息列表 */ private void handleMappingRelConfig( - List newCiEntitySyncConfigList, - CiEntitySyncConfigVo configObj, - Map ciEntitySyncConfigMap, - Map formAttributeDataMap//, -// Map processTaskFormAttributeDataMap, -// Map formAttributeMap + List originalConfigList, + CiEntitySyncConfigVo currentConfig, + Map formAttributeDataMap, + List newConfigList ) { - List mappingList = configObj.getMappingList(); + List mappingList = currentConfig.getMappingList(); for (CiEntitySyncMappingVo mappingObj : mappingList) { String mappingMode = mappingObj.getMappingMode(); if (!Objects.equals(mappingMode, "new")) { @@ -1486,10 +1085,11 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } String type = valueObj.getString("type"); if (Objects.equals(type, "new")) { - CiEntitySyncConfigVo relConfigObj = ciEntitySyncConfigMap.get(ciEntityUuid); - replaceMappingRelFromCiEntityUuid(relConfigObj, configObj.getUuid()); - relConfigObj.setUuid(UuidUtil.randomUuid()); - List newCiEntityUuidList = handleMappingFormComponent3(newCiEntitySyncConfigList, relConfigObj, ciEntitySyncConfigMap, formAttributeDataMap); +// CiEntitySyncConfigVo relConfigObj = ciEntitySyncConfigMap.get(ciEntityUuid); + CiEntitySyncConfigVo relConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getUuid(), ciEntityUuid)).findFirst().get(); + replaceMappingRelFromCiEntityUuid(relConfigObj, currentConfig.getUuid()); +// relConfigObj.setUuid(UuidUtil.randomUuid()); + List newCiEntityUuidList = handleBatchDataSource(originalConfigList, relConfigObj, formAttributeDataMap, newConfigList); for (String newCiEntityUuid : newCiEntityUuidList) { JSONObject newValueObj = new JSONObject(); newValueObj.putAll(valueObj); @@ -1539,7 +1139,13 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } - private void handleMappingFormComponent4( + /** + * 遍历configList,将mappingList中映射模式为“表单普通组件”和“表单表格组件”的数据替换称表单组件对应的真实值 + * @param configObj 配置信息 + * @param batchDataColumnList 遍历对象属性列表 + * @param formAttributeDataMap 表单数据信息 + */ + private void handleMappingFormComponent( CiEntitySyncConfigVo configObj, List batchDataColumnList, Map formAttributeDataMap) { @@ -1571,6 +1177,24 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } else { newValueList.add(dataObj); } + } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { + String attributeUuid = valueList.getString(valueList.size() -1); + if (batchDataColumnList.contains(attributeUuid)) { + newValueList.addAll(valueList); + continue; + } + mappingObj.setMappingMode("constant"); + Object dataObj = formAttributeDataMap.get(attributeUuid); + if (dataObj == null) { + continue; + } + if (dataObj instanceof JSONObject) { + // TODO 一般不会出现 + } else if (dataObj instanceof JSONArray) { + newValueList.addAll((JSONArray) dataObj); + } else { + newValueList.add(dataObj); + } } else if (Objects.equals(mappingMode, "formCommonComponent")) { mappingObj.setMappingMode("constant"); Object dataObj = formAttributeDataMap.get(valueList.getString(0)); -- Gitee From ed41c173a0ab559c0f18fa558a964c6ff1396c89 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Sat, 2 Dec 2023 16:03:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-C?= =?UTF-8?q?MDB=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031703835934720]后端-CMDB节点支持子表单 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031703835934720 --- .../stephandler/CmdbSyncProcessComponent.java | 390 ++++++++---------- 1 file changed, 172 insertions(+), 218 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java index 3f893d82..52fa7681 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -39,9 +39,9 @@ import neatlogic.framework.cmdb.exception.cientity.NewCiEntityNotFoundException; import neatlogic.framework.cmdb.utils.RelUtil; import neatlogic.framework.common.constvalue.Expression; import neatlogic.framework.common.constvalue.InputFrom; +import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.form.constvalue.FormHandler; -import neatlogic.framework.form.dto.FormAttributeVo; -import neatlogic.framework.form.dto.FormVersionVo; +import neatlogic.framework.form.service.IFormCrossoverService; import neatlogic.framework.process.constvalue.ProcessFlowDirection; import neatlogic.framework.process.constvalue.ProcessStepMode; import neatlogic.framework.process.constvalue.ProcessTaskAuditType; @@ -75,7 +75,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; -import java.util.stream.Collectors; @Service public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { @@ -153,58 +152,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return null; } - private Object getFormAttributeData(ProcessTaskFormAttributeDataVo attributeDataVo, FormAttributeVo formAttributeVo) { - if (attributeDataVo == null) { - return null; - } - Object dataObj = attributeDataVo.getDataObj(); - if (dataObj == null) { - return null; - } - if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { - JSONArray resultList = new JSONArray(); - if (dataObj instanceof JSONArray) { - JSONArray dataArray = (JSONArray) dataObj; - for (int m = 0; m < dataArray.size(); m++) { - JSONObject data = dataArray.getJSONObject(m); - Long id = data.getLong("id"); - if (id != null) { - resultList.add(id); - } - } - } - return resultList; - } else if (Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMRADIO.getHandler()) - || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) - || Objects.equals(formAttributeVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { - if (dataObj instanceof JSONObject) { - String valueStr = ((JSONObject) dataObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - return valueStr; - } - return null; - } else if (dataObj instanceof JSONArray) { - JSONArray resultList = new JSONArray(); - JSONArray valueArray = (JSONArray) dataObj; - for (int j = 0; j < valueArray.size(); j++) { - Object valueObj = valueArray.get(j); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - resultList.add(valueStr); - } - } else { - String valueStr = valueObj.toString(); - resultList.add(valueStr); - } - } - return resultList; - } else if (dataObj instanceof String) { - return dataObj; - } - } - return dataObj; - } @Override protected int myActive(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException { try { @@ -225,39 +172,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { myAutoComplete(currentProcessTaskStepVo); return 0; } -// List formAttributeList = new ArrayList<>(); -// List processTaskFormAttributeDataList = new ArrayList<>(); - Map formAttributeDataMap = new HashMap<>(); - Map formAttributeMap = new HashMap<>(); - Long processTaskId = currentProcessTaskStepVo.getProcessTaskId(); - // 如果工单有表单信息,则查询出表单配置及数据 - ProcessTaskFormVo processTaskFormVo = processTaskMapper.getProcessTaskFormByProcessTaskId(processTaskId); - if (processTaskFormVo != null) { - String formContent = selectContentByHashMapper.getProcessTaskFromContentByHash(processTaskFormVo.getFormContentHash()); - FormVersionVo formVersionVo = new FormVersionVo(); - formVersionVo.setFormUuid(processTaskFormVo.getFormUuid()); - formVersionVo.setFormName(processTaskFormVo.getFormName()); - formVersionVo.setFormConfig(JSONObject.parseObject(formContent)); - List formAttributeList = formVersionVo.getFormAttributeList(); - if (CollectionUtils.isNotEmpty(formAttributeList)) { - formAttributeMap = formAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e)); - } - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); - if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataList)) { - for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { -// FormAttributeVo formAttributeVo = formAttributeMap.get(attributeDataVo.getAttributeUuid()); -// if (formAttributeVo == null) { -// continue; -// } -// Object dataObj = getFormAttributeData(attributeDataVo, formAttributeVo); -// if (dataObj == null) { -// continue; -// } -// formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); - formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), getFormAttributeData(attributeDataVo, formAttributeMap.get(attributeDataVo.getAttributeUuid()))); - } - } - } boolean flag = false; JSONArray errorMessageList = new JSONArray(); try { @@ -285,7 +199,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } List configList = ciEntitySyncVo.getConfigList(); /* 重新构建configList配置信息 */ - configList = rebuildConfigList(configList, formAttributeDataMap); + configList = rebuildConfigList(configList, currentProcessTaskStepVo.getProcessTaskId()); if (CollectionUtils.isEmpty(configList)) { myAutoComplete(currentProcessTaskStepVo); return 1; @@ -535,29 +449,37 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { /** * 重新构建configList配置信息 * @param originalConfigList 原始配置信息列表 - * @param formAttributeDataMap 表单数据信息 + * @param processTaskId 工单ID * @return */ private List rebuildConfigList( List originalConfigList, - Map formAttributeDataMap) { + Long processTaskId + ) { System.out.println("configList = " + JSONObject.toJSONString(originalConfigList)); List newConfigList = new ArrayList<>(); - // 保存起始模型配置信息 -// CiEntitySyncConfigVo startConfigObj = null; -// Map ciEntitySyncConfigMap = new HashMap<>(); -// for (CiEntitySyncConfigVo configObj : originalConfigList) { -// String uuid = configObj.getUuid(); -// ciEntitySyncConfigMap.put(uuid, configObj); -// if (Objects.equals(configObj.getIsStart(), 1)) { -// startConfigObj = configObj; -// } -// } + // 找出起始模型配置信息 CiEntitySyncConfigVo startConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getIsStart(), 1)).findFirst().get(); if (startConfigObj != null) { -// startConfigObj.setUuid(UuidUtil.randomUuid()); + Map formAttributeDataMap = new HashMap<>(); + String formConfig = null; + // 如果工单有表单信息,则查询出表单配置及数据 + ProcessTaskFormVo processTaskFormVo = processTaskMapper.getProcessTaskFormByProcessTaskId(processTaskId); + if (processTaskFormVo != null) { + formConfig = selectContentByHashMapper.getProcessTaskFromContentByHash(processTaskFormVo.getFormContentHash()); + List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); + if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataList)) { + for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataList) { + Object dataObj = formAttributeDataAdaptsToCmdb(attributeDataVo.getAttributeUuid(), attributeDataVo.getDataObj(), formConfig); + if (dataObj == null) { + continue; + } + formAttributeDataMap.put(attributeDataVo.getAttributeUuid(), dataObj); + } + } + } // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 - handleBatchDataSource(originalConfigList, startConfigObj, formAttributeDataMap, newConfigList); + handleBatchDataSource(originalConfigList, startConfigObj, formAttributeDataMap, newConfigList, formConfig); } System.out.println("newCiEntitySyncConfigList = " + JSONObject.toJSONString(newConfigList)); // 遍历configList,根据唯一规则属性值删除重复配置信息 @@ -792,104 +714,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { return ciEntityTransactionList; } - private JSONArray getTbodyList(JSONArray dataList, List filterList) { - JSONArray tbodyList = new JSONArray(); - JSONArray tempList = new JSONArray(); - // 数据过滤 - if (CollectionUtils.isNotEmpty(filterList)) { - for (int i = 0; i < dataList.size(); i++) { - JSONObject data = dataList.getJSONObject(i); - if (MapUtils.isEmpty(data)) { - continue; - } - boolean flag = true; - for (CiEntitySyncFilterVo filterObj : filterList) { - String column = filterObj.getColumn(); - if (StringUtils.isBlank(column)) { - continue; - } - String expression = filterObj.getExpression(); - if (StringUtils.isBlank(expression)) { - continue; - } - String value = filterObj.getValue(); - if (StringUtils.isBlank(value)) { - continue; - } - if (Objects.equals(expression, Expression.EQUAL.getExpression())) { - if (!Objects.equals(value, data.getString(column))) { - flag = false; - break; - } - } else if (Objects.equals(expression, Expression.UNEQUAL.getExpression())) { - if (Objects.equals(value, data.getString(column))) { - flag = false; - break; - } - } else if (Objects.equals(expression, Expression.LIKE.getExpression())) { - String columnValue = data.getString(column); - if (StringUtils.isBlank(columnValue)) { - flag = false; - break; - } - if (!columnValue.contains(value)) { - flag = false; - break; - } - } else if (Objects.equals(expression, Expression.NOTLIKE.getExpression())) { - String columnValue = data.getString(column); - if (StringUtils.isBlank(columnValue)) { - continue; - } - if (columnValue.contains(value)) { - flag = false; - break; - } - } - } - if (flag) { - tempList.add(data); - } - } - } else { - tempList = dataList; - } - - for (int i = 0; i < tempList.size(); i++) { - JSONObject newRowDataObj = new JSONObject(); - JSONObject rowDataObj = tempList.getJSONObject(i); - for (Map.Entry entry : rowDataObj.entrySet()) { - Object valueObj = entry.getValue(); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newRowDataObj.put(entry.getKey(), valueStr); - } - } else if (valueObj instanceof JSONArray) { - JSONArray valueList = new JSONArray(); - JSONArray valueArray = (JSONArray) valueObj; - for (int k = 0; k < valueArray.size(); k++) { - Object valueObj2 = valueArray.get(k); - if (valueObj2 instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj2).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - valueList.add(valueStr); - } else { - valueList.add(valueObj2); - } - } else { - valueList.add(valueObj2); - } - } - newRowDataObj.put(entry.getKey(), valueList); - } else { - newRowDataObj.put(entry.getKey(), valueObj); - } - } - tbodyList.add(newRowDataObj); - } - return tbodyList; - } /** * 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 @@ -897,42 +721,47 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param currentConfig 当前要处理的配置信息 * @param formAttributeDataMap 表单数据信息 * @param newConfigList 收集新产生的配置信息列表 + * @param formConfig 表单配置信息 * @return */ private List handleBatchDataSource( List originalConfigList, CiEntitySyncConfigVo currentConfig, Map formAttributeDataMap, - List newConfigList + List newConfigList, + String formConfig ) { List newUuidList = new ArrayList<>(); List batchDataColumnList = new ArrayList<>(); - JSONArray tbodyList = new JSONArray(); + JSONArray batchDataList = new JSONArray(); if (Objects.equals(currentConfig.getCreatePolicy(), "batch")) { // 批量操作配置信息 CiEntitySyncBatchDataSourceVo batchDataSource = currentConfig.getBatchDataSource(); String attributeUuid = batchDataSource.getAttributeUuid(); Object dataObj = formAttributeDataMap.get(attributeUuid); + if (dataObj == null) { + return newUuidList; + } if (dataObj instanceof JSONArray) { JSONArray dataList = (JSONArray) dataObj; List filterList = batchDataSource.getFilterList(); - tbodyList = getTbodyList(dataList, filterList); - if (CollectionUtils.isEmpty(tbodyList)) { + batchDataList = filterData(dataList, filterList, formConfig); + if (CollectionUtils.isEmpty(batchDataList)) { return newUuidList; } - JSONObject tbodyObj = tbodyList.getJSONObject(0); - batchDataColumnList.addAll(tbodyObj.keySet()); + JSONObject rowDataObj = batchDataList.getJSONObject(0); + batchDataColumnList.addAll(rowDataObj.keySet()); } else { return newUuidList; } } handleMappingFormComponent(currentConfig, batchDataColumnList, formAttributeDataMap); List mappingList = currentConfig.getMappingList(); - if (CollectionUtils.isNotEmpty(tbodyList)) { + if (CollectionUtils.isNotEmpty(batchDataList)) { // 遍历批量操作表格数据 - for (int j = 0; j < tbodyList.size(); j++) { - JSONObject tbodyObj = tbodyList.getJSONObject(j); - if (MapUtils.isEmpty(tbodyObj)) { + for (int j = 0; j < batchDataList.size(); j++) { + JSONObject rowDataObj = batchDataList.getJSONObject(j); + if (MapUtils.isEmpty(rowDataObj)) { continue; } List newMappingList = new ArrayList<>(); @@ -950,7 +779,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { continue; } JSONArray newValueList = new JSONArray(); - Object valueObj = tbodyObj.get(attributeUuid); + Object valueObj = rowDataObj.get(attributeUuid); if (valueObj instanceof JSONObject) { String valueStr = ((JSONObject) valueObj).getString("value"); if (StringUtils.isNotBlank(valueStr)) { @@ -987,7 +816,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { continue; } JSONArray newValueList = new JSONArray(); - Object valueObj = tbodyObj.get(attributeUuid); + Object valueObj = rowDataObj.get(attributeUuid); if (valueObj instanceof JSONObject) { String valueStr = ((JSONObject) valueObj).getString("value"); if (StringUtils.isNotBlank(valueStr)) { @@ -1031,8 +860,11 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { newConfigObj.setMappingList(newMappingList); newUuidList.add(newConfigObj.getUuid()); newConfigList.add(newConfigObj); - formAttributeDataMap.putAll(tbodyObj); - handleMappingRelConfig(originalConfigList, newConfigObj, formAttributeDataMap, newConfigList); + formAttributeDataMap.putAll(rowDataObj); + Map newFormAttributeDataMap = new HashMap<>(); + newFormAttributeDataMap.putAll(formAttributeDataMap); + newFormAttributeDataMap.putAll(rowDataObj); + handleMappingRelConfig(originalConfigList, newConfigObj, newFormAttributeDataMap, newConfigList, formConfig); } } else { CiEntitySyncConfigVo newConfigObj = new CiEntitySyncConfigVo(); @@ -1045,7 +877,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { newConfigObj.setMappingList(currentConfig.getMappingList()); newUuidList.add(newConfigObj.getUuid()); newConfigList.add(newConfigObj); - handleMappingRelConfig(originalConfigList, newConfigObj, formAttributeDataMap, newConfigList); + handleMappingRelConfig(originalConfigList, newConfigObj, formAttributeDataMap, newConfigList, formConfig); } return newUuidList; } @@ -1056,12 +888,14 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @param currentConfig 当前要处理的配置信息 * @param formAttributeDataMap 表单数据信息 * @param newConfigList 收集新产生的配置信息列表 + * @param formConfig 表单配置信息 */ private void handleMappingRelConfig( List originalConfigList, CiEntitySyncConfigVo currentConfig, Map formAttributeDataMap, - List newConfigList + List newConfigList, + String formConfig ) { List mappingList = currentConfig.getMappingList(); for (CiEntitySyncMappingVo mappingObj : mappingList) { @@ -1089,7 +923,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { CiEntitySyncConfigVo relConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getUuid(), ciEntityUuid)).findFirst().get(); replaceMappingRelFromCiEntityUuid(relConfigObj, currentConfig.getUuid()); // relConfigObj.setUuid(UuidUtil.randomUuid()); - List newCiEntityUuidList = handleBatchDataSource(originalConfigList, relConfigObj, formAttributeDataMap, newConfigList); + List newCiEntityUuidList = handleBatchDataSource(originalConfigList, relConfigObj, formAttributeDataMap, newConfigList, formConfig); for (String newCiEntityUuid : newCiEntityUuidList) { JSONObject newValueObj = new JSONObject(); newValueObj.putAll(valueObj); @@ -1213,6 +1047,126 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } } + + + + /** + * 表单数据适配CMDB数据 + * @param attributeUuid 表单属性uuid + * @param originalValue 表单属性值 + * @param formConfig 表单配置信息 + * @return + */ + private Object formAttributeDataAdaptsToCmdb(String attributeUuid, Object originalValue, String formConfig) { + if (originalValue == null) { + return null; + } + IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); + String handler = formCrossoverService.getFormAttributeHandler(attributeUuid, formConfig); + if (Objects.equals(handler, FormHandler.FORMUPLOAD.getHandler())) { + JSONArray resultList = new JSONArray(); + if (originalValue instanceof JSONArray) { + JSONArray dataArray = (JSONArray) originalValue; + for (int m = 0; m < dataArray.size(); m++) { + JSONObject data = dataArray.getJSONObject(m); + Long id = data.getLong("id"); + if (id != null) { + resultList.add(id); + } + } + } + return resultList; + } else if (Objects.equals(handler, FormHandler.FORMRADIO.getHandler()) + || Objects.equals(handler, FormHandler.FORMCHECKBOX.getHandler()) + || Objects.equals(handler, FormHandler.FORMSELECT.getHandler())) { + return formCrossoverService.getFormSelectAttributeValueByOriginalValue(originalValue); + } + return originalValue; + } + + /** + * 过滤数据 + * @param dataList 输入数据 + * @param filterList 过滤设置列表 + * @param formConfig 表单配置信息 + * @return + */ + private JSONArray filterData(JSONArray dataList, List filterList, String formConfig) { + JSONArray resultList = new JSONArray(); + JSONArray tempList = new JSONArray(); + // 数据过滤 + if (CollectionUtils.isNotEmpty(filterList)) { + for (int i = 0; i < dataList.size(); i++) { + JSONObject rowData = dataList.getJSONObject(i); + if (MapUtils.isEmpty(rowData)) { + continue; + } + boolean flag = true; + for (CiEntitySyncFilterVo filterObj : filterList) { + String column = filterObj.getColumn(); + if (StringUtils.isBlank(column)) { + continue; + } + String expression = filterObj.getExpression(); + if (StringUtils.isBlank(expression)) { + continue; + } + String value = filterObj.getValue(); + if (StringUtils.isBlank(value)) { + continue; + } + Object data = formAttributeDataAdaptsToCmdb(column, rowData.get(column), formConfig); + if (Objects.equals(expression, Expression.EQUAL.getExpression())) { + if (!Objects.equals(value, data)) { + flag = false; + break; + } + } else if (Objects.equals(expression, Expression.UNEQUAL.getExpression())) { + if (Objects.equals(value, data)) { + flag = false; + break; + } + } else if (Objects.equals(expression, Expression.LIKE.getExpression())) { + String columnValue = (String) data; + if (StringUtils.isBlank(columnValue)) { + flag = false; + break; + } + if (!columnValue.contains(value)) { + flag = false; + break; + } + } else if (Objects.equals(expression, Expression.NOTLIKE.getExpression())) { + String columnValue = (String) data; + if (StringUtils.isBlank(columnValue)) { + continue; + } + if (columnValue.contains(value)) { + flag = false; + break; + } + } + } + if (flag) { + tempList.add(rowData); + } + } + } else { + tempList = dataList; + } + + for (int i = 0; i < tempList.size(); i++) { + JSONObject newRowDataObj = new JSONObject(); + JSONObject rowDataObj = tempList.getJSONObject(i); + for (Map.Entry entry : rowDataObj.entrySet()) { + Object valueObj = formAttributeDataAdaptsToCmdb(entry.getKey(), entry.getValue(), formConfig); + newRowDataObj.put(entry.getKey(), valueObj); + } + resultList.add(newRowDataObj); + } + return resultList; + } + @Override protected int myAssign(ProcessTaskStepVo currentProcessTaskStepVo, Set workerSet) throws ProcessTaskException { return defaultAssign(currentProcessTaskStepVo, workerSet); -- Gitee From 761a7fb21a14301de8bcc6306e3967c3e08d7da1 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Sat, 2 Dec 2023 17:23:32 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-C?= =?UTF-8?q?MDB=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031703835934720]后端-CMDB节点支持子表单 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031703835934720 --- .../stephandler/CmdbSyncProcessComponent.java | 153 ++++++------------ 1 file changed, 49 insertions(+), 104 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java index 52fa7681..1d7c8d68 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -210,16 +210,9 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { Map dependencyConfigMap = new HashMap<>(); for (CiEntitySyncConfigVo configObject : configList) { String uuid = configObject.getUuid(); - if (StringUtils.isBlank(uuid)) { - continue; - } - Long ciId = configObject.getCiId(); - if (ciId == null) { - continue; - } CiEntityTransactionVo ciEntityTransactionVo = new CiEntityTransactionVo(); ciEntityTransactionVo.setCiEntityUuid(uuid); - ciEntityTransactionVo.setCiId(ciId); + ciEntityTransactionVo.setCiId(configObject.getCiId()); Long id = configObject.getId(); if (id != null) { ciEntityTransactionVo.setCiEntityId(id); @@ -380,9 +373,13 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { * @return */ private List removeDuplicatesByUniqueAttrValue(List configList) { - List uniqueAttrValueListJoinStrList = new ArrayList<>(); - List newConfigList = new ArrayList<>(); - for (CiEntitySyncConfigVo configObj : configList) { + // 保存唯一规则属性值组成的字符串与uuid的映射关系 + Map uniqueAttrValueListJoinStr2UuidMap = new HashMap<>(); + // 保存将要删除uuid与等价替换uuid的映射关系 + Map toDeleteUuid2EquivalentUuidMap = new HashMap<>(); + // 反向遍历,如果唯一规则属性值相同,后面数据优先级高 + for (int i = configList.size() - 1; i >= 0; i--) { + CiEntitySyncConfigVo configObj = configList.get(i); Long ciId = configObj.getCiId(); CiVo ciVo = ciMapper.getCiById(ciId); if (ciVo == null) { @@ -391,7 +388,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } List uniqueAttrIdList = ciVo.getUniqueAttrIdList(); if (CollectionUtils.isEmpty(uniqueAttrIdList)) { - newConfigList.add(configObj); continue; } Map key2ValueListMap = new HashMap<>(); @@ -410,7 +406,9 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } String uniqueAttrValueListJoinStr = String.join(",", list); - if (uniqueAttrValueListJoinStrList.contains(uniqueAttrValueListJoinStr)) { + String equivalentUuid = uniqueAttrValueListJoinStr2UuidMap.get(uniqueAttrValueListJoinStr); + if (StringUtils.isNotBlank(equivalentUuid)) { + toDeleteUuid2EquivalentUuidMap.put(configObj.getUuid(), equivalentUuid); continue; } //校验唯一规则 @@ -440,7 +438,36 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { configObj.setId(checkList.get(0).getId()); } } - uniqueAttrValueListJoinStrList.add(uniqueAttrValueListJoinStr); + uniqueAttrValueListJoinStr2UuidMap.put(uniqueAttrValueListJoinStr, configObj.getUuid()); + } + + List newConfigList = new ArrayList<>(); + for (CiEntitySyncConfigVo configObj : configList) { + if (toDeleteUuid2EquivalentUuidMap.containsKey(configObj.getUuid())) { + continue; + } + List mappingList = configObj.getMappingList(); + for (CiEntitySyncMappingVo mappingObj : mappingList) { + String mappingMode = mappingObj.getMappingMode(); + if (!Objects.equals(mappingMode, "new")) { + continue; + } + JSONArray valueList = mappingObj.getValueList(); + if (CollectionUtils.isEmpty(valueList)) { + continue; + } + for (int i = 0; i < valueList.size(); i++) { + JSONObject valueObj = valueList.getJSONObject(i); + if (MapUtils.isEmpty(valueObj)) { + continue; + } + String ciEntityUuid = valueObj.getString("ciEntityUuid"); + String equivalentUuid = toDeleteUuid2EquivalentUuidMap.get(ciEntityUuid); + if (StringUtils.isNotBlank(equivalentUuid)) { + valueObj.put("ciEntityUuid", equivalentUuid); + } + } + } newConfigList.add(configObj); } return newConfigList; @@ -456,7 +483,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { List originalConfigList, Long processTaskId ) { - System.out.println("configList = " + JSONObject.toJSONString(originalConfigList)); List newConfigList = new ArrayList<>(); // 找出起始模型配置信息 CiEntitySyncConfigVo startConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getIsStart(), 1)).findFirst().get(); @@ -481,7 +507,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { // 遍历configList,将“批量操作”的配置信息根据表单数据转换成多条“单个操作”配置信息 handleBatchDataSource(originalConfigList, startConfigObj, formAttributeDataMap, newConfigList, formConfig); } - System.out.println("newCiEntitySyncConfigList = " + JSONObject.toJSONString(newConfigList)); // 遍历configList,根据唯一规则属性值删除重复配置信息 return removeDuplicatesByUniqueAttrValue(newConfigList); } @@ -491,7 +516,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { CiEntitySyncConfigVo mainConfigObj, Map dependencyConfigMap) { List ciEntityTransactionList = new ArrayList<>(); - Long ciId = mainConfigObj.getCiId(); Map mappingMap = new HashMap<>(); List mappingList = mainConfigObj.getMappingList(); @@ -563,9 +587,6 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } } } - System.out.println(attrVo.getType()); - System.out.println(key + " = " + valueList.toJSONString()); - System.out.println("attrVo.getTargetCiId() = " + attrVo.getTargetCiId()); if (PropHandlerType.SELECT.getValue().equals(attrVo.getType())) { if (CollectionUtils.isNotEmpty(valueList)) { for (int i = 0; i < valueList.size(); i++) { @@ -772,7 +793,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } CiEntitySyncMappingVo newMappingObj = new CiEntitySyncMappingVo(mappingObj); String mappingMode = mappingObj.getMappingMode(); - if (Objects.equals(mappingMode, "formTableComponent")) { + if (Objects.equals(mappingMode, "formTableComponent") || Objects.equals(mappingMode, "formSubassemblyComponent")) { // 映射模式是表单表格组件 String attributeUuid = valueList.getString(valueList.size() -1); if (!batchDataColumnList.contains(attributeUuid)) { @@ -780,64 +801,11 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } JSONArray newValueList = new JSONArray(); Object valueObj = rowDataObj.get(attributeUuid); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else if (valueObj instanceof JSONArray) { + if (valueObj instanceof JSONArray) { JSONArray valueArray = (JSONArray) valueObj; - for (int k = 0; k < valueArray.size(); k++) { - Object valueObj2 = valueArray.get(k); - if (valueObj2 instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj2).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else { - newValueList.add(valueObj2.toString()); - } - } + newValueList.addAll(valueArray); } else { - String valueStr = valueObj.toString(); - newValueList.add(valueStr); - } - if (CollectionUtils.isNotEmpty(newValueList)) { - newMappingObj.setMappingMode("constant"); - newMappingObj.setValueList(newValueList); - } else { - continue; - } - newMappingList.add(newMappingObj); - } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { - // 映射模式是子表单组件 - String attributeUuid = valueList.getString(valueList.size() -1); - if (!batchDataColumnList.contains(attributeUuid)) { - continue; - } - JSONArray newValueList = new JSONArray(); - Object valueObj = rowDataObj.get(attributeUuid); - if (valueObj instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else if (valueObj instanceof JSONArray) { - JSONArray valueArray = (JSONArray) valueObj; - for (int k = 0; k < valueArray.size(); k++) { - Object valueObj2 = valueArray.get(k); - if (valueObj2 instanceof JSONObject) { - String valueStr = ((JSONObject) valueObj2).getString("value"); - if (StringUtils.isNotBlank(valueStr)) { - newValueList.add(valueStr); - } - } else { - newValueList.add(valueObj2.toString()); - } - } - } else { - String valueStr = valueObj.toString(); - newValueList.add(valueStr); + newValueList.add(valueObj); } if (CollectionUtils.isNotEmpty(newValueList)) { newMappingObj.setMappingMode("constant"); @@ -919,10 +887,8 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } String type = valueObj.getString("type"); if (Objects.equals(type, "new")) { -// CiEntitySyncConfigVo relConfigObj = ciEntitySyncConfigMap.get(ciEntityUuid); CiEntitySyncConfigVo relConfigObj = originalConfigList.stream().filter(e -> Objects.equals(e.getUuid(), ciEntityUuid)).findFirst().get(); replaceMappingRelFromCiEntityUuid(relConfigObj, currentConfig.getUuid()); -// relConfigObj.setUuid(UuidUtil.randomUuid()); List newCiEntityUuidList = handleBatchDataSource(originalConfigList, relConfigObj, formAttributeDataMap, newConfigList, formConfig); for (String newCiEntityUuid : newCiEntityUuidList) { JSONObject newValueObj = new JSONObject(); @@ -993,25 +959,8 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { JSONArray newValueList = new JSONArray(); String mappingMode = mappingObj.getMappingMode(); mappingObj.setValueList(newValueList); - if (Objects.equals(mappingMode, "formTableComponent")) { - String attributeUuid = valueList.getString(valueList.size() -1); - if (batchDataColumnList.contains(attributeUuid)) { - newValueList.addAll(valueList); - continue; - } - mappingObj.setMappingMode("constant"); - Object dataObj = formAttributeDataMap.get(attributeUuid); - if (dataObj == null) { - continue; - } - if (dataObj instanceof JSONObject) { - // TODO 一般不会出现 - } else if (dataObj instanceof JSONArray) { - newValueList.addAll((JSONArray) dataObj); - } else { - newValueList.add(dataObj); - } - } else if (Objects.equals(mappingMode, "formSubassemblyComponent")) { + if (Objects.equals(mappingMode, "formTableComponent") + || Objects.equals(mappingMode, "formSubassemblyComponent")) { String attributeUuid = valueList.getString(valueList.size() -1); if (batchDataColumnList.contains(attributeUuid)) { newValueList.addAll(valueList); @@ -1022,9 +971,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { if (dataObj == null) { continue; } - if (dataObj instanceof JSONObject) { - // TODO 一般不会出现 - } else if (dataObj instanceof JSONArray) { + if (dataObj instanceof JSONArray) { newValueList.addAll((JSONArray) dataObj); } else { newValueList.add(dataObj); @@ -1035,9 +982,7 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { if (dataObj == null) { continue; } - if (dataObj instanceof JSONObject) { - // TODO 一般不会出现 - } else if (dataObj instanceof JSONArray) { + if (dataObj instanceof JSONArray) { newValueList.addAll((JSONArray) dataObj); } else { newValueList.add(dataObj); -- Gitee From 310faa7ec4af3db30bc2fb9b91220d9a6312d974 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Sat, 2 Dec 2023 17:59:35 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-C?= =?UTF-8?q?MDB=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1031703835934720]后端-CMDB节点支持子表单 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1031703835934720 --- .../cmdb/formattribute/handler/CiEntityModifyHandler.java | 7 +++---- .../formattribute/handler/CiEntitySelectorHandler.java | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntityModifyHandler.java b/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntityModifyHandler.java index c8ecdb26..18b49e66 100644 --- a/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntityModifyHandler.java +++ b/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntityModifyHandler.java @@ -1,23 +1,22 @@ package neatlogic.module.cmdb.formattribute.handler; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.cmdb.enums.FormHandler; import neatlogic.framework.common.constvalue.ParamType; import neatlogic.framework.form.attribute.core.FormHandlerBase; import neatlogic.framework.form.constvalue.FormConditionModel; import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.exception.AttributeValidException; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; import java.util.*; -@Component +//@Component public class CiEntityModifyHandler extends FormHandlerBase { private final static Logger logger = LoggerFactory.getLogger(CiEntityModifyHandler.class); diff --git a/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntitySelectorHandler.java b/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntitySelectorHandler.java index 39f86cd6..d975ab57 100644 --- a/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntitySelectorHandler.java +++ b/src/main/java/neatlogic/module/cmdb/formattribute/handler/CiEntitySelectorHandler.java @@ -16,6 +16,8 @@ limitations under the License. package neatlogic.module.cmdb.formattribute.handler; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.cmdb.dto.cientity.CiEntityVo; import neatlogic.framework.cmdb.enums.FormHandler; import neatlogic.framework.common.constvalue.ParamType; @@ -24,10 +26,7 @@ import neatlogic.framework.form.constvalue.FormConditionModel; import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.exception.AttributeValidException; import neatlogic.module.cmdb.dao.mapper.cientity.CiEntityMapper; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; @@ -38,7 +37,7 @@ import java.util.stream.Collectors; * @author linbq * @since 2021/8/18 14:24 **/ -@Component +//@Component public class CiEntitySelectorHandler extends FormHandlerBase { @Resource -- Gitee