diff --git a/src/main/java/neatlogic/module/cmdb/matrix/handler/CiDataSourceHandler.java b/src/main/java/neatlogic/module/cmdb/matrix/handler/CiDataSourceHandler.java index 5eb70b9ffae054a1fbe31f151a977c0b9d9ccb89..dee13462040e9e46d984316da789ee386aebeb09 100644 --- a/src/main/java/neatlogic/module/cmdb/matrix/handler/CiDataSourceHandler.java +++ b/src/main/java/neatlogic/module/cmdb/matrix/handler/CiDataSourceHandler.java @@ -427,43 +427,43 @@ public class CiDataSourceHandler extends MatrixDataSourceHandlerBase { return null; } - @Override - protected JSONObject myGetTableData(MatrixDataVo dataVo) { - String matrixUuid = dataVo.getMatrixUuid(); - MatrixCiVo matrixCiVo = matrixMapper.getMatrixCiByMatrixUuid(matrixUuid); - if (matrixCiVo == null) { - throw new MatrixCiNotFoundException(matrixUuid); - } - MatrixVo matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); - List attributeVoList = myGetAttributeList(matrixVo); - CiEntityVo ciEntityVo = new CiEntityVo(); - ciEntityVo.setCiId(matrixCiVo.getCiId()); - ciEntityVo.setCurrentPage(dataVo.getCurrentPage()); - ciEntityVo.setPageSize(dataVo.getPageSize()); - JSONArray tbodyArray = accessSearchCiEntity(matrixUuid, ciEntityVo); - List> tbodyList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(tbodyArray)) { - Map attributeUuidMap = attributeVoList.stream().collect(Collectors.toMap(e -> e.getLabel(), e -> e.getUuid())); - for (int i = 0; i < tbodyArray.size(); i++) { - JSONObject rowData = tbodyArray.getJSONObject(i); - if (MapUtils.isNotEmpty(rowData)) { - Map rowDataMap = new HashMap<>(); - for (Map.Entry entry : rowData.entrySet()) { - String uuid = attributeUuidMap.get(entry.getKey()); - if (StringUtils.isNotBlank(uuid)) { - rowDataMap.put(uuid, matrixAttributeValueHandle(null, entry.getValue())); - } - if ("const_id".equals(entry.getKey())) { - rowDataMap.put("uuid", matrixAttributeValueHandle(null, entry.getValue())); - } - } - tbodyList.add(rowDataMap); - } - } - } - JSONArray theadList = getTheadList(attributeVoList); - return TableResultUtil.getResult(theadList, tbodyList, ciEntityVo); - } +// @Override +// protected JSONObject myGetTableData(MatrixDataVo dataVo) { +// String matrixUuid = dataVo.getMatrixUuid(); +// MatrixCiVo matrixCiVo = matrixMapper.getMatrixCiByMatrixUuid(matrixUuid); +// if (matrixCiVo == null) { +// throw new MatrixCiNotFoundException(matrixUuid); +// } +// MatrixVo matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); +// List attributeVoList = myGetAttributeList(matrixVo); +// CiEntityVo ciEntityVo = new CiEntityVo(); +// ciEntityVo.setCiId(matrixCiVo.getCiId()); +// ciEntityVo.setCurrentPage(dataVo.getCurrentPage()); +// ciEntityVo.setPageSize(dataVo.getPageSize()); +// JSONArray tbodyArray = accessSearchCiEntity(matrixUuid, ciEntityVo); +// List> tbodyList = new ArrayList<>(); +// if (CollectionUtils.isNotEmpty(tbodyArray)) { +// Map attributeUuidMap = attributeVoList.stream().collect(Collectors.toMap(e -> e.getLabel(), e -> e.getUuid())); +// for (int i = 0; i < tbodyArray.size(); i++) { +// JSONObject rowData = tbodyArray.getJSONObject(i); +// if (MapUtils.isNotEmpty(rowData)) { +// Map rowDataMap = new HashMap<>(); +// for (Map.Entry entry : rowData.entrySet()) { +// String uuid = attributeUuidMap.get(entry.getKey()); +// if (StringUtils.isNotBlank(uuid)) { +// rowDataMap.put(uuid, matrixAttributeValueHandle(null, entry.getValue())); +// } +// if ("const_id".equals(entry.getKey())) { +// rowDataMap.put("uuid", matrixAttributeValueHandle(null, entry.getValue())); +// } +// } +// tbodyList.add(rowDataMap); +// } +// } +// } +// JSONArray theadList = getTheadList(attributeVoList); +// return TableResultUtil.getResult(theadList, tbodyList, ciEntityVo); +// } @Override protected JSONObject myTableDataSearch(MatrixDataVo dataVo) { @@ -742,174 +742,6 @@ public class CiDataSourceHandler extends MatrixDataSourceHandlerBase { return true; } - @Override - protected List> myTableColumnDataSearch(MatrixDataVo dataVo) { - String matrixUuid = dataVo.getMatrixUuid(); - MatrixCiVo matrixCiVo = matrixMapper.getMatrixCiByMatrixUuid(matrixUuid); - if (matrixCiVo == null) { - throw new MatrixCiNotFoundException(matrixUuid); - } - List> resultList = new ArrayList<>(); - MatrixVo matrixVo = matrixMapper.getMatrixByUuid(matrixUuid); - List matrixAttributeList = myGetAttributeList(matrixVo); - if (CollectionUtils.isNotEmpty(matrixAttributeList)) { - Map attributeLabelMap = matrixAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e.getLabel())); - List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); - List columnList = dataVo.getColumnList(); - for (String column : columnList) { - if (!attributeList.contains(column)) { - throw new MatrixAttributeNotFoundException(dataVo.getMatrixUuid(), column); - } - } - CiEntityVo ciEntityVo = new CiEntityVo(); - Long ciId = matrixCiVo.getCiId(); - ciEntityVo.setCiId(ciId); - List attrList = attrMapper.getAttrByCiId(ciId); - Map attrMap = attrList.stream().collect(Collectors.toMap(AttrVo::getId, e -> e)); - Map relMap = new HashMap<>(); - List relList = relMapper.getRelByCiId(ciId); - for (RelVo relVo : relList) { - relMap.put(relVo.getId(), relVo); - } - CiViewVo ciViewVo = new CiViewVo(); - ciViewVo.setCiId(ciId); - Map ciViewMap = new HashMap<>(); - List ciViewList = RelUtil.ClearCiViewRepeatRel(ciViewMapper.getCiViewByCiId(ciViewVo)); - for (CiViewVo ciview : ciViewList) { - switch (ciview.getType()) { - case "attr": - ciViewMap.put("attr_" + ciview.getItemId(), ciview); - break; - case "relfrom": - ciViewMap.put("relfrom_" + ciview.getItemId(), ciview); - break; - case "relto": - ciViewMap.put("relto_" + ciview.getItemId(), ciview); - break; - case "const": - //固化属性需要特殊处理 - ciViewMap.put("const_" + ciview.getItemName().replace("_", ""), ciview); - break; - } - } -// Map ciViewMap = ciViewList.stream().collect(Collectors.toMap(CiViewVo::getItemName, e -> e)); - JSONArray defaultValue = dataVo.getDefaultValue(); - List attrFilterList = new ArrayList<>(); - List relFilterList = new ArrayList<>(); - JSONArray attrFilterArray = dataVo.getAttrFilterList(); - if (CollectionUtils.isNotEmpty(attrFilterArray)) { - attrFilterList = attrFilterArray.toJavaList(AttrFilterVo.class); - } - JSONArray relFilterArray = dataVo.getRelFilterList(); - if (CollectionUtils.isNotEmpty(relFilterArray)) { - relFilterList = relFilterArray.toJavaList(RelFilterVo.class); - } - if (CollectionUtils.isNotEmpty(defaultValue)) { - for (String value : defaultValue.toJavaList(String.class)) { - if (value.contains(SELECT_COMPOSE_JOINER)) { - List attrFilters = new ArrayList<>(); - List relFilters = new ArrayList<>(); - String[] split = value.split(SELECT_COMPOSE_JOINER); - //当下拉框配置的值和显示文字列为同一列时,value值是这样的20210101&=&20210101,split数组第一和第二个元素相同,这时需要去重 - List splitList = new ArrayList<>(); - for (String str : split) { - if (!splitList.contains(str)) { - splitList.add(str); - } - } - boolean needAccessApi = true; - int min = Math.min(splitList.size(), columnList.size()); - for (int i = 0; i < min; i++) { - String column = columnList.get(i); - if (StringUtils.isNotBlank(column)) { - String label = attributeLabelMap.get(column); - CiViewVo ciView = ciViewMap.get(label); - if (ciView == null) { - continue; - } - List valueList = new ArrayList<>(); - valueList.add(splitList.get(i)); - if (!conversionFilter(label, valueList, attrMap, relMap, ciView, attrFilters, relFilters, ciEntityVo)) { - needAccessApi = false; - break; - } - } - } - if (needAccessApi) { - attrFilters.addAll(attrFilterList); - relFilters.addAll(relFilterList); - ciEntityVo.setAttrFilterList(attrFilters); - ciEntityVo.setRelFilterList(relFilters); - JSONArray tbodyArray = accessSearchCiEntity(matrixUuid, ciEntityVo); - resultList.addAll(getCmdbCiDataTbodyList(tbodyArray, columnList, matrixUuid)); - } - } - } - deduplicateData(columnList, resultList); - } else { - boolean needAccessApi = true; - List filterList = dataVo.getFilterList(); - if (CollectionUtils.isNotEmpty(filterList)) { - for (MatrixFilterVo matrixFilterVo : filterList) { - if (matrixFilterVo == null) { - continue; - } - String uuid = matrixFilterVo.getUuid(); - if (StringUtils.isBlank(uuid)) { - continue; - } - if (!attributeList.contains(uuid)) { - throw new MatrixAttributeNotFoundException(dataVo.getMatrixUuid(), uuid); - } - String label = attributeLabelMap.get(uuid); - CiViewVo ciView = ciViewMap.get(label); - if (ciView != null) { - List valueList = matrixFilterVo.getValueList(); - if (CollectionUtils.isEmpty(valueList)) { - continue; - } - if (!conversionFilter(label, valueList, attrMap, relMap, ciView, attrFilterList, relFilterList, ciEntityVo)) { - needAccessApi = false; - } - } - } - } - String keywordColumn = dataVo.getKeywordColumn(); - if (StringUtils.isNotBlank(keywordColumn) && StringUtils.isNotBlank(dataVo.getKeyword())) { - if (!attributeList.contains(keywordColumn)) { - throw new MatrixAttributeNotFoundException(dataVo.getMatrixUuid(), keywordColumn); - } - String label = attributeLabelMap.get(keywordColumn); - CiViewVo ciView = ciViewMap.get(label); - if (ciView != null) { - List valueList = new ArrayList<>(); - valueList.add(dataVo.getKeyword()); - if (!conversionFilter(label, valueList, attrMap, relMap, ciView, attrFilterList, relFilterList, ciEntityVo)) { - needAccessApi = false; - } - } - } - - if (needAccessApi) { - List exsited = new ArrayList<>(); - ciEntityVo.setAttrFilterList(attrFilterList); - ciEntityVo.setRelFilterList(relFilterList); - //下面逻辑适用于下拉框滚动加载,也可以搜索,但是一页返回的数据量可能会小于pageSize,因为做了去重处理 - ciEntityVo.setCurrentPage(dataVo.getCurrentPage()); - ciEntityVo.setPageSize(dataVo.getPageSize()); - JSONArray tbodyArray = accessSearchCiEntity(matrixUuid, ciEntityVo); - dataVo.setRowNum(ciEntityVo.getRowNum()); - if (CollectionUtils.isEmpty(tbodyArray)) { - return resultList; - } - List> list = getCmdbCiDataTbodyList(tbodyArray, columnList, matrixUuid); - deduplicateData(columnList, exsited, list); - resultList.addAll(list); - } - } - } - return resultList; - } @Override protected List> mySearchTableDataNew(MatrixDataVo dataVo) { String matrixUuid = dataVo.getMatrixUuid(); @@ -968,9 +800,11 @@ public class CiDataSourceHandler extends MatrixDataSourceHandlerBase { List relFilters = new ArrayList<>(); List filterList = new ArrayList<>(); MatrixKeywordFilterVo valueFieldFilter = defaultValueFilterVo.getValueFieldFilter(); - filterList.add(new MatrixFilterVo(valueFieldFilter.getUuid(), valueFieldFilter.getExpression(), Arrays.asList(valueFieldFilter.getValue()))); + if (valueFieldFilter != null) { + filterList.add(new MatrixFilterVo(valueFieldFilter.getUuid(), valueFieldFilter.getExpression(), Arrays.asList(valueFieldFilter.getValue()))); + } MatrixKeywordFilterVo textFieldFilter = defaultValueFilterVo.getTextFieldFilter(); - if (!Objects.equals(valueFieldFilter.getUuid(), textFieldFilter.getUuid())) { + if (textFieldFilter != null && !Objects.equals(valueFieldFilter.getUuid(), textFieldFilter.getUuid())) { filterList.add(new MatrixFilterVo(textFieldFilter.getUuid(), textFieldFilter.getExpression(), Arrays.asList(textFieldFilter.getValue()))); } for (MatrixFilterVo matrixFilterVo : filterList) { 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 f6eac1ec894dec7274d6baa2f5237f35adca461b..e68ee68dc83cb14ed19782965bb215d9283c3294 100644 --- a/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java +++ b/src/main/java/neatlogic/module/cmdb/process/stephandler/CmdbSyncProcessComponent.java @@ -443,34 +443,26 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { 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++) { - String valueStr = valueArray.getString(k); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); + 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(valueStr); + newValueList.add(valueObj2.toString()); } } - } else if (valueObj instanceof String) { - String valueStr = (String) valueObj; - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } } else { String valueStr = valueObj.toString(); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } + newValueList.add(valueStr); } if (CollectionUtils.isNotEmpty(newValueList)) { newMappingObj.setMappingMode("constant"); @@ -571,34 +563,27 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } 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++) { - String valueStr = valueArray.getString(j); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); + 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 if (valueObj instanceof String) { - String valueStr = (String) valueObj; - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } } else { String valueStr = valueObj.toString(); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } + newValueList.add(valueStr); } } } else if (Objects.equals(mappingMode, "formCommonComponent")) { @@ -626,33 +611,28 @@ public class CmdbSyncProcessComponent extends ProcessStepHandlerBase { } 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 JSONArray) { + 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++) { - String valueStr = valueArray.getString(j); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); + 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; - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } - } else { - String valueStr = dataObj.toString(); - if (valueStr.contains("&=&")) { - String[] split = valueStr.split("&=&"); - newValueList.add(split[0]); - } else { - newValueList.add(valueStr); - } + newValueList.add(valueStr); } } else { if (dataObj instanceof JSONObject) {