fix: 参数预览时生效

This commit is contained in:
taojinlong 2023-03-08 11:24:47 +08:00
parent 857649bdb0
commit 44cb46fb7d
4 changed files with 12 additions and 8 deletions

View File

@ -1846,7 +1846,7 @@ public class ChartViewService {
}
}
}
sql = dataSetTableService.handleVariableDefaultValue(sql, null, ds.getType());
sql = dataSetTableService.handleVariableDefaultValue(sql, null, ds.getType(), false);
return sql;
}

View File

@ -122,7 +122,7 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
break;
case SQL:
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
tableName = dataSetTableService.handleVariableDefaultValue(sql, null, pluginViewSet.getDsType());
tableName = dataSetTableService.handleVariableDefaultValue(sql, null, pluginViewSet.getDsType(), false);
tableName = "(" + sqlFix(tableName) + ")";
break;
case CUSTOM:

View File

@ -701,7 +701,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
DataTableInfoDTO dataTableInfo = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
sql = handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType());
sql = handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType(), false);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(
qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
@ -1049,7 +1049,7 @@ public class DataSetTableService {
}
}
public String handleVariableDefaultValue(String sql, String sqlVariableDetails, String dsType) {
public String handleVariableDefaultValue(String sql, String sqlVariableDetails, String dsType, boolean isEdit) {
if (StringUtils.isEmpty(sql)) {
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
}
@ -1065,10 +1065,14 @@ public class DataSetTableService {
break;
}
}
if (defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null &&
if (!isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null &&
defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
}
if (isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null &&
defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.EDIT) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
}
}
}
@ -1261,7 +1265,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
sql = handleVariableDefaultValue(sql, dataSetTableRequest.getSqlVariableDetails(), ds.getType());
sql = handleVariableDefaultValue(sql, dataSetTableRequest.getSqlVariableDetails(), ds.getType(), true);
if (StringUtils.isEmpty(sql)) {
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
}
@ -1927,7 +1931,7 @@ public class DataSetTableService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
DataTableInfoDTO dataTableInfo = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
sql = handleVariableDefaultValue(sql, null, ds.getType());
sql = handleVariableDefaultValue(sql, null, ds.getType(), false);
String sqlAsTable = qp.createSQLPreview(sql, null);
datasourceRequest.setQuery(sqlAsTable);
fields = datasourceProvider.fetchResultField(datasourceRequest);

View File

@ -171,7 +171,7 @@ public class DirectFieldService implements DataSetFieldService {
if (dataTableInfoDTO.isBase64Encryption()) {
sql = new String(java.util.Base64.getDecoder().decode(sql));
}
sql = dataSetTableService.handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType());
sql = dataSetTableService.handleVariableDefaultValue(sql, null, ds.getType(), false);
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);