Unverified 提交 2be01cfb authored 作者: XiaJunjie2020's avatar XiaJunjie2020 提交者: GitHub

Merge pull request #390 from dataease/pr@dev@fix_自定义数据集关联问题

fix: 自定义数据集关联问题
...@@ -20,17 +20,17 @@ public abstract class QueryProvider { ...@@ -20,17 +20,17 @@ public abstract class QueryProvider {
public abstract String createSQLPreview(String sql, String orderBy); public abstract String createSQLPreview(String sql, String orderBy);
public abstract String createQuerySQL(String table, List<DatasetTableField> fields); public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup);
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields); public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup);
public abstract String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize); public abstract String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup);
public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit); public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup);
public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit); public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup);
public abstract String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize); public abstract String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup);
public abstract String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList); public abstract String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList);
......
...@@ -81,7 +81,7 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -81,7 +81,7 @@ public class DorisQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -130,7 +130,7 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -130,7 +130,7 @@ public class DorisQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
if ((fields.size() > 0)) { if ((fields.size() > 0)) {
xOrders.add(SQLObj.builder() xOrders.add(SQLObj.builder()
...@@ -144,28 +144,28 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -144,28 +144,28 @@ public class DorisQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sql + ")", fields); return createQuerySQL("(" + sql + ")", fields, isGroup);
} }
@Override @Override
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQL(table, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQL(table, fields) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -80,7 +80,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -80,7 +80,7 @@ public class MysqlQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -128,34 +128,34 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -128,34 +128,34 @@ public class MysqlQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup);
} }
@Override @Override
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQL(table, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQL(table, fields) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
...@@ -102,7 +102,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -102,7 +102,7 @@ public class OracleQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
return st_sql.render(); return st_sql.render();
} }
...@@ -164,33 +164,33 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -164,33 +164,33 @@ public class OracleQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup);
} }
@Override @Override
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
List<SQLObj> xFields = xFields(table, fields); List<SQLObj> xFields = xFields(table, fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
sqlColumn(xFields), createQuerySQL(table, fields), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); sqlColumn(xFields), createQuerySQL(table, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return String.format("SELECT %s.* from %s WHERE rownum <= %s ", table, table, limit.toString()); return String.format("SELECT %s.* from %s WHERE rownum <= %s ", table, table, limit.toString());
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString()); return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString());
} }
@Override @Override
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
List<SQLObj> xFields = xFields("(" + sqlFix(sql) + ")", fields); List<SQLObj> xFields = xFields("(" + sqlFix(sql) + ")", fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
sqlColumn(xFields), createQuerySQLAsTmp(sql, fields), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
} }
@Override @Override
......
package io.dataease.provider.sqlserver; //package io.dataease.provider.sqlserver;
//
import io.dataease.base.domain.DatasetTableField; //import io.dataease.base.domain.DatasetTableField;
import io.dataease.controller.request.chart.ChartExtFilterRequest; //import io.dataease.controller.request.chart.ChartExtFilterRequest;
import io.dataease.dto.chart.ChartCustomFilterDTO; //import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO; //import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.provider.QueryProvider; //import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils; //import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; //import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; //import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import java.text.MessageFormat; //import java.text.MessageFormat;
import java.text.SimpleDateFormat; //import java.text.SimpleDateFormat;
import java.util.Arrays; //import java.util.Arrays;
import java.util.Date; //import java.util.Date;
import java.util.List; //import java.util.List;
//
/** ///**
* @Author gin // * @Author gin
* @Date 2021/5/17 2:43 下午 // * @Date 2021/5/17 2:43 下午
*/ // */
@Service("sqlServerQuery") //@Service("sqlServerQuery")
public class SqlserverQueryProvider extends QueryProvider { //public class SqlserverQueryProvider extends QueryProvider {
@Override // @Override
public Integer transFieldType(String field) { // public Integer transFieldType(String field) {
switch (field) { // switch (field) {
case "CHAR": // case "CHAR":
case "VARCHAR": // case "VARCHAR":
case "TEXT": // case "TEXT":
case "TINYTEXT": // case "TINYTEXT":
case "MEDIUMTEXT": // case "MEDIUMTEXT":
case "LONGTEXT": // case "LONGTEXT":
case "ENUM": // case "ENUM":
return 0;// 文本 // return 0;// 文本
case "DATE": // case "DATE":
case "TIME": // case "TIME":
case "YEAR": // case "YEAR":
case "DATETIME": // case "DATETIME":
case "TIMESTAMP": // case "TIMESTAMP":
return 1;// 时间 // return 1;// 时间
case "INT": // case "INT":
case "SMALLINT": // case "SMALLINT":
case "MEDIUMINT": // case "MEDIUMINT":
case "INTEGER": // case "INTEGER":
case "BIGINT": // case "BIGINT":
return 2;// 整型 // return 2;// 整型
case "FLOAT": // case "FLOAT":
case "DOUBLE": // case "DOUBLE":
case "DECIMAL": // case "DECIMAL":
return 3;// 浮点 // return 3;// 浮点
case "BIT": // case "BIT":
case "TINYINT": // case "TINYINT":
return 4;// 布尔 // return 4;// 布尔
default: // default:
return 0; // return 0;
} // }
} // }
//
@Override // @Override
public String createQueryCountSQL(String table) { // public String createQueryCountSQL(String table) {
return MessageFormat.format("SELECT COUNT(*) FROM {0}", table); // return MessageFormat.format("SELECT COUNT(*) FROM {0}", table);
} // }
//
@Override // @Override
public String createQueryCountSQLAsTmp(String sql) { // public String createQueryCountSQLAsTmp(String sql) {
return createQueryCountSQL(" (" + sqlFix(sql) + ") AS tmp "); // return createQueryCountSQL(" (" + sqlFix(sql) + ") AS tmp ");
} // }
//
@Override // @Override
public String createSQLPreview(String sql, String orderBy) { // public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000"; // return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000";
} // }
//
@Override // @Override
public String createQuerySQL(String table, List<DatasetTableField> fields) { // public String createQuerySQL(String table, List<DatasetTableField> fields) {
String[] array = fields.stream().map(f -> { // String[] array = fields.stream().map(f -> {
StringBuilder stringBuilder = new StringBuilder(); // StringBuilder stringBuilder = new StringBuilder();
// 如果原始类型为时间 // // 如果原始类型为时间
if (f.getDeExtractType() == 1) { // if (f.getDeExtractType() == 1) {
if (f.getDeType() == 2 || f.getDeType() == 3) { // if (f.getDeType() == 2 || f.getDeType() == 3) {
stringBuilder.append("UNIX_TIMESTAMP(`").append(f.getOriginName()).append("`)*1000 AS ").append(f.getDataeaseName()); // stringBuilder.append("UNIX_TIMESTAMP(`").append(f.getOriginName()).append("`)*1000 AS ").append(f.getDataeaseName());
} else { // } else {
stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName()); // stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
} // }
} else if (f.getDeExtractType() == 0) { // } else if (f.getDeExtractType() == 0) {
if (f.getDeType() == 2) { // if (f.getDeType() == 2) {
stringBuilder.append("CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,0)) AS ").append(f.getDataeaseName()); // stringBuilder.append("CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,0)) AS ").append(f.getDataeaseName());
} else if (f.getDeType() == 3) { // } else if (f.getDeType() == 3) {
stringBuilder.append("CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,2)) AS ").append(f.getDataeaseName()); // stringBuilder.append("CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,2)) AS ").append(f.getDataeaseName());
} else if (f.getDeType() == 1) { // } else if (f.getDeType() == 1) {
stringBuilder.append("DATE_FORMAT(`").append(f.getOriginName()).append("`,'%Y-%m-%d %H:%i:%S') AS _").append(f.getDataeaseName()); // stringBuilder.append("DATE_FORMAT(`").append(f.getOriginName()).append("`,'%Y-%m-%d %H:%i:%S') AS _").append(f.getDataeaseName());
} else { // } else {
stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName()); // stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
} // }
} else { // } else {
if (f.getDeType() == 1) { // if (f.getDeType() == 1) {
stringBuilder.append("FROM_UNIXTIME(CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') AS ").append(f.getDataeaseName()); // stringBuilder.append("FROM_UNIXTIME(CAST(`").append(f.getOriginName()).append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') AS ").append(f.getDataeaseName());
} else { // } else {
stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName()); // stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
} // }
} // }
return stringBuilder.toString(); // return stringBuilder.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table); // return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table);
} // }
//
@Override // @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields) { // public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields) {
return createQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields); // return createQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields);
} // }
//
@Override // @Override
public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { // public String createQuerySQLWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) {
return createQuerySQL(table, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; // return createQuerySQL(table, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} // }
//
@Override // @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit) { // public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit) {
return createQuerySQL(table, fields) + " LIMIT 0," + limit; // return createQuerySQL(table, fields) + " LIMIT 0," + limit;
} // }
//
@Override // @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit) { // public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT 0," + limit; // return createQuerySQLAsTmp(sql, fields) + " LIMIT 0," + limit;
} // }
//
@Override // @Override
public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) { // public String createQuerySQLAsTmpWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize) {
return createQuerySQLAsTmp(sql, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize; // return createQuerySQLAsTmp(sql, fields) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} // }
//
@Override // @Override
public String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) { // public String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) {
// 字段汇总 排序等 // // 字段汇总 排序等
String[] field = yAxis.stream().map(y -> { // String[] field = yAxis.stream().map(y -> {
StringBuilder f = new StringBuilder(); // StringBuilder f = new StringBuilder();
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) { // if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
f.append(y.getSummary()).append("(").append(y.getOriginName()).append(")"); // f.append(y.getSummary()).append("(").append(y.getOriginName()).append(")");
} else { // } else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { // if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
f.append("CAST(") // f.append("CAST(")
.append(y.getSummary()).append("(") // .append(y.getSummary()).append("(")
.append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") // .append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")")
.append(") AS DECIMAL(20,2)").append(")"); // .append(") AS DECIMAL(20,2)").append(")");
} else { // } else {
f.append(y.getSummary()).append("(") // f.append(y.getSummary()).append("(")
.append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") // .append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")")
.append(")"); // .append(")");
} // }
} // }
f.append(" AS `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`"); // f.append(" AS `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`");
return f.toString(); // return f.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
String[] groupField = xAxis.stream().map(x -> { // String[] groupField = xAxis.stream().map(x -> {
StringBuilder stringBuilder = new StringBuilder(); // StringBuilder stringBuilder = new StringBuilder();
// 如果原始类型为时间 // // 如果原始类型为时间
if (x.getDeExtractType() == 1) { // if (x.getDeExtractType() == 1) {
if (x.getDeType() == 2 || x.getDeType() == 3) { // if (x.getDeType() == 2 || x.getDeType() == 3) {
stringBuilder.append("UNIX_TIMESTAMP(`").append(x.getOriginName()).append("`)*1000 AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("UNIX_TIMESTAMP(`").append(x.getOriginName()).append("`)*1000 AS `_").append(x.getOriginName()).append("`");
} else if (x.getDeType() == 1) { // } else if (x.getDeType() == 1) {
String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); // String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
stringBuilder.append("DATE_FORMAT(`").append(x.getOriginName()).append("`,'").append(format).append("') AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("DATE_FORMAT(`").append(x.getOriginName()).append("`,'").append(format).append("') AS `_").append(x.getOriginName()).append("`");
} else { // } else {
stringBuilder.append("`").append(x.getOriginName()).append("` AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("`").append(x.getOriginName()).append("` AS `_").append(x.getOriginName()).append("`");
} // }
} else { // } else {
if (x.getDeType() == 1) { // if (x.getDeType() == 1) {
String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); // String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
if (x.getDeExtractType() == 0) { // if (x.getDeExtractType() == 0) {
stringBuilder.append("DATE_FORMAT(`").append(x.getOriginName()).append("`,'").append(format).append("') AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("DATE_FORMAT(`").append(x.getOriginName()).append("`,'").append(format).append("') AS `_").append(x.getOriginName()).append("`");
} else { // } else {
stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(CAST(`").append(x.getOriginName()).append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(CAST(`").append(x.getOriginName()).append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') AS `_").append(x.getOriginName()).append("`");
} // }
} else { // } else {
stringBuilder.append("`").append(x.getOriginName()).append("` AS `_").append(x.getOriginName()).append("`"); // stringBuilder.append("`").append(x.getOriginName()).append("` AS `_").append(x.getOriginName()).append("`");
} // }
} // }
return stringBuilder.toString(); // return stringBuilder.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
String[] group = xAxis.stream().map(x -> "`_" + x.getOriginName() + "`").toArray(String[]::new); // String[] group = xAxis.stream().map(x -> "`_" + x.getOriginName() + "`").toArray(String[]::new);
String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) // String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> "`_" + f.getOriginName() + "` " + f.getSort()).toArray(String[]::new); // .map(f -> "`_" + f.getOriginName() + "` " + f.getSort()).toArray(String[]::new);
String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) // String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> "`_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getOriginName(), "*") ? "" : f.getOriginName()) + "` " + f.getSort()).toArray(String[]::new); // .map(f -> "`_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getOriginName(), "*") ? "" : f.getOriginName()) + "` " + f.getSort()).toArray(String[]::new);
String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length); // String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length);
System.arraycopy(yOrder, 0, order, xOrder.length, yOrder.length); // System.arraycopy(yOrder, 0, order, xOrder.length, yOrder.length);
//
String[] xFilter = xAxis.stream().filter(x -> CollectionUtils.isNotEmpty(x.getFilter()) && x.getFilter().size() > 0) // String[] xFilter = xAxis.stream().filter(x -> CollectionUtils.isNotEmpty(x.getFilter()) && x.getFilter().size() > 0)
.map(x -> { // .map(x -> {
String[] s = x.getFilter().stream().map(f -> { // String[] s = x.getFilter().stream().map(f -> {
StringBuilder filter = new StringBuilder(); // StringBuilder filter = new StringBuilder();
if (x.getDeType() == 1 && x.getDeExtractType() != 1) { // if (x.getDeType() == 1 && x.getDeExtractType() != 1) {
filter.append(" AND FROM_UNIXTIME(cast(`") // filter.append(" AND FROM_UNIXTIME(cast(`")
.append(x.getOriginName()) // .append(x.getOriginName())
.append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); // .append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') ");
} else { // } else {
filter.append(" AND `").append(x.getOriginName()).append("`"); // filter.append(" AND `").append(x.getOriginName()).append("`");
} // }
filter.append(transMysqlFilterTerm(f.getTerm())); // filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { // if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')"); // filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { // } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND `").append(x.getOriginName()).append("`").append(" <> ''"); // filter.append(" AND `").append(x.getOriginName()).append("`").append(" <> ''");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) {
filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')"); // filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) {
filter.append("%").append(f.getValue()).append("%"); // filter.append("%").append(f.getValue()).append("%");
} else { // } else {
filter.append("'").append(f.getValue()).append("'"); // filter.append("'").append(f.getValue()).append("'");
} // }
return filter.toString(); // return filter.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
return StringUtils.join(s, " "); // return StringUtils.join(s, " ");
}).toArray(String[]::new); // }).toArray(String[]::new);
//
String sql = MessageFormat.format("SELECT {0},{1} FROM {2} WHERE 1=1 {3} GROUP BY {4} ORDER BY null,{5}", // String sql = MessageFormat.format("SELECT {0},{1} FROM {2} WHERE 1=1 {3} GROUP BY {4} ORDER BY null,{5}",
StringUtils.join(groupField, ","), // StringUtils.join(groupField, ","),
StringUtils.join(field, ","), // StringUtils.join(field, ","),
table, // table,
(xFilter.length > 0 ? StringUtils.join(xFilter, " ") : "") + transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter // (xFilter.length > 0 ? StringUtils.join(xFilter, " ") : "") + transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter
StringUtils.join(group, ","), // StringUtils.join(group, ","),
StringUtils.join(order, ",")); // StringUtils.join(order, ","));
if (sql.endsWith(",")) { // if (sql.endsWith(",")) {
sql = sql.substring(0, sql.length() - 1); // sql = sql.substring(0, sql.length() - 1);
} // }
// 如果是对结果字段过滤,则再包裹一层sql // // 如果是对结果字段过滤,则再包裹一层sql
String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0) // String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0)
.map(y -> { // .map(y -> {
String[] s = y.getFilter().stream().map(f -> { // String[] s = y.getFilter().stream().map(f -> {
StringBuilder filter = new StringBuilder(); // StringBuilder filter = new StringBuilder();
// 原始类型不是时间,在de中被转成时间的字段做处理 // // 原始类型不是时间,在de中被转成时间的字段做处理
if (y.getDeType() == 1 && y.getDeExtractType() != 1) { // if (y.getDeType() == 1 && y.getDeExtractType() != 1) {
filter.append(" AND FROM_UNIXTIME(CAST(`_") // filter.append(" AND FROM_UNIXTIME(CAST(`_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`") // .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`")
.append(" AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); // .append(" AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') ");
} else { // } else {
filter.append(" AND `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`"); // filter.append(" AND `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`");
} // }
filter.append(transMysqlFilterTerm(f.getTerm())); // filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { // if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')"); // filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { // } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND `_") // filter.append(" AND `_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()) // .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName())
.append("`").append(" <> ''"); // .append("`").append(" <> ''");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) {
filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')"); // filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) {
filter.append("%").append(f.getValue()).append("%"); // filter.append("%").append(f.getValue()).append("%");
} else { // } else {
filter.append("'").append(f.getValue()).append("'"); // filter.append("'").append(f.getValue()).append("'");
} // }
return filter.toString(); // return filter.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
return StringUtils.join(s, " "); // return StringUtils.join(s, " ");
}).toArray(String[]::new); // }).toArray(String[]::new);
if (resultFilter.length == 0) { // if (resultFilter.length == 0) {
return sql; // return sql;
} else { // } else {
String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1} ORDER BY {2}", // String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1} ORDER BY {2}",
"(" + sql + ") AS tmp", // "(" + sql + ") AS tmp",
StringUtils.join(resultFilter, " "), // StringUtils.join(resultFilter, " "),
ObjectUtils.isNotEmpty(yOrder) ? StringUtils.join(yOrder, ",") : "null"); // ObjectUtils.isNotEmpty(yOrder) ? StringUtils.join(yOrder, ",") : "null");
return filterSql; // return filterSql;
} // }
} // }
//
@Override // @Override
public String getSQLAsTmp(String sql, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) { // public String getSQLAsTmp(String sql, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) {
return getSQL(" (" + sqlFix(sql) + ") AS tmp ", xAxis, yAxis, customFilter, extFilterRequestList); // return getSQL(" (" + sqlFix(sql) + ") AS tmp ", xAxis, yAxis, customFilter, extFilterRequestList);
} // }
//
@Override // @Override
public String getSQLStack(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, List<ChartViewFieldDTO> extStack) { // public String getSQLStack(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, List<ChartViewFieldDTO> extStack) {
return null; // return null;
} // }
//
@Override // @Override
public String getSQLAsTmpStack(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, List<ChartViewFieldDTO> extStack) { // public String getSQLAsTmpStack(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, List<ChartViewFieldDTO> extStack) {
return null; // return null;
} // }
//
@Override // @Override
public String searchTable(String table) { // public String searchTable(String table) {
return "SELECT table_name FROM information_schema.TABLES WHERE table_name ='" + table + "'"; // return "SELECT table_name FROM information_schema.TABLES WHERE table_name ='" + table + "'";
} // }
//
@Override // @Override
public String getSQLSummary(String table, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) { // public String getSQLSummary(String table, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) {
// 字段汇总 排序等 // // 字段汇总 排序等
String[] field = yAxis.stream().map(y -> { // String[] field = yAxis.stream().map(y -> {
StringBuilder f = new StringBuilder(); // StringBuilder f = new StringBuilder();
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) { // if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
f.append(y.getSummary()).append("(").append(y.getOriginName()).append(")"); // f.append(y.getSummary()).append("(").append(y.getOriginName()).append(")");
} else { // } else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { // if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
f.append("CAST(") // f.append("CAST(")
.append(y.getSummary()).append("(") // .append(y.getSummary()).append("(")
.append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") // .append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")")
.append(") AS DECIMAL(20,2)").append(")"); // .append(") AS DECIMAL(20,2)").append(")");
} else { // } else {
f.append(y.getSummary()).append("(") // f.append(y.getSummary()).append("(")
.append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")") // .append("CAST(`").append(y.getOriginName()).append("` AS ").append(y.getDeType() == 2 ? "DECIMAL(20,0)" : "DECIMAL(20,2)").append(")")
.append(")"); // .append(")");
} // }
} // }
f.append(" AS `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`"); // f.append(" AS `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`");
return f.toString(); // return f.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
//
String[] order = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) // String[] order = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> "`_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getOriginName(), "*") ? "" : f.getOriginName()) + "` " + f.getSort()).toArray(String[]::new); // .map(f -> "`_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getOriginName(), "*") ? "" : f.getOriginName()) + "` " + f.getSort()).toArray(String[]::new);
//
String sql = MessageFormat.format("SELECT {0} FROM {1} WHERE 1=1 {2} ORDER BY null,{3}", // String sql = MessageFormat.format("SELECT {0} FROM {1} WHERE 1=1 {2} ORDER BY null,{3}",
StringUtils.join(field, ","), // StringUtils.join(field, ","),
table, // table,
transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter // transCustomFilter(customFilter) + transExtFilter(extFilterRequestList),// origin field filter and panel field filter
StringUtils.join(order, ",")); // StringUtils.join(order, ","));
if (sql.endsWith(",")) { // if (sql.endsWith(",")) {
sql = sql.substring(0, sql.length() - 1); // sql = sql.substring(0, sql.length() - 1);
} // }
// 如果是对结果字段过滤,则再包裹一层sql // // 如果是对结果字段过滤,则再包裹一层sql
String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0) // String[] resultFilter = yAxis.stream().filter(y -> CollectionUtils.isNotEmpty(y.getFilter()) && y.getFilter().size() > 0)
.map(y -> { // .map(y -> {
String[] s = y.getFilter().stream().map(f -> { // String[] s = y.getFilter().stream().map(f -> {
StringBuilder filter = new StringBuilder(); // StringBuilder filter = new StringBuilder();
// 原始类型不是时间,在de中被转成时间的字段做处理 // // 原始类型不是时间,在de中被转成时间的字段做处理
if (y.getDeType() == 1 && y.getDeExtractType() != 1) { // if (y.getDeType() == 1 && y.getDeExtractType() != 1) {
filter.append(" AND FROM_UNIXTIME(CAST(`_") // filter.append(" AND FROM_UNIXTIME(CAST(`_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`") // .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`")
.append(" AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); // .append(" AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') ");
} else { // } else {
filter.append(" AND `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`"); // filter.append(" AND `_").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()).append("`");
} // }
filter.append(transMysqlFilterTerm(f.getTerm())); // filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { // if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')"); // filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { // } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND `_") // filter.append(" AND `_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName()) // .append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName())
.append("`").append(" <> ''"); // .append("`").append(" <> ''");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) {
filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')"); // filter.append("('").append(StringUtils.join(f.getValue(), "','")).append("')");
} else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { // } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) {
filter.append("%").append(f.getValue()).append("%"); // filter.append("%").append(f.getValue()).append("%");
} else { // } else {
filter.append("'").append(f.getValue()).append("'"); // filter.append("'").append(f.getValue()).append("'");
} // }
return filter.toString(); // return filter.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
return StringUtils.join(s, " "); // return StringUtils.join(s, " ");
}).toArray(String[]::new); // }).toArray(String[]::new);
if (resultFilter.length == 0) { // if (resultFilter.length == 0) {
return sql; // return sql;
} else { // } else {
String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1} ORDER BY {2}", // String filterSql = MessageFormat.format("SELECT * FROM {0} WHERE 1=1 {1} ORDER BY {2}",
"(" + sql + ") AS tmp", // "(" + sql + ") AS tmp",
StringUtils.join(resultFilter, " "), // StringUtils.join(resultFilter, " "),
ObjectUtils.isNotEmpty(order) ? StringUtils.join(order, ",") : "null"); // ObjectUtils.isNotEmpty(order) ? StringUtils.join(order, ",") : "null");
return filterSql; // return filterSql;
} // }
} // }
//
@Override // @Override
public String getSQLSummaryAsTmp(String sql, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) { // public String getSQLSummaryAsTmp(String sql, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList) {
return getSQLSummary(" (" + sqlFix(sql) + ") AS tmp ", yAxis, customFilter, extFilterRequestList); // return getSQLSummary(" (" + sqlFix(sql) + ") AS tmp ", yAxis, customFilter, extFilterRequestList);
} // }
//
@Override // @Override
public String wrapSql(String sql) { // public String wrapSql(String sql) {
sql = sql.trim(); // sql = sql.trim();
if (sql.lastIndexOf(";") == (sql.length() - 1)) { // if (sql.lastIndexOf(";") == (sql.length() - 1)) {
sql = sql.substring(0, sql.length() - 1); // sql = sql.substring(0, sql.length() - 1);
} // }
String tmpSql = "SELECT * FROM (" + sql + ") AS tmp " + " LIMIT 0"; // String tmpSql = "SELECT * FROM (" + sql + ") AS tmp " + " LIMIT 0";
return tmpSql; // return tmpSql;
} // }
//
@Override // @Override
public String createRawQuerySQL(String table, List<DatasetTableField> fields) { // public String createRawQuerySQL(String table, List<DatasetTableField> fields) {
String[] array = fields.stream().map(f -> { // String[] array = fields.stream().map(f -> {
StringBuilder stringBuilder = new StringBuilder(); // StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName()); // stringBuilder.append("`").append(f.getOriginName()).append("` AS ").append(f.getDataeaseName());
return stringBuilder.toString(); // return stringBuilder.toString();
}).toArray(String[]::new); // }).toArray(String[]::new);
return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table); // return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table);
} // }
//
@Override // @Override
public String createRawQuerySQLAsTmp(String sql, List<DatasetTableField> fields) { // public String createRawQuerySQLAsTmp(String sql, List<DatasetTableField> fields) {
return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields); // return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields);
} // }
//
public String transMysqlFilterTerm(String term) { // public String transMysqlFilterTerm(String term) {
switch (term) { // switch (term) {
case "eq": // case "eq":
return " = "; // return " = ";
case "not_eq": // case "not_eq":
return " <> "; // return " <> ";
case "lt": // case "lt":
return " < "; // return " < ";
case "le": // case "le":
return " <= "; // return " <= ";
case "gt": // case "gt":
return " > "; // return " > ";
case "ge": // case "ge":
return " >= "; // return " >= ";
case "in": // case "in":
return " IN "; // return " IN ";
case "not in": // case "not in":
return " NOT IN "; // return " NOT IN ";
case "like": // case "like":
return " LIKE "; // return " LIKE ";
case "not like": // case "not like":
return " NOT LIKE "; // return " NOT LIKE ";
case "null": // case "null":
return " IN "; // return " IN ";
case "not_null": // case "not_null":
return " IS NOT NULL "; // return " IS NOT NULL ";
case "between": // case "between":
return " BETWEEN "; // return " BETWEEN ";
default: // default:
return ""; // return "";
} // }
} // }
//
public String transCustomFilter(List<ChartCustomFilterDTO> requestList) { // public String transCustomFilter(List<ChartCustomFilterDTO> requestList) {
if (CollectionUtils.isEmpty(requestList)) { // if (CollectionUtils.isEmpty(requestList)) {
return ""; // return "";
} // }
StringBuilder filter = new StringBuilder(); // StringBuilder filter = new StringBuilder();
for (ChartCustomFilterDTO request : requestList) { // for (ChartCustomFilterDTO request : requestList) {
String value = request.getValue(); // String value = request.getValue();
DatasetTableField field = request.getField(); // DatasetTableField field = request.getField();
if (ObjectUtils.isEmpty(field)) { // if (ObjectUtils.isEmpty(field)) {
continue; // continue;
} // }
if (field.getDeType() == 1 && field.getDeExtractType() != 1) { // if (field.getDeType() == 1 && field.getDeExtractType() != 1) {
filter.append(" AND FROM_UNIXTIME(CAST(`") // filter.append(" AND FROM_UNIXTIME(CAST(`")
.append(field.getOriginName()) // .append(field.getOriginName())
.append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); // .append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') ");
} else { // } else {
filter.append(" AND `").append(field.getOriginName()).append("`"); // filter.append(" AND `").append(field.getOriginName()).append("`");
} // }
filter.append(" ") // filter.append(" ")
.append(transMysqlFilterTerm(request.getTerm())) // .append(transMysqlFilterTerm(request.getTerm()))
.append(" "); // .append(" ");
if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { // if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) {
filter.append("(null,'')"); // filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { // } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) {
filter.append(" AND `").append(field.getOriginName()).append("`").append(" <> ''"); // filter.append(" AND `").append(field.getOriginName()).append("`").append(" <> ''");
} else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { // } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) {
filter.append("('").append(StringUtils.join(value, "','")).append("')"); // filter.append("('").append(StringUtils.join(value, "','")).append("')");
} else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { // } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) {
filter.append("'%").append(value).append("%'"); // filter.append("'%").append(value).append("%'");
} else { // } else {
filter.append("'").append(value).append("'"); // filter.append("'").append(value).append("'");
} // }
} // }
return filter.toString(); // return filter.toString();
} // }
//
public String transExtFilter(List<ChartExtFilterRequest> requestList) { // public String transExtFilter(List<ChartExtFilterRequest> requestList) {
if (CollectionUtils.isEmpty(requestList)) { // if (CollectionUtils.isEmpty(requestList)) {
return ""; // return "";
} // }
StringBuilder filter = new StringBuilder(); // StringBuilder filter = new StringBuilder();
for (ChartExtFilterRequest request : requestList) { // for (ChartExtFilterRequest request : requestList) {
List<String> value = request.getValue(); // List<String> value = request.getValue();
if (CollectionUtils.isEmpty(value)) { // if (CollectionUtils.isEmpty(value)) {
continue; // continue;
} // }
DatasetTableField field = request.getDatasetTableField(); // DatasetTableField field = request.getDatasetTableField();
if (field.getDeType() == 1 && field.getDeExtractType() != 1) { // if (field.getDeType() == 1 && field.getDeExtractType() != 1) {
filter.append(" AND FROM_UNIXTIME(CAST(`") // filter.append(" AND FROM_UNIXTIME(CAST(`")
.append(field.getOriginName()) // .append(field.getOriginName())
.append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') "); // .append("` AS DECIMAL(20,0))/1000,'%Y-%m-%d %H:%i:%S') ");
} else { // } else {
filter.append(" AND `").append(field.getOriginName()).append("`"); // filter.append(" AND `").append(field.getOriginName()).append("`");
} // }
filter.append(" ") // filter.append(" ")
.append(transMysqlFilterTerm(request.getOperator())) // .append(transMysqlFilterTerm(request.getOperator()))
.append(" "); // .append(" ");
if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { // if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) {
filter.append("('").append(StringUtils.join(value, "','")).append("')"); // filter.append("('").append(StringUtils.join(value, "','")).append("')");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { // } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
filter.append("'%").append(value.get(0)).append("%'"); // filter.append("'%").append(value.get(0)).append("%'");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { // } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0)))); // String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1)))); // String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
filter.append("'").append(startTime).append("' AND '").append(endTime).append("'"); // filter.append("'").append(startTime).append("' AND '").append(endTime).append("'");
} else { // } else {
filter.append("'").append(value.get(0)).append("'"); // filter.append("'").append(value.get(0)).append("'");
} // }
} // }
return filter.toString(); // return filter.toString();
} // }
//
private String sqlFix(String sql) { // private String sqlFix(String sql) {
if (sql.lastIndexOf(";") == (sql.length() - 1)) { // if (sql.lastIndexOf(";") == (sql.length() - 1)) {
sql = sql.substring(0, sql.length() - 1); // sql = sql.substring(0, sql.length() - 1);
} // }
return sql; // return sql;
} // }
//
private String transDateFormat(String dateStyle, String datePattern) { // private String transDateFormat(String dateStyle, String datePattern) {
String split = "-"; // String split = "-";
if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) { // if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) {
split = "-"; // split = "-";
} else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) { // } else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) {
split = "/"; // split = "/";
} // }
//
switch (dateStyle) { // switch (dateStyle) {
case "y": // case "y":
return "%Y"; // return "%Y";
case "y_M": // case "y_M":
return "%Y" + split + "%m"; // return "%Y" + split + "%m";
case "y_M_d": // case "y_M_d":
return "%Y" + split + "%m" + split + "%d"; // return "%Y" + split + "%m" + split + "%d";
case "H_m_s": // case "H_m_s":
return "%H:%i:%S"; // return "%H:%i:%S";
case "y_M_d_H_m": // case "y_M_d_H_m":
return "%Y" + split + "%m" + split + "%d" + " %H:%i"; // return "%Y" + split + "%m" + split + "%d" + " %H:%i";
case "y_M_d_H_m_s": // case "y_M_d_H_m_s":
return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S"; // return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S";
default: // default:
return "%Y-%m-%d %H:%i:%S"; // return "%Y-%m-%d %H:%i:%S";
} // }
} // }
} //}
...@@ -329,15 +329,15 @@ public class DataSetTableService { ...@@ -329,15 +329,15 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String table = dataTableInfoDTO.getTable(); String table = dataTableInfoDTO.getTable();
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(datasourceProvider.getData(datasourceRequest)); data.addAll(datasourceProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -353,15 +353,15 @@ public class DataSetTableService { ...@@ -353,15 +353,15 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(jdbcProvider.getData(datasourceRequest)); data.addAll(jdbcProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -380,15 +380,15 @@ public class DataSetTableService { ...@@ -380,15 +380,15 @@ public class DataSetTableService {
String sql = dataTableInfoDTO.getSql(); String sql = dataTableInfoDTO.getSql();
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLAsTmpWithPage(sql, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLAsTmpWithPage(sql, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(datasourceProvider.getData(datasourceRequest)); data.addAll(datasourceProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -404,15 +404,15 @@ public class DataSetTableService { ...@@ -404,15 +404,15 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(jdbcProvider.getData(datasourceRequest)); data.addAll(jdbcProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -429,15 +429,15 @@ public class DataSetTableService { ...@@ -429,15 +429,15 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(jdbcProvider.getData(datasourceRequest)); data.addAll(jdbcProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -457,15 +457,15 @@ public class DataSetTableService { ...@@ -457,15 +457,15 @@ public class DataSetTableService {
String sql = getCustomSQLDatasource(dt, list, ds); String sql = getCustomSQLDatasource(dt, list, ds);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLAsTmpWithPage(sql, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLAsTmpWithPage(sql, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(datasourceProvider.getData(datasourceRequest)); data.addAll(datasourceProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
try { try {
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -477,8 +477,8 @@ public class DataSetTableService { ...@@ -477,8 +477,8 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId()); String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize)); datasourceRequest.setQuery(qp.createQuerySQLWithPage(table, fields, page, pageSize, realSize, false));
map.put("sql",datasourceRequest.getQuery()); map.put("sql", datasourceRequest.getQuery());
try { try {
data.addAll(jdbcProvider.getData(datasourceRequest)); data.addAll(jdbcProvider.getData(datasourceRequest));
} catch (Exception e) { } catch (Exception e) {
...@@ -486,7 +486,7 @@ public class DataSetTableService { ...@@ -486,7 +486,7 @@ public class DataSetTableService {
} }
try { try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()))); datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -1409,7 +1409,7 @@ public class DataSetTableService { ...@@ -1409,7 +1409,7 @@ public class DataSetTableService {
public static boolean checkIsRepeat(String[] array) { public static boolean checkIsRepeat(String[] array) {
HashSet<String> hashSet = new HashSet<String>(); HashSet<String> hashSet = new HashSet<String>();
for (int i = 0; i < array.length; i++) { for (int i = 0; i < array.length; i++) {
if(StringUtils.isEmpty(array[i])){ if (StringUtils.isEmpty(array[i])) {
throw new RuntimeException(Translator.get("i18n_excel_empty_column")); throw new RuntimeException(Translator.get("i18n_excel_empty_column"));
} }
hashSet.add(array[i]); hashSet.add(array[i]);
......
...@@ -68,9 +68,9 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -68,9 +68,9 @@ public class DirectFieldService implements DataSetFieldService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
datasourceRequest.setTable(dataTableInfoDTO.getTable()); datasourceRequest.setTable(dataTableInfoDTO.getTable());
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field))); datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field))); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true));
} }
} else if (datasetTable.getMode() == 1) {// 抽取 } else if (datasetTable.getMode() == 1) {// 抽取
// 连接doris,构建doris数据源查询 // 连接doris,构建doris数据源查询
...@@ -81,7 +81,7 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -81,7 +81,7 @@ public class DirectFieldService implements DataSetFieldService {
tableName = "ds_" + datasetTable.getId().replaceAll("-", "_"); tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
datasourceRequest.setTable(tableName); datasourceRequest.setTable(tableName);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field))); datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true));
} }
try { try {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论