提交 5e9cf037 authored 作者: junjie's avatar junjie

fix: 视图过滤不能设置无限制

上级 d6bd924e
...@@ -190,7 +190,10 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -190,7 +190,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")) {
...@@ -227,7 +230,12 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -227,7 +230,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")) {
...@@ -308,7 +316,12 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -308,7 +316,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")) {
...@@ -347,7 +360,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -347,7 +360,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());
...@@ -384,7 +397,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -384,7 +397,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":
...@@ -415,7 +428,10 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -415,7 +428,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")) {
......
...@@ -718,7 +718,9 @@ export default { ...@@ -718,7 +718,9 @@ export default {
chartName: 'New Chart', chartName: 'New Chart',
chart_show_error: 'can not show normal', chart_show_error: 'can not show normal',
chart_error_tips: 'Please contact admin ', chart_error_tips: 'Please contact admin ',
title_cannot_empty: 'Title can not be empty' title_cannot_empty: 'Title can not be empty',
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',
......
...@@ -760,7 +760,9 @@ export default { ...@@ -760,7 +760,9 @@ export default {
chartName: '新建視圖', chartName: '新建視圖',
chart_show_error: '無法正常顯示', chart_show_error: '無法正常顯示',
chart_error_tips: '如有疑問請聯系管理員', chart_error_tips: '如有疑問請聯系管理員',
title_cannot_empty: '標題不能為空' title_cannot_empty: '標題不能為空',
condition: '過濾值',
filter_value_can_null: '過濾值不能為空'
}, },
dataset: { dataset: {
sheet_warn: '有多個sheet頁面,默認抽取第一個', sheet_warn: '有多個sheet頁面,默認抽取第一個',
......
...@@ -718,7 +718,9 @@ export default { ...@@ -718,7 +718,9 @@ export default {
chartName: '新建视图', chartName: '新建视图',
chart_show_error: '无法正常显示', chart_show_error: '无法正常显示',
chart_error_tips: '如有疑问请联系管理员', chart_error_tips: '如有疑问请联系管理员',
title_cannot_empty: '标题不能为空' title_cannot_empty: '标题不能为空',
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)" />
......
...@@ -843,6 +843,17 @@ export default { ...@@ -843,6 +843,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()
...@@ -856,6 +867,17 @@ export default { ...@@ -856,6 +867,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()
...@@ -879,6 +901,14 @@ export default { ...@@ -879,6 +901,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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论