提交 83081b94 authored 作者: junjun's avatar junjun

test: 树形过滤器sql拼接

上级 653f539c
...@@ -848,48 +848,66 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -848,48 +848,66 @@ public class MysqlQueryProvider extends QueryProvider {
List<SQLObj> list = new ArrayList<>(); List<SQLObj> list = new ArrayList<>();
for (ChartExtFilterRequest request : requestList) { for (ChartExtFilterRequest request : requestList) {
List<String> value = request.getValue(); List<String> value = request.getValue();
DatasetTableField field = request.getDatasetTableField();
if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
continue;
}
String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
String originName; List<String> whereNameList = new ArrayList<>();
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) { List<DatasetTableField> fieldList = new ArrayList<>();
// 解析origin name中有关联的字段生成sql表达式 if (request.getIsTree()) {
originName = calcFieldRegex(field.getOriginName(), tableObj); fieldList.addAll(request.getDatasetTableFieldList());
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getDataeaseName());
} else { } else {
originName = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getDataeaseName()); fieldList.add(request.getDatasetTableField());
} }
if (field.getDeType() == 1) { for (DatasetTableField field : fieldList) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
whereName = String.format(MysqlConstants.STR_TO_DATE, originName, MysqlConstants.DEFAULT_DATE_FORMAT); continue;
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(MysqlConstants.FROM_UNIXTIME, cast, MysqlConstants.DEFAULT_DATE_FORMAT);
} }
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) { String whereName = "";
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { String originName;
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_FLOAT_FORMAT); if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
} // 解析origin name中有关联的字段生成sql表达式
if (field.getDeExtractType() == 1) { originName = calcFieldRegex(field.getOriginName(), tableObj);
whereName = String.format(MysqlConstants.UNIX_TIMESTAMP, originName) + "*1000"; } else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getDataeaseName());
} else {
originName = String.format(MysqlConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getDataeaseName());
} }
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
whereName = String.format(MysqlConstants.STR_TO_DATE, originName, MysqlConstants.DEFAULT_DATE_FORMAT);
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(MysqlConstants.FROM_UNIXTIME, cast, MysqlConstants.DEFAULT_DATE_FORMAT);
}
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_FLOAT_FORMAT);
}
if (field.getDeExtractType() == 1) {
whereName = String.format(MysqlConstants.UNIX_TIMESTAMP, originName) + "*1000";
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
whereName = originName;
}
} else {
whereName = originName; whereName = originName;
} }
} else { whereNameList.add(whereName);
whereName = originName;
} }
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")) { if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')"; whereValue = "('" + StringUtils.join(value, "','") + "')";
......
...@@ -829,49 +829,66 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -829,49 +829,66 @@ public class MysqlQueryProvider extends QueryProvider {
List<SQLObj> list = new ArrayList<>(); List<SQLObj> list = new ArrayList<>();
for (ChartExtFilterRequest request : requestList) { for (ChartExtFilterRequest request : requestList) {
List<String> value = request.getValue(); List<String> value = request.getValue();
DatasetTableField field = request.getDatasetTableField();
if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
continue;
}
String whereName = "";
String whereTerm = transMysqlFilterTerm(request.getOperator());
String whereValue = "";
String originName; List<String> whereNameList = new ArrayList<>();
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) { List<DatasetTableField> fieldList = new ArrayList<>();
// 解析origin name中有关联的字段生成sql表达式 if (request.getIsTree()) {
originName = calcFieldRegex(field.getOriginName(), tableObj); fieldList.addAll(request.getDatasetTableFieldList());
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
} else { } else {
originName = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName()); fieldList.add(request.getDatasetTableField());
} }
if (field.getDeType() == 1) { for (DatasetTableField field : fieldList) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { if (CollectionUtils.isEmpty(value) || ObjectUtils.isEmpty(field)) {
whereName = String.format(MySQLConstants.STR_TO_DATE, originName, MySQLConstants.DEFAULT_DATE_FORMAT); continue;
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(MySQLConstants.FROM_UNIXTIME, cast, MySQLConstants.DEFAULT_DATE_FORMAT);
}
if (field.getDeExtractType() == 1) {
whereName = originName;
}
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_FLOAT_FORMAT);
} }
if (field.getDeExtractType() == 1) { String whereName = "";
whereName = String.format(MySQLConstants.UNIX_TIMESTAMP, originName);
String originName;
if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originName = calcFieldRegex(field.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(field.getExtField()) && field.getExtField() == 1) {
originName = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
} else {
originName = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), field.getOriginName());
} }
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if (field.getDeType() == 1) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(MySQLConstants.STR_TO_DATE, originName, MySQLConstants.DEFAULT_DATE_FORMAT);
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
whereName = String.format(MySQLConstants.FROM_UNIXTIME, cast, MySQLConstants.DEFAULT_DATE_FORMAT);
}
if (field.getDeExtractType() == 1) {
whereName = originName;
}
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
whereName = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_FLOAT_FORMAT);
}
if (field.getDeExtractType() == 1) {
whereName = String.format(MySQLConstants.UNIX_TIMESTAMP, originName);
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
whereName = originName;
}
} else {
whereName = originName; whereName = originName;
} }
} else { whereNameList.add(whereName);
whereName = originName;
} }
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")) { if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
whereValue = "('" + StringUtils.join(value, "','") + "')"; whereValue = "('" + StringUtils.join(value, "','") + "')";
......
...@@ -542,8 +542,10 @@ public class ChartViewService { ...@@ -542,8 +542,10 @@ public class ChartViewService {
if (ObjectUtils.isEmpty(view)) { if (ObjectUtils.isEmpty(view)) {
throw new RuntimeException(Translator.get("i18n_chart_delete")); throw new RuntimeException(Translator.get("i18n_chart_delete"));
} }
Type tokenType = new TypeToken<List<ChartViewFieldDTO>>() {}.getType(); Type tokenType = new TypeToken<List<ChartViewFieldDTO>>() {
Type filterTokenType = new TypeToken<List<ChartFieldCustomFilterDTO>>() {}.getType(); }.getType();
Type filterTokenType = new TypeToken<List<ChartFieldCustomFilterDTO>>() {
}.getType();
List<ChartViewFieldDTO> viewFields = gson.fromJson(view.getViewFields(), tokenType); List<ChartViewFieldDTO> viewFields = gson.fromJson(view.getViewFields(), tokenType);
Map<String, List<ChartViewFieldDTO>> extFieldsMap = null; Map<String, List<ChartViewFieldDTO>> extFieldsMap = null;
...@@ -640,24 +642,50 @@ public class ChartViewService { ...@@ -640,24 +642,50 @@ public class ChartViewService {
String fieldId = request.getFieldId(); String fieldId = request.getFieldId();
if (StringUtils.isNotEmpty(fieldId)) { if (StringUtils.isNotEmpty(fieldId)) {
String[] fieldIds = fieldId.split(","); String[] fieldIds = fieldId.split(",");
for (String fId : fieldIds) { if (request.getIsTree()) {
ChartExtFilterRequest filterRequest = new ChartExtFilterRequest(); ChartExtFilterRequest filterRequest = new ChartExtFilterRequest();
BeanUtils.copyBean(filterRequest, request); BeanUtils.copyBean(filterRequest, request);
filterRequest.setFieldId(fId); filterRequest.setDatasetTableFieldList(new ArrayList<>());
for (String fId : fieldIds) {
DatasetTableField datasetTableField = dataSetTableFieldsService.get(fId); DatasetTableField datasetTableField = dataSetTableFieldsService.get(fId);
if (datasetTableField == null) { if (datasetTableField == null) {
continue; 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 (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) { if (CollectionUtils.isNotEmpty(filterRequest.getDatasetTableFieldList())) {
filterRequest.setDatasetTableField(datasetTableField); extFilterList.add(filterRequest);
if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) { }
if (CollectionUtils.isNotEmpty(filterRequest.getViewIds())) { } else {
if (filterRequest.getViewIds().contains(view.getId())) { for (String fId : fieldIds) {
ChartExtFilterRequest filterRequest = new ChartExtFilterRequest();
BeanUtils.copyBean(filterRequest, request);
filterRequest.setFieldId(fId);
DatasetTableField datasetTableField = dataSetTableFieldsService.get(fId);
if (datasetTableField == null) {
continue;
}
if (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) {
filterRequest.setDatasetTableField(datasetTableField);
if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) {
if (CollectionUtils.isNotEmpty(filterRequest.getViewIds())) {
if (filterRequest.getViewIds().contains(view.getId())) {
extFilterList.add(filterRequest);
}
} else {
extFilterList.add(filterRequest); extFilterList.add(filterRequest);
} }
} else {
extFilterList.add(filterRequest);
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论