forked from github/dataease
Merge pull request #3224 from dataease/pr@dev@dataset
fix: 不同的sql 数据集参数同名
This commit is contained in:
commit
fdc5d8dcd8
@ -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);
|
||||
|
@ -664,12 +664,14 @@ public class ChartViewService {
|
||||
}
|
||||
boolean hasParameters = false;
|
||||
if (StringUtils.isNotEmpty(table.getSqlVariableDetails())) {
|
||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
|
||||
}.getType());
|
||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {}.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<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
|
||||
}.getType());
|
||||
|
||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {}.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<SqlVariableDetails> 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<SqlVariableDetails> 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<SqlVariableDetails> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -961,16 +961,14 @@ public class DataSetTableService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<SqlVariableDetails> sqlVariableDetails = new ArrayList<>();
|
||||
List<String> sqlVariableNames = new ArrayList<>();
|
||||
for (DatasetTable datasetTable : datasetTables) {
|
||||
if (StringUtils.isNotEmpty(datasetTable.getSqlVariableDetails())) {
|
||||
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(datasetTable.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
|
||||
}.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);
|
||||
|
@ -107,8 +107,8 @@
|
||||
<el-checkbox-group v-model="attrs.parameters">
|
||||
<el-checkbox
|
||||
v-for="(item ) in childViews.datasetParams"
|
||||
:key="item.variableName"
|
||||
:label="item.variableName"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
class="de-checkbox"
|
||||
>
|
||||
<div class="span-div">
|
||||
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user