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); 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..d56a687314 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); 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()