From ab69823e8ad62e37f3a5544fb0defff5098abfdb Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Mon, 28 Mar 2022 18:28:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20doris=E6=A8=A1=E5=BC=8F=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=8F=92=E4=BB=B6=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/doris/DorisQueryProvider.java | 3 +++ .../engine/mysql/MysqlQueryProvider.java | 4 ++++ .../chart/ViewPluginBaseServiceImpl.java | 17 +++++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index 94cf5ba8f6..45e598be5d 100644 --- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -1078,6 +1078,9 @@ public class DorisQueryProvider extends QueryProvider { return CollectionUtils.isNotEmpty(list) ? "(" + String.join(" " + getLogic(y.getLogic()) + " ", strList) + ")" : null; } + private String reflectFieldName(DatasetTableField field) { + return field.getDataeaseName(); + } private String calcFieldRegex(String originField, SQLObj tableObj) { originField = originField.replaceAll("[\\t\\n\\r]]", ""); // 正则提取[xxx] diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java index 58ddbdaf45..b0da249e9a 100644 --- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java @@ -836,6 +836,10 @@ public class MysqlQueryProvider extends QueryProvider { return CollectionUtils.isNotEmpty(res) ? "(" + String.join(" AND ", res) + ")" : null; } + private String reflectFieldName(DatasetTableField field) { + return field.getDataeaseName(); + } + public String transExtFilterList(SQLObj tableObj, List requestList) { if (CollectionUtils.isEmpty(requestList)) { return null; diff --git a/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java b/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java index 2b7bb783ee..ad2fd67212 100644 --- a/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java +++ b/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java @@ -2,6 +2,7 @@ package io.dataease.service.chart; import cn.hutool.core.util.ReflectUtil; import com.google.gson.Gson; +import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.Datasource; import io.dataease.controller.request.chart.ChartExtFilterRequest; import io.dataease.dto.chart.ChartFieldCustomFilterDTO; @@ -132,12 +133,13 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService { private String getOriginName(String dsType, PluginViewField pluginViewField, PluginViewSQL tableObj) { String keyword_fix = ConstantsUtil.constantsValue(dsType, "KEYWORD_FIX"); String originField; + String reflectField = reflectFieldName(dsType, pluginViewField); if (ObjectUtils.isNotEmpty(pluginViewField.getExtField()) && pluginViewField.getExtField() == 2) { originField = calcFieldRegex(dsType,pluginViewField.getOriginName(), tableObj); } else if (ObjectUtils.isNotEmpty(pluginViewField.getExtField()) && pluginViewField.getExtField() == 1) { - originField = String.format(keyword_fix, tableObj.getTableAlias(), pluginViewField.getOriginName()); + originField = String.format(keyword_fix, tableObj.getTableAlias(), StringUtils.isNotBlank(reflectField) ? reflectField : pluginViewField.getOriginName()); } else { - originField = String.format(keyword_fix, tableObj.getTableAlias(), pluginViewField.getOriginName()); + originField = String.format(keyword_fix, tableObj.getTableAlias(), StringUtils.isNotBlank(reflectField) ? reflectField : pluginViewField.getOriginName()); } return originField; } @@ -153,6 +155,17 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService { return null; } + private String reflectFieldName(String dsType, PluginViewField pluginViewField ) { + QueryProvider queryProvider = ProviderFactory.getQueryProvider(dsType); + String methodName = "reflectFieldName"; + DatasetTableField field = BeanUtils.copyBean(new DatasetTableField(), pluginViewField);; + Object o ; + if ((o = execProviderMethod(queryProvider, methodName, field)) != null) { + return (String)o; + } + return null; + } + private PluginViewSQL getField(String dsType, PluginViewField field, String originField, String fieldAlias) {