From aa68de259cd7bfbe4d8cf218e1948aed0acbbfc7 Mon Sep 17 00:00:00 2001 From: junjie Date: Tue, 12 Oct 2021 11:14:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=BF=87=E6=BB=A4=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/provider/ck/CKQueryProvider.java | 68 ++++++---- .../provider/doris/DorisQueryProvider.java | 40 ++++-- .../dataease/provider/es/EsQueryProvider.java | 28 ++++- .../provider/mysql/MysqlQueryProvider.java | 40 ++++-- .../provider/oracle/OracleQueryProvider.java | 48 +++++-- .../dataease/provider/pg/PgQueryProvider.java | 28 ++++- .../sqlserver/SqlserverQueryProvider.java | 36 ++++-- frontend/src/lang/en.js | 6 +- frontend/src/lang/tw.js | 6 +- frontend/src/lang/zh.js | 2 + .../filter/DimensionFilterEditor.vue | 119 +++++++++--------- .../components/filter/QuotaFilterEditor.vue | 10 -- .../components/filter/ResultFilterEditor.vue | 32 ++--- frontend/src/views/chart/view/ChartEdit.vue | 6 +- 14 files changed, 290 insertions(+), 179 deletions(-) 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 1d6e65ca01..d56a56afc8 100644 --- a/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java @@ -39,10 +39,10 @@ public class CKQueryProvider extends QueryProvider { @Override public Integer transFieldType(String field) { - if(field.indexOf("ARRAY") > -1){ + if (field.indexOf("ARRAY") > -1) { field = "ARRAY"; } - if(field.indexOf("DATETIME64") > -1){ + if (field.indexOf("DATETIME64") > -1) { field = "DATETIME64"; } switch (field) { @@ -81,7 +81,7 @@ public class CKQueryProvider extends QueryProvider { } @Override - public Integer transFieldSize(String field){ + public Integer transFieldSize(String field) { Integer type = transFieldType(field); switch (type) { case 0: @@ -128,9 +128,9 @@ public class CKQueryProvider extends QueryProvider { // 处理横轴字段 if (f.getDeExtractType() == DeTypeConstants.DE_TIME) { if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) { - if(f.getType().equalsIgnoreCase("DATE")){ + if (f.getType().equalsIgnoreCase("DATE")) { fieldName = String.format(CKConstants.toInt32, String.format(CKConstants.toDateTime, originField)) + "*1000"; - }else { + } else { fieldName = String.format(CKConstants.toInt32, originField) + "*1000"; } } else { @@ -725,7 +725,7 @@ public class CKQueryProvider extends QueryProvider { } @Override - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { return "SELECT * FROM " + String.format(CKConstants.KEYWORD_TABLE, tableName); } @@ -752,9 +752,13 @@ public class CKQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -800,31 +804,37 @@ public class CKQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = CKConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { whereValue = "'%" + value + "%'"; } else { - if(field.getDeType() == DeTypeConstants.DE_TIME){ + if (field.getDeType() == DeTypeConstants.DE_TIME) { whereValue = String.format(CKConstants.toDateTime, "'" + value + "'"); - }else { + } else { whereValue = String.format(CKConstants.WHERE_VALUE_VALUE, value); } } - if(field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getTerm(), "null")){ + if (field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue("is null") .build()); - }else if(field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")){ + } else if (field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue("is not null") .build()); - }else { + } else { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue(whereTerm + whereValue) @@ -893,17 +903,17 @@ public class CKQueryProvider extends QueryProvider { whereValue = String.format(CKConstants.WHERE_VALUE_VALUE, value.get(0)); } - if(field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getOperator(), "null")){ + if (field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getOperator(), "null")) { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue("is null") .build()); - }else if(field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getOperator(), "not_null")){ + } else if (field.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(request.getOperator(), "not_null")) { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue("is not null") .build()); - }else { + } else { list.add(SQLObj.builder() .whereField(whereName) .whereTermAndValue(whereTerm + whereValue) @@ -956,9 +966,9 @@ public class CKQueryProvider extends QueryProvider { String fieldName = ""; if (x.getDeExtractType() == DeTypeConstants.DE_TIME) { if (x.getDeType() == DeTypeConstants.DE_INT || x.getDeType() == DeTypeConstants.DE_FLOAT) { - if(x.getType().equalsIgnoreCase("DATE")){ + if (x.getType().equalsIgnoreCase("DATE")) { fieldName = String.format(CKConstants.toInt32, String.format(CKConstants.toDateTime, originField)) + "*1000"; - }else { + } else { fieldName = String.format(CKConstants.toInt32, originField) + "*1000"; } } else if (x.getDeType() == DeTypeConstants.DE_TIME) { @@ -994,7 +1004,7 @@ public class CKQueryProvider extends QueryProvider { fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField); } else { if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { - String cast = y.getDeType() == 2? String.format(CKConstants.toInt64, originField) : String.format(CKConstants.toFloat64, originField); + String cast = y.getDeType() == 2 ? String.format(CKConstants.toInt64, originField) : String.format(CKConstants.toFloat64, originField); String agg = String.format(CKConstants.AGG_FIELD, y.getSummary(), cast); fieldName = String.format(CKConstants.toDecimal, agg); } else { @@ -1016,9 +1026,15 @@ public class CKQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = CKConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originField); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { @@ -1027,19 +1043,19 @@ public class CKQueryProvider extends QueryProvider { whereValue = String.format(CKConstants.WHERE_VALUE_VALUE, f.getValue()); } - if(y.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(f.getTerm(), "null")){ + if (y.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { list.add(SQLObj.builder() .whereField(fieldAlias) .whereAlias(fieldAlias) .whereTermAndValue("is null") .build()); - }else if(y.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")){ + } else if (y.getDeType() == DeTypeConstants.DE_TIME && StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { list.add(SQLObj.builder() .whereField(fieldAlias) .whereAlias(fieldAlias) .whereTermAndValue("is not null") .build()); - }else { + } else { list.add(SQLObj.builder() .whereField(fieldAlias) .whereAlias(fieldAlias) 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 0ff4902b7e..ff4a45c6c9 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -700,7 +700,7 @@ public class DorisQueryProvider extends QueryProvider { } @Override - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { return createSQLPreview("SELECT * FROM " + String.format(DorisConstants.KEYWORD_TABLE, tableName), null); } @@ -734,9 +734,13 @@ public class DorisQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -783,9 +787,15 @@ public class DorisQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = DorisConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -952,9 +962,15 @@ public class DorisQueryProvider extends QueryProvider { whereName = originField; } if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = DorisConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { @@ -1003,9 +1019,15 @@ public class DorisQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = DorisConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { 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 6aad2e9cfd..96dbcb9bde 100644 --- a/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java @@ -682,9 +682,13 @@ public class EsQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -730,9 +734,15 @@ public class EsQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = EsSqlLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -913,9 +923,15 @@ public class EsQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = EsSqlLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originField); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { 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 23ecdf7a4d..bf13f1abe0 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java @@ -694,7 +694,7 @@ public class MysqlQueryProvider extends QueryProvider { } @Override - public String convertTableToSql(String tableName, Datasource ds){ + public String convertTableToSql(String tableName, Datasource ds) { return createSQLPreview("SELECT * FROM " + String.format(MySQLConstants.KEYWORD_TABLE, tableName), null); } @@ -721,9 +721,13 @@ public class MysqlQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -769,9 +773,15 @@ public class MysqlQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = MySQLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -936,9 +946,15 @@ public class MysqlQueryProvider extends QueryProvider { whereName = originField; } if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = MySQLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originField); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { @@ -986,9 +1002,15 @@ public class MysqlQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = MySQLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originField); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { 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 7cfb1be052..03e45473c5 100644 --- a/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java @@ -109,10 +109,10 @@ public class OracleQueryProvider extends QueryProvider { return st_sql.render(); } - 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( OracleConstants.KEYWORD_TABLE, schema); + schema = String.format(OracleConstants.KEYWORD_TABLE, schema); tableObj.setTableName(schema + "." + tableObj.getTableName()); } } @@ -744,9 +744,9 @@ public class OracleQueryProvider 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( OracleConstants.KEYWORD_TABLE, schema); + schema = String.format(OracleConstants.KEYWORD_TABLE, schema); return createSQLPreview("SELECT * FROM " + schema + "." + String.format(OracleConstants.KEYWORD_TABLE, tableName), null); } @@ -773,9 +773,13 @@ public class OracleQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -823,9 +827,15 @@ public class OracleQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = OracleConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -1009,9 +1019,15 @@ public class OracleQueryProvider extends QueryProvider { whereName = originField; } if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = OracleConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { @@ -1059,9 +1075,15 @@ public class OracleQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = OracleConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { 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 591dd2aee8..307635698b 100644 --- a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java @@ -750,9 +750,13 @@ public class PgQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -798,9 +802,15 @@ public class PgQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = PgConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -980,9 +990,15 @@ public class PgQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = PgConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { 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 ba191c9111..9e91f80be2 100644 --- a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java @@ -149,7 +149,7 @@ public class SqlserverQueryProvider extends QueryProvider { @Override public String createQueryTableWithPage(String table, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { - Integer size = (page-1)*pageSize + realSize; + Integer size = (page - 1) * pageSize + realSize; return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds)); } @@ -162,7 +162,7 @@ public class SqlserverQueryProvider extends QueryProvider { @Override public String createQuerySQLWithPage(String sql, List fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { - Integer size = (page-1)*pageSize + realSize; + Integer size = (page - 1) * pageSize + realSize; return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup)); } @@ -677,9 +677,9 @@ public class SqlserverQueryProvider 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( SqlServerSQLConstants.KEYWORD_TABLE, schema); + schema = String.format(SqlServerSQLConstants.KEYWORD_TABLE, schema); return createSQLPreview("SELECT * FROM " + schema + "." + String.format(SqlServerSQLConstants.KEYWORD_TABLE, tableName), null); } @@ -706,9 +706,13 @@ public class SqlserverQueryProvider extends QueryProvider { case "not like": return " NOT LIKE "; case "null": - return " IN "; + return " IS NULL "; case "not_null": - return " IS NOT NULL AND %s <> ''"; + return " IS NOT NULL "; + case "empty": + return " = "; + case "not_empty": + return " <> "; case "between": return " BETWEEN "; default: @@ -748,9 +752,15 @@ public class SqlserverQueryProvider extends QueryProvider { whereName = originName; } if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) { - whereValue = SqlServerSQLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originName); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "in")) { whereValue = "('" + StringUtils.join(value, "','") + "')"; } else if (StringUtils.containsIgnoreCase(request.getTerm(), "like")) { @@ -937,9 +947,15 @@ public class SqlserverQueryProvider extends QueryProvider { String whereValue = ""; // 原始类型不是时间,在de中被转成时间的字段做处理 if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) { - whereValue = SqlServerSQLConstants.WHERE_VALUE_NULL; +// whereValue = MySQLConstants.WHERE_VALUE_NULL; + whereValue = ""; } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) { - whereTerm = String.format(whereTerm, originField); +// whereTerm = String.format(whereTerm, originName); + whereValue = ""; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "empty")) { + whereValue = "''"; + } else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_empty")) { + whereValue = "''"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "in")) { whereValue = "('" + StringUtils.join(f.getValue(), "','") + "')"; } else if (StringUtils.containsIgnoreCase(f.getTerm(), "like")) { diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index b7b413eab3..baafd4977d 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -762,8 +762,10 @@ export default { filter_le: 'Less than or equal to', filter_gt: 'Greater than', filter_ge: 'Greater than or equal to', - filter_null: 'Empty', - filter_not_null: 'Not Empty', + filter_null: 'Null', + filter_not_null: 'Not Null', + filter_empty: 'Empty String', + filter_not_empty: 'Not Empty String', filter_include: 'Contain', filter_not_include: 'Not Contain', rose_type: 'Rose pattern', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index cfa12e7baa..bed0ee3a10 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -763,8 +763,10 @@ export default { filter_le: '小于等于', filter_gt: '大于', filter_ge: '大于等于', - filter_null: '爲空', - filter_not_null: '不爲空', + filter_null: '為空', + filter_not_null: '不為空', + filter_empty: '空字符串', + filter_not_empty: '非空字符串', filter_include: '包含', filter_not_include: '不包含', rose_type: '玫瑰圖模式', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 1a3fb7bd53..ee9515228d 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -765,6 +765,8 @@ export default { filter_ge: '大于等于', filter_null: '为空', filter_not_null: '不为空', + filter_empty: '空字符串', + filter_not_empty: '非空字符串', filter_include: '包含', filter_not_include: '不包含', rose_type: '玫瑰图模式', diff --git a/frontend/src/views/chart/components/filter/DimensionFilterEditor.vue b/frontend/src/views/chart/components/filter/DimensionFilterEditor.vue index 1146c9cbdc..cb409fbe72 100644 --- a/frontend/src/views/chart/components/filter/DimensionFilterEditor.vue +++ b/frontend/src/views/chart/components/filter/DimensionFilterEditor.vue @@ -23,7 +23,7 @@ - + @@ -44,56 +44,48 @@ export default { }, data() { return { - options: [{ - label: '', - options: [{ - value: 'eq', - label: this.$t('chart.filter_eq') - }, { - value: 'not_eq', - label: this.$t('chart.filter_not_eq') - }] - }, - { - label: '', - options: [{ - value: 'like', - label: this.$t('chart.filter_like') - }, { - value: 'not like', - label: this.$t('chart.filter_not_like') - }] - }, - // { - // label: '', - // options: [{ - // value: 'lt', - // label: this.$t('chart.filter_lt') - // }, { - // value: 'gt', - // label: this.$t('chart.filter_gt') - // }] - // }, - // { - // label: '', - // options: [{ - // value: 'le', - // label: this.$t('chart.filter_le') - // }, { - // value: 'ge', - // label: this.$t('chart.filter_ge') - // }] - // }, - { - label: '', - options: [{ - value: 'null', - label: this.$t('chart.filter_null') - }, { - value: 'not_null', - label: this.$t('chart.filter_not_null') - }] - }] + options: [ + { + label: '', + options: [{ + value: 'eq', + label: this.$t('chart.filter_eq') + }, { + value: 'not_eq', + label: this.$t('chart.filter_not_eq') + }] + }, + { + label: '', + options: [{ + value: 'like', + label: this.$t('chart.filter_like') + }, { + value: 'not like', + label: this.$t('chart.filter_not_like') + }] + }, + { + label: '', + options: [{ + value: 'null', + label: this.$t('chart.filter_null') + }, { + value: 'not_null', + label: this.$t('chart.filter_not_null') + }] + }, + { + label: '', + options: [{ + value: 'empty', + label: this.$t('chart.filter_empty') + }, { + value: 'not_empty', + label: this.$t('chart.filter_not_empty') + }] + } + ] } }, mounted() { @@ -113,7 +105,7 @@ export default {