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);