From 9518dd72408ae8de13c1169f07e917414c624269 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 1 Jun 2022 16:08:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=B0=E6=8D=AE=E6=BA=90=E9=80=82?= =?UTF-8?q?=E9=85=8Dgroup=5Fconcat=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/query/ck/CKQueryProvider.java | 3 +++ .../provider/query/db2/Db2QueryProvider.java | 3 +++ .../provider/query/es/EsQueryProvider.java | 3 +++ .../provider/query/hive/HiveQueryProvider.java | 3 +++ .../provider/query/impala/ImpalaQueryProvider.java | 3 +++ .../provider/query/mongodb/MongoQueryProvider.java | 2 ++ .../provider/query/mysql/MysqlQueryProvider.java | 6 +++++- .../provider/query/oracle/OracleQueryProvider.java | 6 +++++- .../provider/query/pg/PgQueryProvider.java | 10 +++++----- .../query/redshift/RedshiftQueryProvider.java | 2 ++ .../query/sqlserver/SqlserverQueryProvider.java | 3 +++ .../service/chart/ViewPluginBaseServiceImpl.java | 14 ++++++++++++++ 12 files changed, 51 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java index b545be38ea..ded1e721e2 100644 --- a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java @@ -6,6 +6,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.CKConstants; +import io.dataease.plugins.common.constants.Db2Constants; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; @@ -1059,6 +1060,8 @@ public class CKQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(CKConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(CKConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java index 9a03447184..ea6217e585 100644 --- a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java @@ -9,6 +9,7 @@ import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.dto.datasource.Db2Configuration; import io.dataease.plugins.common.constants.Db2Constants; import io.dataease.plugins.common.constants.DeTypeConstants; +import io.dataease.plugins.common.constants.EsSqlLConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; @@ -1029,6 +1030,8 @@ public class Db2QueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(Db2Constants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(Db2Constants.GROUP_CONCAT, originField); } else { fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index d73281b1b9..a2ec6771ad 100644 --- a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.EsSqlLConstants; +import io.dataease.plugins.common.constants.HiveConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; @@ -1052,6 +1053,8 @@ public class EsQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(EsSqlLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(EsSqlLConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java index ef866ac70e..0e655fa419 100644 --- a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.HiveConstants; +import io.dataease.plugins.common.constants.ImpalaConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; @@ -1027,6 +1028,8 @@ public class HiveQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(HiveConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(HiveConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java index 79c8b5a45b..c970b1aade 100644 --- a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.ImpalaConstants; +import io.dataease.plugins.common.constants.MongoConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; @@ -995,6 +996,8 @@ public class ImpalaQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(ImpalaConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(ImpalaConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java index fe3d57abe1..26b7a40a40 100644 --- a/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mongodb/MongoQueryProvider.java @@ -936,6 +936,8 @@ public class MongoQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(MongoConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(MongoConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index 112892e331..3c146fb8d9 100644 --- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -1031,7 +1031,11 @@ public class MysqlQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(MySQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); - } else { + } + else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(MySQLConstants.GROUP_CONCAT, originField); + } + else { fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), originField); } } else { diff --git a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java index 5ea4c263ef..db13639ff6 100644 --- a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.dto.datasource.OracleConfiguration; +import io.dataease.plugins.common.constants.MySQLConstants; import io.dataease.plugins.common.constants.OracleConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; @@ -1104,7 +1105,10 @@ public class OracleQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(OracleConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); - } else { + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(OracleConstants.GROUP_CONCAT, originField, originField); + } + else { fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), originField); } } else { diff --git a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java index 7f2bd2f7e1..d85dffa89e 100644 --- a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java @@ -6,10 +6,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; -import io.dataease.plugins.common.constants.DeTypeConstants; -import io.dataease.plugins.common.constants.PgConstants; -import io.dataease.plugins.common.constants.SQLConstants; -import io.dataease.plugins.common.constants.SqlServerSQLConstants; +import io.dataease.plugins.common.constants.*; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; @@ -1021,7 +1018,10 @@ public class PgQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); - } else { + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(PgConstants.GROUP_CONCAT, originField); + } + else { fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField); } } else { diff --git a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java index 6f2e1fc8f6..42c340eea4 100644 --- a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java @@ -944,6 +944,8 @@ public class RedshiftQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(RedshiftConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField); } diff --git a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java index 8c54d8d267..05bed2ccd3 100644 --- a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java @@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; +import io.dataease.plugins.common.constants.ImpalaConstants; import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SqlServerSQLConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; @@ -1070,6 +1071,8 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) { + fieldName = String.format(SqlServerSQLConstants.GROUP_CONCAT, originField); } else { fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField); } 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 3a43927454..eac7c169c0 100644 --- a/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java +++ b/backend/src/main/java/io/dataease/service/chart/ViewPluginBaseServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ReflectUtil; import com.google.gson.Gson; import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataTableInfoDTO; +import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.constants.SQLConstants; @@ -225,4 +226,17 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService { return null; } + @Override + public String sqlLimit(String dsType, String sql, PluginViewLimit pluginViewLimit) { + QueryProvider queryProvider = ProviderFactory.getQueryProvider(dsType); + String methodName = "sqlLimit"; + ChartViewWithBLOBs chartView = new ChartViewWithBLOBs(); + chartView.setResultMode(pluginViewLimit.getResultMode()); + chartView.setResultCount(pluginViewLimit.getResultCount()); + Object result; + if ((result = execProviderMethod(queryProvider, methodName, sql, chartView)) != null) { + return result.toString(); + } + return sql; + } }