From 98055c354b72f20e5f82efe251db8207b73052e3 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 28 Sep 2022 10:20:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=B8=8D=E5=90=8C=E7=9A=84sql=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=82=E6=95=B0=E5=90=8C=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/ChartViewService.java | 31 ++++++++++++------- .../service/dataset/DataSetTableService.java | 12 +++---- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index e29cf1e558..16e6f6569f 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -664,12 +664,14 @@ public class ChartViewService { } boolean hasParameters = false; if (StringUtils.isNotEmpty(table.getSqlVariableDetails())) { - List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() { - }.getType()); + List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() {}.getType()); for (String parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) { if (sqlVariables.stream().map(SqlVariableDetails::getVariableName).collect(Collectors.toList()).contains(parameter)) { hasParameters = true; } + if (parameter.contains("|DE|") && table.getId().equals(parameter.split("|DE|")[0]) && sqlVariables.stream().map(SqlVariableDetails::getVariableName).collect(Collectors.toList()).contains(parameter.split("|DE|")[1])) { + hasParameters = true; + } } } @@ -1591,10 +1593,7 @@ public class ChartViewService { } private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table, Datasource ds) throws Exception { - - List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() { - }.getType()); - + List sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken>() {}.getType()); if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) { for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) { if (CollectionUtils.isEmpty(chartExtFilterRequest.getValue())) { @@ -1605,12 +1604,22 @@ public class ChartViewService { } for (String parameter : chartExtFilterRequest.getParameters()) { - List parameters = sqlVariables.stream().filter(item -> item.getVariableName().equalsIgnoreCase(parameter)).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(parameters)) { - String filter = qp.transFilter(chartExtFilterRequest, parameters.get(0)); - sql = sql.replace("${" + parameter + "}", filter); + if(parameter.contains("|DE")){ + if(!parameter.split("|DE|")[0].equals(table.getId())){ + continue; + } + List parameters = sqlVariables.stream().filter(item -> item.getVariableName().equalsIgnoreCase(parameter.split("|DE|")[1])).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(parameters)) { + String filter = qp.transFilter(chartExtFilterRequest, parameters.get(0)); + sql = sql.replace("${" + parameter.split("|DE|")[1] + "}", filter); + } + }else { + List parameters = sqlVariables.stream().filter(item -> item.getVariableName().equalsIgnoreCase(parameter)).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(parameters)) { + String filter = qp.transFilter(chartExtFilterRequest, parameters.get(0)); + sql = sql.replace("${" + parameter + "}", filter); + } } - } } } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 219e7f8a34..f1be09918c 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -961,16 +961,14 @@ public class DataSetTableService { return new ArrayList<>(); } List sqlVariableDetails = new ArrayList<>(); - List sqlVariableNames = new ArrayList<>(); for (DatasetTable datasetTable : datasetTables) { if (StringUtils.isNotEmpty(datasetTable.getSqlVariableDetails())) { List sqlVariables = new Gson().fromJson(datasetTable.getSqlVariableDetails(), new TypeToken>() { }.getType()); for (SqlVariableDetails sqlVariable : sqlVariables) { - if (!sqlVariableNames.contains(sqlVariable.getVariableName())) { - sqlVariableNames.add(sqlVariable.getVariableName()); - sqlVariableDetails.add(sqlVariable); - } + sqlVariable.setId(datasetTable.getId() + "|DE|" + sqlVariable.getVariableName()); + sqlVariable.setVariableName("[" + datasetTable.getName() + "]-" + sqlVariable.getVariableName()); + sqlVariableDetails.add(sqlVariable); } } } @@ -1063,9 +1061,9 @@ public class DataSetTableService { Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody()); subSelect.setSelectBody(subPlainSelect); - if(dsType.equals(DatasourceTypes.oracle.getType())){ + if (dsType.equals(DatasourceTypes.oracle.getType())) { subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false)); - }else { + } else { subSelect.setAlias(new Alias(fromItem.getAlias().toString())); } plainSelect.setFromItem(subSelect); From 9546d512cf7d268b2d2f8acdbe32e684cb582221 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 28 Sep 2022 10:25:15 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E4=B8=8D=E5=90=8C=E7=9A=84sql=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=82=E6=95=B0=E5=90=8C=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../panel/filter/filterMain/FilterControl.vue | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue index 2d6d8ecd2e..149922bd3a 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue @@ -107,8 +107,8 @@
@@ -174,12 +174,27 @@ export default { { id: 'HH', name: 'HH' }, { id: 'HH:mm', name: 'HH:mm' }, { id: 'HH:mm:ss', name: 'HH:mm:ss' } - ] - } }, computed: {}, + watch: { + 'childViews.datasetParams': { + handler(newName, oldName) { + if (this.attrs.parameters.length > 0) { + const parameters = [] + for (var i = 0; i < this.attrs.parameters.length; i++) { + for (var j = 0; j < this.childViews.datasetParams.length; j++) { + if (this.childViews.datasetParams[j].id.split('|DE|')[1] === this.attrs.parameters[i]) { + parameters.push(this.childViews.datasetParams[j].id) + } + } + } + this.attrs.parameters = parameters + } + } + } + }, created() { this.attrs = this.controlAttrs @@ -213,6 +228,7 @@ export default { }, showTitleChange(value) { if (!value) { + this.attrs.title = '' this.element.style.backgroundColor = '' } this.fillAttrs2Filter() From 0d7b1f1805527dbe4da76578e6d58e9ef22bc378 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 28 Sep 2022 11:03:29 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20sql=20=E5=8F=82=E6=95=B0=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E7=AC=A6=E6=8B=BC=E6=8E=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/dataease/service/chart/ChartViewService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 16e6f6569f..d56a687314 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -1604,7 +1604,7 @@ public class ChartViewService { } for (String parameter : chartExtFilterRequest.getParameters()) { - if(parameter.contains("|DE")){ + if(parameter.contains("|DE|")){ if(!parameter.split("|DE|")[0].equals(table.getId())){ continue; } From 76098ef5c5cb083c33617168e5962121a37cc67d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Wed, 28 Sep 2022 11:04:02 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20mysql=20=E6=97=B6=E9=97=B4=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/provider/query/mysql/MysqlQueryProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index 5f16332cd1..527bbe3254 100644 --- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -117,7 +117,7 @@ public class MysqlQueryProvider extends QueryProvider { if (f.getType().equalsIgnoreCase("YEAR")) { fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originField + ",'-01-01')", MySQLConstants.DEFAULT_DATE_FORMAT); } else if (f.getType().equalsIgnoreCase("TIME")) { - fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(1970-01-01 " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT('1970-01-01', " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = String.format(MySQLConstants.DATE_FORMAT, originField, MySQLConstants.DEFAULT_DATE_FORMAT); } @@ -176,7 +176,7 @@ public class MysqlQueryProvider extends QueryProvider { if (f.getType().equalsIgnoreCase("YEAR")) { fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originField + ",'-01-01')", MySQLConstants.DEFAULT_DATE_FORMAT); } else if (f.getType().equalsIgnoreCase("TIME")) { - fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(1970-01-01 " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT('1970-01-01', " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = String.format(MySQLConstants.DATE_FORMAT, originField, MySQLConstants.DEFAULT_DATE_FORMAT); } @@ -1140,7 +1140,7 @@ public class MysqlQueryProvider extends QueryProvider { if (x.getType().equalsIgnoreCase("YEAR")) { fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originField + ",'-01-01')", transDateFormat(x.getDateStyle(), x.getDatePattern())); } else if (x.getType().equalsIgnoreCase("TIME")) { - fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(1970-01-01 " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MySQLConstants.DATE_FORMAT, "CONCAT('1970-01-01', " + originField + ")", MySQLConstants.DEFAULT_DATE_FORMAT); } else { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); fieldName = String.format(MySQLConstants.DATE_FORMAT, originField, format);