diff --git a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForSelectApi.java b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForSelectApi.java index 4aafc063a5af890c5c67ef469451da02b8bae227..e2ea659abee813323d932df27db923c394c6c540 100644 --- a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForSelectApi.java +++ b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForSelectApi.java @@ -82,10 +82,10 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase @Param(name = "filterList", desc = "过滤条件集合", type = ApiParamType.JSONARRAY), @Param(name = "matrixLabel", desc = "矩阵名", type = ApiParamType.STRING), - @Param(name = "keywordColumnName", desc = "关键字属性名", type = ApiParamType.STRING), - @Param(name = "valueFieldName", desc = "value属性名", type = ApiParamType.STRING), - @Param(name = "textFieldName", desc = "text属性名", type = ApiParamType.STRING), - @Param(name = "hiddenFieldNameList", desc = "隐藏属性名列表", type = ApiParamType.JSONARRAY) + @Param(name = "keywordColumnUniqueIdentifier", desc = "关键字属性唯一标识", type = ApiParamType.STRING), + @Param(name = "valueFieldUniqueIdentifier", desc = "value属性唯一标识", type = ApiParamType.STRING), + @Param(name = "textFieldUniqueIdentifier", desc = "text属性唯一标识", type = ApiParamType.STRING), + @Param(name = "hiddenFieldUniqueIdentifierList", desc = "隐藏属性唯一标识列表", type = ApiParamType.JSONARRAY) }) @Output({ @Param(name = "dataList", type = ApiParamType.JSONARRAY, desc = "属性数据集合"), @@ -164,14 +164,13 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase if (CollectionUtils.isEmpty(matrixAttributeList)) { return new JSONObject(); } - Map nameToUuidMap = new HashMap<>(); + Map uniqueIdentifierToUuidMap = new HashMap<>(); for (MatrixAttributeVo matrixAttributeVo : matrixAttributeList) { - String name = matrixAttributeVo.getName(); - if(nameToUuidMap.containsKey(name)) { - nameToUuidMap.remove(name); - } else { - nameToUuidMap.put(name, matrixAttributeVo.getUuid()); + String uniqueIdentifier = matrixAttributeVo.getUniqueIdentifier(); + if (StringUtils.isBlank(uniqueIdentifier)) { + continue; } + uniqueIdentifierToUuidMap.put(uniqueIdentifier, matrixAttributeVo.getUuid()); } List filterList = dataVo.getFilterList(); if (CollectionUtils.isNotEmpty(filterList)) { @@ -179,11 +178,11 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase while (iterator.hasNext()) { MatrixFilterVo matrixFilterVo = iterator.next(); if (StringUtils.isBlank(matrixFilterVo.getUuid())) { - if (StringUtils.isBlank(matrixFilterVo.getName())) { + if (StringUtils.isBlank(matrixFilterVo.getUniqueIdentifier())) { iterator.remove(); continue; } - String attrUuid = nameToUuidMap.get(matrixFilterVo.getName()); + String attrUuid = uniqueIdentifierToUuidMap.get(matrixFilterVo.getUniqueIdentifier()); if (StringUtils.isBlank(attrUuid)) { iterator.remove(); continue; @@ -201,35 +200,35 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase Set notNullColumnSet = new HashSet<>(); List attributeList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); String valueField = jsonObj.getString("valueField"); - String valueFieldName = jsonObj.getString("valueFieldName"); + String valueFieldUniqueIdentifier = jsonObj.getString("valueFieldUniqueIdentifier"); if (StringUtils.isNotBlank(valueField)) { if (!attributeList.contains(valueField)) { throw new MatrixAttributeNotFoundException(matrixVo.getName(), valueField); } } else { - if (StringUtils.isBlank(valueFieldName)) { - throw new ParamNotExistsException("valueField", "valueFieldName"); + if (StringUtils.isBlank(valueFieldUniqueIdentifier)) { + throw new ParamNotExistsException("valueField", "valueFieldUniqueIdentifier"); } - String attrUuid = nameToUuidMap.get(valueFieldName); + String attrUuid = uniqueIdentifierToUuidMap.get(valueFieldUniqueIdentifier); if (StringUtils.isBlank(attrUuid)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), valueFieldName); + throw new MatrixAttributeNotFoundException(matrixVo.getName(), valueFieldUniqueIdentifier); } valueField = attrUuid; } notNullColumnSet.add(valueField); String textField = jsonObj.getString("textField"); - String textFieldName = jsonObj.getString("textFieldName"); + String textFieldUniqueIdentifier = jsonObj.getString("textFieldUniqueIdentifier"); if (StringUtils.isNotBlank(textField)) { if (!attributeList.contains(textField)) { throw new MatrixAttributeNotFoundException(matrixVo.getName(), textField); } } else { - if (StringUtils.isBlank(textFieldName)) { - throw new ParamNotExistsException("textField", "textFieldName"); + if (StringUtils.isBlank(textFieldUniqueIdentifier)) { + throw new ParamNotExistsException("textField", "textFieldUniqueIdentifier"); } - String attrUuid = nameToUuidMap.get(textFieldName); + String attrUuid = uniqueIdentifierToUuidMap.get(textFieldUniqueIdentifier); if (StringUtils.isBlank(attrUuid)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), textFieldName); + throw new MatrixAttributeNotFoundException(matrixVo.getName(), textFieldUniqueIdentifier); } textField = attrUuid; } @@ -240,7 +239,7 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase columnList.add(valueField); columnList.add(textField); JSONArray hiddenFieldList = jsonObj.getJSONArray("hiddenFieldList"); - JSONArray hiddenFieldNameList = jsonObj.getJSONArray("hiddenFieldNameList"); + JSONArray hiddenFieldUniqueIdentifierList = jsonObj.getJSONArray("hiddenFieldUniqueIdentifierList"); if (CollectionUtils.isNotEmpty(hiddenFieldList)) { for (int i = 0; i < hiddenFieldList.size(); i++) { String hiddenField = hiddenFieldList.getString(i); @@ -251,15 +250,15 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase columnList.add(hiddenField); } } - } else if (CollectionUtils.isNotEmpty(hiddenFieldNameList)) { - for (int i = 0; i < hiddenFieldNameList.size(); i++) { - String hiddenFieldName = hiddenFieldNameList.getString(i); - if (StringUtils.isBlank(hiddenFieldName)) { + } else if (CollectionUtils.isNotEmpty(hiddenFieldUniqueIdentifierList)) { + for (int i = 0; i < hiddenFieldUniqueIdentifierList.size(); i++) { + String hiddenFieldUniqueIdentifier = hiddenFieldUniqueIdentifierList.getString(i); + if (StringUtils.isBlank(hiddenFieldUniqueIdentifier)) { continue; } - String hiddenField = nameToUuidMap.get(hiddenFieldName); + String hiddenField = uniqueIdentifierToUuidMap.get(hiddenFieldUniqueIdentifier); if (StringUtils.isBlank(hiddenField)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), hiddenFieldName); + throw new MatrixAttributeNotFoundException(matrixVo.getName(), hiddenFieldUniqueIdentifier); } columnList.add(hiddenField); } @@ -268,11 +267,11 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase dataVo.setNotNullColumnList(new ArrayList<>(notNullColumnSet)); String keywordColumn = dataVo.getKeywordColumn(); - String keywordColumnName = dataVo.getKeywordColumnName(); - if (StringUtils.isBlank(keywordColumn) && StringUtils.isNotBlank(keywordColumnName)) { - String attrUuid = nameToUuidMap.get(keywordColumnName); + String keywordColumnUniqueIdentifier = dataVo.getKeywordColumnUniqueIdentifier(); + if (StringUtils.isBlank(keywordColumn) && StringUtils.isNotBlank(keywordColumnUniqueIdentifier)) { + String attrUuid = uniqueIdentifierToUuidMap.get(keywordColumnUniqueIdentifier); if (StringUtils.isBlank(attrUuid)) { - throw new MatrixAttributeNotFoundException(matrixVo.getName(), keywordColumnName); + throw new MatrixAttributeNotFoundException(matrixVo.getName(), keywordColumnUniqueIdentifier); } dataVo.setKeywordColumn(attrUuid); } @@ -351,13 +350,13 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase element.put(hiddenField, hiddenFieldValue); } } - } else if (CollectionUtils.isNotEmpty(hiddenFieldNameList)) { - for (int i = 0; i < hiddenFieldNameList.size(); i++) { - String hiddenFieldName = hiddenFieldNameList.getString(i); - if (StringUtils.isBlank(hiddenFieldName)) { + } else if (CollectionUtils.isNotEmpty(hiddenFieldUniqueIdentifierList)) { + for (int i = 0; i < hiddenFieldUniqueIdentifierList.size(); i++) { + String hiddenFieldUniqueIdentifier = hiddenFieldUniqueIdentifierList.getString(i); + if (StringUtils.isBlank(hiddenFieldUniqueIdentifier)) { continue; } - String hiddenField = nameToUuidMap.get(hiddenFieldName); + String hiddenField = uniqueIdentifierToUuidMap.get(hiddenFieldUniqueIdentifier); if (StringUtils.isBlank(hiddenField)) { continue; } @@ -367,7 +366,7 @@ public class MatrixColumnDataSearchForSelectApi extends PrivateApiComponentBase JSONObject hiddenFieldObj = result.get(hiddenField); if (MapUtils.isNotEmpty(hiddenFieldObj)) { String hiddenFieldValue = hiddenFieldObj.getString("value"); - element.put(hiddenFieldName, hiddenFieldValue); + element.put(hiddenFieldUniqueIdentifier, hiddenFieldValue); } } } diff --git a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForTableNewApi.java b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForTableNewApi.java index abde6a0385d6ba6bf4faca1d00d3abd24172cad6..4edf721baf97e90344e9cd1347917bf83b22df2a 100644 --- a/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForTableNewApi.java +++ b/src/main/java/neatlogic/module/tenant/api/matrix/MatrixColumnDataSearchForTableNewApi.java @@ -75,8 +75,9 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas @Param(name = "filterList", desc = "过滤条件集合", type = ApiParamType.JSONARRAY), @Param(name = "matrixLabel", desc = "矩阵名", type = ApiParamType.STRING), - @Param(name = "columnNameList", desc = "目标属性集合,数据按这个字段顺序返回", type = ApiParamType.JSONARRAY, minSize = 1), + @Param(name = "columnUniqueIdentifierList", desc = "目标属性唯一标识集合,数据按这个字段顺序返回", type = ApiParamType.JSONARRAY, minSize = 1), @Param(name = "isAllColumn", desc = "是否返回所有属性", type = ApiParamType.INTEGER), + @Param(name = "keyMode", desc = "key模式", rule = "uuid,uniqueIdentifier", type = ApiParamType.ENUM, defaultValue = "uuid", help = "默认是用uuid作为key"), }) @Description(desc = "矩阵属性数据查询-table接口") @Output({ @@ -158,14 +159,13 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas if (CollectionUtils.isEmpty(matrixAttributeList)) { return new JSONObject(); } - Map nameToUuidMap = new HashMap<>(); + Map uniqueIdentifierToUuidMap = new HashMap<>(); for (MatrixAttributeVo matrixAttributeVo : matrixAttributeList) { - String name = matrixAttributeVo.getName(); - if(nameToUuidMap.containsKey(name)) { - nameToUuidMap.remove(name); - } else { - nameToUuidMap.put(name, matrixAttributeVo.getUuid()); + String uniqueIdentifier = matrixAttributeVo.getUniqueIdentifier(); + if (StringUtils.isBlank(uniqueIdentifier)) { + continue; } + uniqueIdentifierToUuidMap.put(uniqueIdentifier, matrixAttributeVo.getUuid()); } List filterList = dataVo.getFilterList(); if (CollectionUtils.isNotEmpty(filterList)) { @@ -173,11 +173,11 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas while (iterator.hasNext()) { MatrixFilterVo matrixFilterVo = iterator.next(); if (StringUtils.isBlank(matrixFilterVo.getUuid())) { - if (StringUtils.isBlank(matrixFilterVo.getName())) { + if (StringUtils.isBlank(matrixFilterVo.getUniqueIdentifier())) { iterator.remove(); continue; } - String attrUuid = nameToUuidMap.get(matrixFilterVo.getName()); + String attrUuid = uniqueIdentifierToUuidMap.get(matrixFilterVo.getUniqueIdentifier()); if (StringUtils.isBlank(attrUuid)) { iterator.remove(); continue; @@ -194,27 +194,27 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas } List attributeUuidList = matrixAttributeList.stream().map(MatrixAttributeVo::getUuid).collect(Collectors.toList()); - List columnNameList = dataVo.getColumnNameList(); + List columnUniqueIdentifierList = dataVo.getColumnUniqueIdentifierList(); Integer isAllColumn = jsonObj.getInteger("isAllColumn"); if (Objects.equals(isAllColumn, 1)) { dataVo.setColumnList(attributeUuidList); } else { if (CollectionUtils.isNotEmpty(dataVo.getColumnList())) { - dataVo.setColumnNameList(null); + dataVo.setColumnUniqueIdentifierList(null); List notFoundColumnList = ListUtils.removeAll(dataVo.getColumnList(), attributeUuidList); if (CollectionUtils.isNotEmpty(notFoundColumnList)) { throw new MatrixAttributeNotFoundException(matrixVo.getName(), String.join(",", notFoundColumnList)); } - } else if (CollectionUtils.isNotEmpty(columnNameList)) { + } else if (CollectionUtils.isNotEmpty(columnUniqueIdentifierList)) { List columnList = new ArrayList<>(); List notFoundColumnList = new ArrayList<>(); - for (String columnName : columnNameList) { - if (StringUtils.isBlank(columnName)) { + for (String columnUniqueIdentifier : columnUniqueIdentifierList) { + if (StringUtils.isBlank(columnUniqueIdentifier)) { continue; } - String column = nameToUuidMap.get(columnName); + String column = uniqueIdentifierToUuidMap.get(columnUniqueIdentifier); if (StringUtils.isBlank(column)) { - notFoundColumnList.add(columnName); + notFoundColumnList.add(columnUniqueIdentifier); } else { columnList.add(column); } @@ -226,26 +226,29 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas } } List> tbodyList = matrixDataSourceHandler.searchTableDataNew(dataVo); - if (CollectionUtils.isNotEmpty(columnNameList)) { + String keyMode = jsonObj.getString("keyMode"); + if (Objects.equals(keyMode, "uniqueIdentifier")) { + Map attributeMap = matrixAttributeList.stream().collect(Collectors.toMap(MatrixAttributeVo::getUuid, e -> e)); List> newTbodyList = new ArrayList<>(); for (Map tbody : tbodyList) { Map newTbody = new HashMap<>(); - for (String columnName : columnNameList) { - String attrUuid = nameToUuidMap.get(columnName); - if (StringUtils.isBlank(attrUuid)) { - continue; + for (Map.Entry entry : tbody.entrySet()) { + String uniqueIdentifier = null; + MatrixAttributeVo matrixAttributeVo = attributeMap.get(entry.getKey()); + if (matrixAttributeVo != null) { + uniqueIdentifier = matrixAttributeVo.getUniqueIdentifier(); } - JSONObject jsonObject = tbody.get(attrUuid); - if (jsonObject == null) { - continue; + if (StringUtils.isNotBlank(uniqueIdentifier)) { + newTbody.put(uniqueIdentifier, entry.getValue()); + } else { + newTbody.put(entry.getKey(), entry.getValue()); } - newTbody.put(columnName, jsonObject); } newTbodyList.add(newTbody); } tbodyList = newTbodyList; } - JSONArray theadList = getTheadList(dataVo.getMatrixUuid(), matrixAttributeList, dataVo.getColumnList(), columnNameList); + JSONArray theadList = getTheadList(dataVo.getMatrixUuid(), matrixAttributeList, dataVo.getColumnList(), keyMode); JSONObject returnObj = TableResultUtil.getResult(theadList, tbodyList, dataVo); JSONArray searchColumnArray = jsonObj.getJSONArray("searchColumnList"); returnObj.put("searchColumnDetailList", getSearchColumnDetailList(dataVo.getMatrixUuid(), matrixAttributeList, searchColumnArray)); @@ -273,14 +276,8 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas return null; } - private JSONArray getTheadList(String matrixUuid, List attributeList, List columnList, List columnNameList) { - if (columnNameList == null) { - columnNameList = new ArrayList<>(); - } - Map attributeMap = new HashMap<>(); - for (MatrixAttributeVo attribute : attributeList) { - attributeMap.put(attribute.getUuid(), attribute); - } + private JSONArray getTheadList(String matrixUuid, List matrixAttributeList, List columnList, String keyMode) { + Map attributeMap = matrixAttributeList.stream().collect(Collectors.toMap(MatrixAttributeVo::getUuid, e -> e)); JSONArray theadList = new JSONArray(); for (String column : columnList) { MatrixAttributeVo attribute = attributeMap.get(column); @@ -288,8 +285,8 @@ public class MatrixColumnDataSearchForTableNewApi extends PrivateApiComponentBas throw new MatrixAttributeNotFoundException(matrixUuid, column); } JSONObject theadObj = new JSONObject(); - if (columnNameList.contains(attribute.getName())) { - theadObj.put("key", attribute.getName()); + if (Objects.equals(keyMode, "uniqueIdentifier") && StringUtils.isNotBlank(attribute.getUniqueIdentifier())) { + theadObj.put("key", attribute.getUniqueIdentifier()); } else { theadObj.put("key", attribute.getUuid()); }