test: 树形过滤器sql拼接

This commit is contained in:
junjun 2022-05-26 12:38:06 +08:00
parent 653f539c28
commit 83081b94e5
3 changed files with 149 additions and 86 deletions

View File

@ -848,13 +848,21 @@ public class MysqlQueryProvider extends QueryProvider {
List<SQLObj> list = new ArrayList<>();
for (ChartExtFilterRequest request : requestList) {
List<String> value = request.getValue();
DatasetTableField field = request.getDatasetTableField();
List<String> whereNameList = new ArrayList<>();
List<DatasetTableField> fieldList = new ArrayList<>();
if (request.getIsTree()) {
fieldList.addAll(request.getDatasetTableFieldList());
} else {
fieldList.add(request.getDatasetTableField());
}
for (DatasetTableField field : fieldList) {
if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
continue;
}
String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
String originName;
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
@ -889,7 +897,17 @@ public class MysqlQueryProvider extends QueryProvider {
} else {
whereName = originName;
}
whereNameList.add(whereName);
}
String whereName = "";
if (request.getIsTree()) {
whereName = "CONCAT(" + StringUtils.join(whereNameList, ",',',") + ")";
} else {
whereName = whereNameList.get(0);
}
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";

View File

@ -829,13 +829,20 @@ public class MysqlQueryProvider extends QueryProvider {
List<SQLObj> list = new ArrayList<>();
for (ChartExtFilterRequest request : requestList) {
List<String> value = request.getValue();
DatasetTableField field = request.getDatasetTableField();
List<String> whereNameList = new ArrayList<>();
List<DatasetTableField> fieldList = new ArrayList<>();
if (request.getIsTree()) {
fieldList.addAll(request.getDatasetTableFieldList());
} else {
fieldList.add(request.getDatasetTableField());
}
for (DatasetTableField field : fieldList) {
if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
continue;
}
String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
String originName;
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
@ -871,7 +878,17 @@ public class MysqlQueryProvider extends QueryProvider {
} else {
whereName = originName;
}
whereNameList.add(whereName);
}
String whereName = "";
if (request.getIsTree()) {
whereName = "CONCAT(" + StringUtils.join(whereNameList, ",',',") + ")";
} else {
whereName = whereNameList.get(0);
}
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')";

View File

@ -542,8 +542,10 @@ public class ChartViewService {
if (ObjectUtils.isEmpty(view)) {
throw new RuntimeException(Translator.get("i18n_chart_delete"));
}
Type tokenType = new TypeToken<List<ChartViewFieldDTO>>() {}.getType();
Type filterTokenType = new TypeToken<List<ChartFieldCustomFilterDTO>>() {}.getType();
Type tokenType = new TypeToken<List<ChartViewFieldDTO>>() {
}.getType();
Type filterTokenType = new TypeToken<List<ChartFieldCustomFilterDTO>>() {
}.getType();
List<ChartViewFieldDTO> viewFields = gson.fromJson(view.getViewFields(), tokenType);
Map<String, List<ChartViewFieldDTO>> extFieldsMap = null;
@ -640,6 +642,31 @@ public class ChartViewService {
String fieldId = request.getFieldId();
if (StringUtils.isNotEmpty(fieldId)) {
String[] fieldIds = fieldId.split(",");
if (request.getIsTree()) {
ChartExtFilterRequest filterRequest = new ChartExtFilterRequest();
BeanUtils.copyBean(filterRequest, request);
filterRequest.setDatasetTableFieldList(new ArrayList<>());
for (String fId : fieldIds) {
DatasetTableField datasetTableField = dataSetTableFieldsService.get(fId);
if (datasetTableField == null) {
continue;
}
if (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) {
if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) {
if (CollectionUtils.isNotEmpty(filterRequest.getViewIds())) {
if (filterRequest.getViewIds().contains(view.getId())) {
filterRequest.getDatasetTableFieldList().add(datasetTableField);
}
} else {
filterRequest.getDatasetTableFieldList().add(datasetTableField);
}
}
}
}
if (CollectionUtils.isNotEmpty(filterRequest.getDatasetTableFieldList())) {
extFilterList.add(filterRequest);
}
} else {
for (String fId : fieldIds) {
ChartExtFilterRequest filterRequest = new ChartExtFilterRequest();
BeanUtils.copyBean(filterRequest, request);
@ -665,6 +692,7 @@ public class ChartViewService {
}
}
}
}
List<ChartExtFilterRequest> filters = new ArrayList<>();
// 联动条件