From bc4ef29bd20f8fea08064e2e7b4436ef67316df4 Mon Sep 17 00:00:00 2001 From: junjie Date: Mon, 1 Nov 2021 12:39:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=A7=86=E5=9B=BE=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=BF=94=E5=9B=9E1000=E6=9D=A1=E6=95=B0=E6=8D=AE=EF=BC=9Bdoris?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=8D=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/provider/QueryProvider.java | 36 +++++----- .../dataease/provider/ck/CKQueryProvider.java | 49 ++++++++------ .../provider/doris/DorisQueryProvider.java | 65 +++++++++++-------- .../dataease/provider/es/EsQueryProvider.java | 47 ++++++++------ .../provider/mongodb/MongoQueryProvider.java | 49 ++++++++------ .../provider/mysql/MysqlQueryProvider.java | 49 ++++++++------ .../provider/oracle/OracleQueryProvider.java | 49 ++++++++------ .../dataease/provider/pg/PgQueryProvider.java | 53 ++++++++------- .../sqlserver/SqlserverQueryProvider.java | 49 ++++++++------ .../service/chart/ChartViewService.java | 48 +++++++------- 10 files changed, 285 insertions(+), 209 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/QueryProvider.java b/backend/src/main/java/io/dataease/provider/QueryProvider.java index 7695330d3c..3d8c00577e 100644 --- a/backend/src/main/java/io/dataease/provider/QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/QueryProvider.java @@ -1,6 +1,7 @@ package io.dataease.provider; import com.google.gson.Gson; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.Datasource; import io.dataease.controller.request.chart.ChartExtFilterRequest; @@ -34,29 +35,32 @@ public abstract class QueryProvider { public abstract String createQuerySqlWithLimit(String sql, List fields, Integer limit, boolean isGroup); - public abstract String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds); + public abstract String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); - public abstract String getSQLAsTmp(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList); + public abstract String getSQLAsTmp(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view); - public abstract String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds); + public abstract String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); - public abstract String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds); + public abstract String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); - public abstract String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds); + public abstract String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view); - public abstract String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack); + public abstract String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view); - public abstract String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds); + public abstract String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view); - public abstract String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble); + public abstract String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view); public abstract String searchTable(String table); - public abstract String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList); + public abstract String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view); - public Integer transFieldSize(String type){ + public Integer transFieldSize(String type) { return 50; - }; + } + + ; + /** * 单指标汇总 * @@ -66,7 +70,7 @@ public abstract class QueryProvider { * @param extFilterRequestList * @return */ - public abstract String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList); + public abstract String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view); public abstract String wrapSql(String sql); @@ -74,15 +78,15 @@ public abstract class QueryProvider { public abstract String createRawQuerySQLAsTmp(String sql, List fields); - public void setSchema(SQLObj tableObj, Datasource ds){ - if(ds != null && !tableObj.getTableName().startsWith("(") && !tableObj.getTableName().endsWith(")")){ + public void setSchema(SQLObj tableObj, Datasource ds) { + if (ds != null && !tableObj.getTableName().startsWith("(") && !tableObj.getTableName().endsWith(")")) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); - schema = String.format( PgConstants.KEYWORD_TABLE, schema); + schema = String.format(PgConstants.KEYWORD_TABLE, schema); tableObj.setTableName(schema + "." + tableObj.getTableName()); } } - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { return "select * from tableName"; } } diff --git a/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java index 5f2088f5e6..752807df74 100644 --- a/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java @@ -1,5 +1,6 @@ package io.dataease.provider.ck; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -198,7 +199,7 @@ public class CKQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -300,11 +301,11 @@ public class CKQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -372,22 +373,22 @@ public class CKQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -492,16 +493,16 @@ public class CKQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -606,12 +607,12 @@ public class CKQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -620,7 +621,7 @@ public class CKQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) @@ -688,12 +689,12 @@ public class CKQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -1091,4 +1092,12 @@ public class CKQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT 0," + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java index ff4a45c6c9..77fe502e33 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -1,5 +1,6 @@ package io.dataease.provider.doris; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -140,14 +141,14 @@ public class DorisQueryProvider extends QueryProvider { st_sql.add("isGroup", isGroup); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); - if ((fields.size() > 0)) { - xOrders.add(SQLObj.builder() - .orderDirection("asc") - .orderField(fields.get(0).getDataeaseName()) - .orderAlias(String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, "0")) - .build()); - st_sql.add("orders", xOrders); - } +// if ((fields.size() > 0)) { +// xOrders.add(SQLObj.builder() +// .orderDirection("asc") +// .orderField(fields.get(0).getDataeaseName()) +// .orderAlias(String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, "0")) +// .build()); +// st_sql.add("orders", xOrders); +// } return st_sql.render(); } @@ -177,7 +178,7 @@ public class DorisQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -279,11 +280,11 @@ public class DorisQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -351,21 +352,21 @@ public class DorisQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sql + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sql + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -470,16 +471,16 @@ public class DorisQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + table + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + table + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -584,12 +585,12 @@ public class DorisQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + table + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + table + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -598,7 +599,7 @@ public class DorisQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) @@ -666,12 +667,12 @@ public class DorisQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sql + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sql + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -1068,4 +1069,12 @@ public class DorisQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT 0," + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java index 96dbcb9bde..bc8de7ced2 100644 --- a/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java @@ -1,5 +1,6 @@ package io.dataease.provider.es; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -198,7 +199,7 @@ public class EsQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -300,27 +301,27 @@ public class EsQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { return null; } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { return null; } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -425,16 +426,16 @@ public class EsQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -539,12 +540,12 @@ public class EsQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -553,7 +554,7 @@ public class EsQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) @@ -621,12 +622,12 @@ public class EsQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -655,7 +656,7 @@ public class EsQueryProvider extends QueryProvider { } @Override - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { return createSQLPreview("SELECT * FROM " + String.format(EsSqlLConstants.KEYWORD_TABLE, tableName), null); } @@ -972,4 +973,12 @@ public class EsQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT " + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/mongodb/MongoQueryProvider.java b/backend/src/main/java/io/dataease/provider/mongodb/MongoQueryProvider.java index 4a8430627c..1b8a7a608a 100644 --- a/backend/src/main/java/io/dataease/provider/mongodb/MongoQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mongodb/MongoQueryProvider.java @@ -1,5 +1,6 @@ package io.dataease.provider.mongodb; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -143,7 +144,7 @@ public class MongoQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -245,11 +246,11 @@ public class MongoQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -317,22 +318,22 @@ public class MongoQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -437,16 +438,16 @@ public class MongoQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -551,12 +552,12 @@ public class MongoQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -565,7 +566,7 @@ public class MongoQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) @@ -633,12 +634,12 @@ public class MongoQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -992,4 +993,12 @@ public class MongoQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT 0," + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java index bf13f1abe0..7bc25393cb 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java @@ -1,5 +1,6 @@ package io.dataease.provider.mysql; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -166,7 +167,7 @@ public class MysqlQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -268,11 +269,11 @@ public class MysqlQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -340,22 +341,22 @@ public class MysqlQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -460,16 +461,16 @@ public class MysqlQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -574,12 +575,12 @@ public class MysqlQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -588,7 +589,7 @@ public class MysqlQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) @@ -656,12 +657,12 @@ public class MysqlQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -1051,4 +1052,12 @@ public class MysqlQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT 0," + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java index 03e45473c5..1db7daa390 100644 --- a/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java @@ -1,6 +1,7 @@ package io.dataease.provider.oracle; import com.google.gson.Gson; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -212,7 +213,7 @@ public class OracleQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) @@ -315,11 +316,11 @@ public class OracleQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) @@ -388,21 +389,21 @@ public class OracleQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) @@ -508,16 +509,16 @@ public class OracleQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) @@ -623,12 +624,12 @@ public class OracleQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -637,7 +638,7 @@ public class OracleQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) @@ -704,12 +705,12 @@ public class OracleQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -1124,4 +1125,12 @@ public class OracleQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return "SELECT * FROM (" + sqlFix(sql) + ") DE_RESULT_TMP " + " WHERE rownum <= " + view.getResultCount(); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java index e99f5b666d..219b072586 100644 --- a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java @@ -1,6 +1,7 @@ package io.dataease.provider.pg; import com.google.gson.Gson; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -187,7 +188,7 @@ public class PgQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -290,11 +291,11 @@ public class PgQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -363,22 +364,22 @@ public class PgQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -484,16 +485,16 @@ public class PgQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -599,12 +600,12 @@ public class PgQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -613,7 +614,7 @@ public class PgQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) @@ -681,12 +682,12 @@ public class PgQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -721,9 +722,9 @@ public class PgQueryProvider extends QueryProvider { } @Override - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); - schema = String.format( PgConstants.KEYWORD_TABLE, schema); + schema = String.format(PgConstants.KEYWORD_TABLE, schema); return createSQLPreview("SELECT * FROM " + schema + "." + String.format(PgConstants.KEYWORD_TABLE, tableName), null); } @@ -1039,4 +1040,12 @@ public class PgQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return sql + " LIMIT " + view.getResultCount() + " offset 0"; + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java index 9e91f80be2..88faa0ecdc 100644 --- a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java @@ -1,6 +1,7 @@ package io.dataease.provider.sqlserver; import com.google.gson.Gson; +import io.dataease.base.domain.ChartViewWithBLOBs; import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableFieldExample; import io.dataease.base.domain.Datasource; @@ -172,7 +173,7 @@ public class SqlserverQueryProvider extends QueryProvider { } @Override - public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQL(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -259,11 +260,11 @@ public class SqlserverQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { + public String getSQLTableInfo(String table, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -324,22 +325,22 @@ public class SqlserverQueryProvider extends QueryProvider { .build(); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds) { - return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmpTableInfo(String sql, List xAxis, List customFilter, List extFilterRequestList, Datasource ds, ChartViewWithBLOBs view) { + return getSQLTableInfo("(" + sqlFix(sql) + ")", xAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList) { - return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null); + public String getSQLAsTmp(String sql, List xAxis, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQL("(" + sqlFix(sql) + ")", xAxis, yAxis, customFilter, extFilterRequestList, null, view); } @Override - public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds) { + public String getSQLStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -448,16 +449,16 @@ public class SqlserverQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack) { - return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null); + public String getSQLAsTmpStack(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extStack, ChartViewWithBLOBs view) { + return getSQLStack("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extStack, null, view); } @Override - public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds) { + public String getSQLScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, Datasource ds, ChartViewWithBLOBs view) { SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) @@ -563,12 +564,12 @@ public class SqlserverQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble) { - return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null); + public String getSQLAsTmpScatter(String table, List xAxis, List yAxis, List customFilter, List extFilterRequestList, List extBubble, ChartViewWithBLOBs view) { + return getSQLScatter("(" + sqlFix(table) + ")", xAxis, yAxis, customFilter, extFilterRequestList, extBubble, null, view); } @Override @@ -577,7 +578,7 @@ public class SqlserverQueryProvider extends QueryProvider { } @Override - public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList) { + public String getSQLSummary(String table, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { // 字段汇总 排序等 SQLObj tableObj = SQLObj.builder() .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) @@ -637,12 +638,12 @@ public class SqlserverQueryProvider extends QueryProvider { if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); - return st.render(); + return sqlLimit(st.render(), view); } @Override - public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList) { - return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList); + public String getSQLSummaryAsTmp(String sql, List yAxis, List customFilter, List extFilterRequestList, ChartViewWithBLOBs view) { + return getSQLSummary("(" + sqlFix(sql) + ")", yAxis, customFilter, extFilterRequestList, view); } @Override @@ -996,4 +997,12 @@ public class SqlserverQueryProvider extends QueryProvider { } return originField; } + + private String sqlLimit(String sql, ChartViewWithBLOBs view) { + if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) { + return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", view.getResultCount(), sqlFix(sql)); + } else { + return sql; + } + } } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index c06a1e7cf1..51193b5a7f 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -332,42 +332,42 @@ public class ChartViewService { if (StringUtils.equalsIgnoreCase(table.getType(), "db")) { datasourceRequest.setTable(dataTableInfoDTO.getTable()); if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, customFilter, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - datasourceRequest.setQuery(qp.getSQLStack(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, extStack, ds)); + datasourceRequest.setQuery(qp.getSQLStack(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, extStack, ds, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - datasourceRequest.setQuery(qp.getSQLScatter(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, extBubble, ds)); + datasourceRequest.setQuery(qp.getSQLScatter(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, extBubble, ds, view)); } else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) { - datasourceRequest.setQuery(qp.getSQLTableInfo(dataTableInfoDTO.getTable(), xAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQLTableInfo(dataTableInfoDTO.getTable(), xAxis, customFilter, extFilterList, ds, view)); } else { - datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, customFilter, extFilterList, ds, view)); } } else if (StringUtils.equalsIgnoreCase(table.getType(), "sql")) { if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(dataTableInfoDTO.getSql(), yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(dataTableInfoDTO.getSql(), yAxis, customFilter, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - datasourceRequest.setQuery(qp.getSQLAsTmpStack(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList, extStack)); + datasourceRequest.setQuery(qp.getSQLAsTmpStack(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList, extStack, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - datasourceRequest.setQuery(qp.getSQLAsTmpScatter(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList, extBubble)); + datasourceRequest.setQuery(qp.getSQLAsTmpScatter(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList, extBubble, view)); } else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) { - datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(dataTableInfoDTO.getSql(), xAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(dataTableInfoDTO.getSql(), xAxis, customFilter, extFilterList, ds, view)); } else { - datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, customFilter, extFilterList, view)); } } else if (StringUtils.equalsIgnoreCase(table.getType(), "custom")) { DataTableInfoDTO dt = new Gson().fromJson(table.getInfo(), DataTableInfoDTO.class); List list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds); if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, customFilter, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, customFilter, extFilterList, extStack)); + datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, customFilter, extFilterList, extStack, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - datasourceRequest.setQuery(qp.getSQLAsTmpScatter(sql, xAxis, yAxis, customFilter, extFilterList, extBubble)); + datasourceRequest.setQuery(qp.getSQLAsTmpScatter(sql, xAxis, yAxis, customFilter, extFilterList, extBubble, view)); } else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) { - datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(sql, xAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(sql, xAxis, customFilter, extFilterList, ds, view)); } else { - datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, customFilter, extFilterList, view)); } } data = datasourceProvider.getData(datasourceRequest); @@ -391,15 +391,15 @@ public class ChartViewService { datasourceRequest.setTable(tableName); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { - datasourceRequest.setQuery(qp.getSQLSummary(tableName, yAxis, customFilter, extFilterList)); + datasourceRequest.setQuery(qp.getSQLSummary(tableName, yAxis, customFilter, extFilterList, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { - datasourceRequest.setQuery(qp.getSQLStack(tableName, xAxis, yAxis, customFilter, extFilterList, extStack, ds)); + datasourceRequest.setQuery(qp.getSQLStack(tableName, xAxis, yAxis, customFilter, extFilterList, extStack, ds, view)); } else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) { - datasourceRequest.setQuery(qp.getSQLScatter(tableName, xAxis, yAxis, customFilter, extFilterList, extBubble, ds)); + datasourceRequest.setQuery(qp.getSQLScatter(tableName, xAxis, yAxis, customFilter, extFilterList, extBubble, ds, view)); } else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) { - datasourceRequest.setQuery(qp.getSQLTableInfo(tableName, xAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQLTableInfo(tableName, xAxis, customFilter, extFilterList, ds, view)); } else { - datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, customFilter, extFilterList, ds)); + datasourceRequest.setQuery(qp.getSQL(tableName, xAxis, yAxis, customFilter, extFilterList, ds, view)); } /*// 定时抽取使用缓存 Object cache; @@ -435,10 +435,10 @@ public class ChartViewService { } } } - // 返回数据量判定 - if (StringUtils.equalsIgnoreCase("custom", view.getResultMode()) && data.size() > view.getResultCount()) { - data = data.subList(0, view.getResultCount()); - } +// // 返回数据量判定 +// if (StringUtils.equalsIgnoreCase("custom", view.getResultMode()) && data.size() > view.getResultCount()) { +// data = data.subList(0, view.getResultCount()); +// } Map map = new TreeMap<>(); // 图表组件可再扩展