Merge pull request #5283 from dataease/pr@dev@refactor_ds_save

refactor: 优化关联数据集保存速度
This commit is contained in:
Junjun 2023-05-23 14:59:09 +08:00 committed by GitHub
commit e4e99b9516
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,7 +34,6 @@ import io.dataease.plugins.common.base.mapper.*;
import io.dataease.plugins.common.constants.DatasetType; import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.constants.DatasourceTypes; import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
import io.dataease.plugins.common.dto.dataset.SqlVariableDetails; import io.dataease.plugins.common.dto.dataset.SqlVariableDetails;
import io.dataease.plugins.common.dto.datasource.DataSourceType; import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.plugins.common.dto.datasource.TableField;
@ -1071,7 +1070,7 @@ public class DataSetTableService {
defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
} }
if (isEdit && defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())){ if (isEdit && defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
} }
} }
@ -1171,7 +1170,7 @@ public class DataSetTableService {
if (binaryExpression != null) { if (binaryExpression != null) {
if (!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { if (!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) {
stringBuilder.append(SubstitutedSql); stringBuilder.append(SubstitutedSql);
}else { } else {
expr.accept(getExpressionDeParser(stringBuilder)); expr.accept(getExpressionDeParser(stringBuilder));
} }
} else { } else {
@ -1258,7 +1257,7 @@ public class DataSetTableService {
throw new Exception(Translator.get("i18n_invalid_ds")); throw new Exception(Translator.get("i18n_invalid_ds"));
} }
String tmpSql = removeVariables(sql, ds.getType()); String tmpSql = removeVariables(sql, ds.getType());
if(!realData){ if (!realData) {
tmpSql.replaceAll(SubstitutedSql, SubstitutedSqlVirtualData); tmpSql.replaceAll(SubstitutedSql, SubstitutedSqlVirtualData);
} }
if (dataSetTableRequest.getMode() == 1 && (tmpSql.contains(SubstitutedParams) || tmpSql.contains(SubstitutedSql.trim()))) { if (dataSetTableRequest.getMode() == 1 && (tmpSql.contains(SubstitutedParams) || tmpSql.contains(SubstitutedSql.trim()))) {
@ -2022,7 +2021,9 @@ public class DataSetTableService {
// custom 创建doris视图 // custom 创建doris视图
createDorisView(TableUtils.tableName(datasetTable.getId()), sql); createDorisView(TableUtils.tableName(datasetTable.getId()), sql);
datasourceRequest.setQuery(sql); // getQuerySql to get field
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createSQLPreview(sql, null));
fields = datasourceProvider.fetchResultField(datasourceRequest); fields = datasourceProvider.fetchResultField(datasourceRequest);
for (DatasetTableField field : fieldList) { for (DatasetTableField field : fieldList) {
for (TableField tableField : fields) { for (TableField tableField : fields) {
@ -2045,8 +2046,9 @@ public class DataSetTableService {
String sql = (String) sqlMap.get("sql"); String sql = (String) sqlMap.get("sql");
List<DatasetTableField> fieldList = (List<DatasetTableField>) sqlMap.get("field"); List<DatasetTableField> fieldList = (List<DatasetTableField>) sqlMap.get("field");
// getQuerySql to get field
datasourceRequest.setQuery(sql); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createSQLPreview(sql, null));
fields = datasourceProvider.fetchResultField(datasourceRequest); fields = datasourceProvider.fetchResultField(datasourceRequest);
for (DatasetTableField field : fieldList) { for (DatasetTableField field : fieldList) {