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

Merge pull request #146 from dataease/pr@dev@fix_视图过滤不能设置无限制

fix: 视图过滤不能设置无限制
...@@ -193,7 +193,10 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -193,7 +193,10 @@ public class DorisQueryProvider extends QueryProvider {
filter.append(" AND ").append(x.getDataeaseName()); filter.append(" AND ").append(x.getDataeaseName());
} }
filter.append(transMysqlFilterTerm(f.getTerm())); filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND ").append(x.getDataeaseName()).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")) {
...@@ -229,7 +232,12 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -229,7 +232,12 @@ public class DorisQueryProvider extends QueryProvider {
filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()); filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName());
} }
filter.append(transMysqlFilterTerm(f.getTerm())); filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND _")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName())
.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")) {
...@@ -310,7 +318,12 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -310,7 +318,12 @@ public class DorisQueryProvider extends QueryProvider {
filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName()); filter.append(" AND _").append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName());
} }
filter.append(transMysqlFilterTerm(f.getTerm())); filter.append(transMysqlFilterTerm(f.getTerm()));
if (StringUtils.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND _")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*") ? "" : y.getDataeaseName())
.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")) {
...@@ -349,7 +362,7 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -349,7 +362,7 @@ public class DorisQueryProvider extends QueryProvider {
} }
@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());
...@@ -393,7 +406,7 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -393,7 +406,7 @@ public class DorisQueryProvider extends QueryProvider {
case "not like": case "not like":
return " NOT LIKE "; return " NOT LIKE ";
case "null": case "null":
return " IS NULL "; return " IN ";
case "not_null": case "not_null":
return " IS NOT NULL "; return " IS NOT NULL ";
case "between": case "between":
...@@ -424,7 +437,10 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -424,7 +437,10 @@ public class DorisQueryProvider extends QueryProvider {
filter.append(" ") filter.append(" ")
.append(transMysqlFilterTerm(request.getTerm())) .append(transMysqlFilterTerm(request.getTerm()))
.append(" "); .append(" ");
if (StringUtils.containsIgnoreCase(request.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) {
filter.append(" AND ").append(field.getDataeaseName()).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")) {
......
...@@ -198,7 +198,10 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -198,7 +198,10 @@ public class MysqlQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
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")) {
...@@ -235,7 +238,12 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -235,7 +238,12 @@ public class MysqlQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND `_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.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")) {
...@@ -316,7 +324,12 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -316,7 +324,12 @@ public class MysqlQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND `_")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.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")) {
...@@ -355,7 +368,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -355,7 +368,7 @@ public class MysqlQueryProvider extends QueryProvider {
} }
@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());
...@@ -392,7 +405,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -392,7 +405,7 @@ public class MysqlQueryProvider extends QueryProvider {
case "not like": case "not like":
return " NOT LIKE "; return " NOT LIKE ";
case "null": case "null":
return " IS NULL "; return " IN ";
case "not_null": case "not_null":
return " IS NOT NULL "; return " IS NOT NULL ";
case "between": case "between":
...@@ -423,7 +436,10 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -423,7 +436,10 @@ public class MysqlQueryProvider extends QueryProvider {
filter.append(" ") filter.append(" ")
.append(transMysqlFilterTerm(request.getTerm())) .append(transMysqlFilterTerm(request.getTerm()))
.append(" "); .append(" ");
if (StringUtils.containsIgnoreCase(request.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) {
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")) {
......
package io.dataease.provider.oracle; package io.dataease.provider.oracle;
import com.google.gson.Gson;
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 io.swagger.models.auth.In;
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;
...@@ -93,9 +91,9 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -93,9 +91,9 @@ public class OracleQueryProvider extends QueryProvider {
// 如果原始类型为时间 // 如果原始类型为时间
if (f.getDeExtractType() == TIME) { if (f.getDeExtractType() == TIME) {
if (f.getDeType() == INT || f.getDeType() == FLOAT) { //日期转数值 if (f.getDeType() == INT || f.getDeType() == FLOAT) { //日期转数值
if(f.getType().equalsIgnoreCase("DATE")){ if (f.getType().equalsIgnoreCase("DATE")) {
stringBuilder.append("TO_NUMBER( ").append(f.getOriginName()).append(" - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ").append(f.getDataeaseName()); stringBuilder.append("TO_NUMBER( ").append(f.getOriginName()).append(" - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ").append(f.getDataeaseName());
}else { } else {
stringBuilder.append("TO_NUMBER(to_date(to_char( ").append(f.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ").append(f.getDataeaseName()); stringBuilder.append("TO_NUMBER(to_date(to_char( ").append(f.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ").append(f.getDataeaseName());
} }
} else { } else {
...@@ -123,9 +121,9 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -123,9 +121,9 @@ public class OracleQueryProvider extends QueryProvider {
return MessageFormat.format("SELECT {0} FROM {1} ", StringUtils.join(array, ","), table); return MessageFormat.format("SELECT {0} FROM {1} ", StringUtils.join(array, ","), table);
} }
private String sqlColumn(List<DatasetTableField> fields){ private String sqlColumn(List<DatasetTableField> fields) {
String[] array = fields.stream().map(f -> { String[] array = fields.stream().map(f -> {
return f.getDataeaseName(); return f.getDataeaseName();
}).toArray(String[]::new); }).toArray(String[]::new);
return StringUtils.join(array, ","); return StringUtils.join(array, ",");
} }
...@@ -184,17 +182,17 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -184,17 +182,17 @@ public class OracleQueryProvider extends QueryProvider {
// 如果原始类型为时间 // 如果原始类型为时间
if (x.getDeExtractType() == TIME) { if (x.getDeExtractType() == TIME) {
if (x.getDeType() == INT || x.getDeType() == FLOAT) { //时间转数值 if (x.getDeType() == INT || x.getDeType() == FLOAT) { //时间转数值
if(x.getType().equalsIgnoreCase("DATE")){ if (x.getType().equalsIgnoreCase("DATE")) {
stringBuilder.append("TO_NUMBER( ").append(x.getOriginName()).append(" - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS \"_").append(x.getDataeaseName()).append("\" "); stringBuilder.append("TO_NUMBER( ").append(x.getOriginName()).append(" - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS \"_").append(x.getDataeaseName()).append("\" ");
}else { } else {
stringBuilder.append("TO_NUMBER(to_date(to_char( ").append(x.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ") stringBuilder.append("TO_NUMBER(to_date(to_char( ").append(x.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 AS ")
.append(x.getDataeaseName()).append("\" "); .append(x.getDataeaseName()).append("\" ");
} }
} else if (x.getDeType() == TIME) { //格式化显示时间 } else if (x.getDeType() == TIME) { //格式化显示时间
String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
if(x.getType().equalsIgnoreCase("DATE")){ if (x.getType().equalsIgnoreCase("DATE")) {
stringBuilder.append("to_char( ").append(x.getOriginName()).append(" ,'").append(format).append("') AS \"_").append(x.getOriginName()).append("\" "); stringBuilder.append("to_char( ").append(x.getOriginName()).append(" ,'").append(format).append("') AS \"_").append(x.getOriginName()).append("\" ");
}else { } else {
stringBuilder.append("to_char(to_date(to_char( ").append(x.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'), '").append(format).append("') AS \"_").append(x.getOriginName()).append("\" "); stringBuilder.append("to_char(to_date(to_char( ").append(x.getOriginName()).append(" ,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'), '").append(format).append("') AS \"_").append(x.getOriginName()).append("\" ");
} }
} else { } else {
...@@ -206,7 +204,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -206,7 +204,7 @@ public class OracleQueryProvider extends QueryProvider {
if (x.getDeExtractType() == STRING) { //字符串转时间 if (x.getDeExtractType() == STRING) { //字符串转时间
stringBuilder.append("to_char(to_date(").append(x.getOriginName()).append(" , 'yyyy-MM-dd hh24:mi:ss'), '").append(format).append("') AS \"_").append(x.getOriginName()).append("\" "); stringBuilder.append("to_char(to_date(").append(x.getOriginName()).append(" , 'yyyy-MM-dd hh24:mi:ss'), '").append(format).append("') AS \"_").append(x.getOriginName()).append("\" ");
} else { //数值转时间 } else { //数值转时间
stringBuilder.append("to_char(").append(x.getOriginName()) .append("/ (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), '").append(format).append("') AS \"_").append(x.getOriginName()).append("\" "); stringBuilder.append("to_char(").append(x.getOriginName()).append("/ (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), '").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("\" ");
...@@ -234,7 +232,10 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -234,7 +232,10 @@ public class OracleQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND ").append(x.getOriginName()).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")) {
...@@ -271,7 +272,12 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -271,7 +272,12 @@ public class OracleQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND _")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.getOriginName())
.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")) {
...@@ -352,7 +358,12 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -352,7 +358,12 @@ public class OracleQueryProvider extends QueryProvider {
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.containsIgnoreCase(f.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(f.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(f.getTerm(), "not_null")) {
filter.append(" AND _")
.append(y.getSummary()).append("_").append(StringUtils.equalsIgnoreCase(y.getOriginName(), "*") ? "" : y.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")) {
...@@ -391,7 +402,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -391,7 +402,7 @@ public class OracleQueryProvider extends QueryProvider {
} }
@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());
...@@ -428,7 +439,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -428,7 +439,7 @@ public class OracleQueryProvider extends QueryProvider {
case "not like": case "not like":
return " NOT LIKE "; return " NOT LIKE ";
case "null": case "null":
return " IS NULL "; return " IN ";
case "not_null": case "not_null":
return " IS NOT NULL "; return " IS NOT NULL ";
case "between": case "between":
...@@ -459,7 +470,10 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -459,7 +470,10 @@ public class OracleQueryProvider extends QueryProvider {
filter.append(" ") filter.append(" ")
.append(transMysqlFilterTerm(request.getTerm())) .append(transMysqlFilterTerm(request.getTerm()))
.append(" "); .append(" ");
if (StringUtils.containsIgnoreCase(request.getTerm(), "null")) { if (StringUtils.equalsIgnoreCase(request.getTerm(), "null")) {
filter.append("(null,'')");
} else if (StringUtils.equalsIgnoreCase(request.getTerm(), "not_null")) {
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")) {
......
...@@ -747,8 +747,8 @@ export default { ...@@ -747,8 +747,8 @@ export default {
chart_funnel: 'Funnel', chart_funnel: 'Funnel',
chart_radar: 'Radar', chart_radar: 'Radar',
chart_gauge: 'Gauge', chart_gauge: 'Gauge',
dateStyle: '日期顯示', dateStyle: 'Date Style',
datePattern: '日期格式', datePattern: 'Date Format',
y: 'Year', y: 'Year',
y_M: 'Year Month', y_M: 'Year Month',
y_M_d: 'Year Month Day', y_M_d: 'Year Month Day',
...@@ -788,7 +788,9 @@ export default { ...@@ -788,7 +788,9 @@ export default {
label_fontsize: 'Label Fontsize', label_fontsize: 'Label Fontsize',
split_line: 'Split Line', split_line: 'Split Line',
split_color: 'Split Color', split_color: 'Split Color',
shadow: 'Shadow' shadow: 'Shadow',
condition: 'Filter Value',
filter_value_can_null: 'Filter value can not empty'
}, },
dataset: { dataset: {
sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default',
......
...@@ -788,7 +788,9 @@ export default { ...@@ -788,7 +788,9 @@ export default {
label_fontsize: '標簽大小', label_fontsize: '標簽大小',
split_line: '分割線', split_line: '分割線',
split_color: '分割顏色', split_color: '分割顏色',
shadow: '陰影' shadow: '陰影',
condition: '過濾值',
filter_value_can_null: '過濾值不能為空'
}, },
dataset: { dataset: {
sheet_warn: '有多個sheet頁面,默認抽取第一個', sheet_warn: '有多個sheet頁面,默認抽取第一個',
......
...@@ -788,7 +788,9 @@ export default { ...@@ -788,7 +788,9 @@ export default {
label_fontsize: '标签大小', label_fontsize: '标签大小',
split_line: '分割线', split_line: '分割线',
split_color: '分割颜色', split_color: '分割颜色',
shadow: '阴影' shadow: '阴影',
condition: '过滤值',
filter_value_can_null: '过滤值不能为空'
}, },
dataset: { dataset: {
sheet_warn: '有多个 Sheet 页,默认抽取第一个', sheet_warn: '有多个 Sheet 页,默认抽取第一个',
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.no_limit')" size="mini" clearable /> <el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.condition')" size="mini" clearable />
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" /> <el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" />
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.no_limit')" size="mini" clearable /> <el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.condition')" size="mini" clearable />
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" /> <el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" />
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.no_limit')" size="mini" clearable /> <el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.condition')" size="mini" clearable />
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" /> <el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" />
......
...@@ -878,6 +878,17 @@ export default { ...@@ -878,6 +878,17 @@ export default {
this.dimensionFilterEdit = false this.dimensionFilterEdit = false
}, },
saveDimensionFilter() { saveDimensionFilter() {
for (let i = 0; i < this.dimensionItem.filter.length; i++) {
const f = this.dimensionItem.filter[i]
if (!f.term.includes('null') && (!f.value || f.value === '')) {
this.$message({
message: this.$t('chart.filter_value_can_null'),
type: 'error',
showClose: true
})
return
}
}
this.view.xaxis[this.dimensionItem.index].filter = this.dimensionItem.filter this.view.xaxis[this.dimensionItem.index].filter = this.dimensionItem.filter
this.save(true) this.save(true)
this.closeDimensionFilter() this.closeDimensionFilter()
...@@ -891,6 +902,17 @@ export default { ...@@ -891,6 +902,17 @@ export default {
this.quotaFilterEdit = false this.quotaFilterEdit = false
}, },
saveQuotaFilter() { saveQuotaFilter() {
for (let i = 0; i < this.quotaItem.filter.length; i++) {
const f = this.quotaItem.filter[i]
if (!f.term.includes('null') && (!f.value || f.value === '')) {
this.$message({
message: this.$t('chart.filter_value_can_null'),
type: 'error',
showClose: true
})
return
}
}
this.view.yaxis[this.quotaItem.index].filter = this.quotaItem.filter this.view.yaxis[this.quotaItem.index].filter = this.quotaItem.filter
this.save(true) this.save(true)
this.closeQuotaFilter() this.closeQuotaFilter()
...@@ -914,6 +936,14 @@ export default { ...@@ -914,6 +936,14 @@ export default {
}) })
return return
} }
if (!f.term.includes('null') && (!f.value || f.value === '')) {
this.$message({
message: this.$t('chart.filter_value_can_null'),
type: 'error',
showClose: true
})
return
}
} }
this.view.customFilter = this.chartForFilter.customFilter this.view.customFilter = this.chartForFilter.customFilter
this.save(true) this.save(true)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论