From 53db4ab4477b85ff2e828c82f7a087bc3055b26c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 6 Jan 2025 10:30:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=80=90=E6=A1=8C=E9=9D=A2=E7=89=88?= =?UTF-8?q?=E3=80=91=E5=88=9B=E5=BB=BAexcel=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E5=9B=BE=E5=BC=8F=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/commons/utils/SqlparserUtils.java | 4 ++-- .../dataease/dataset/manage/DatasetDataManage.java | 13 +++++++++---- .../dataease/dataset/manage/DatasetSQLManage.java | 12 ++++++++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java index 77c5bd778a..f1e497f3ac 100644 --- a/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java +++ b/core/core-backend/src/main/java/io/dataease/commons/utils/SqlparserUtils.java @@ -669,7 +669,7 @@ public class SqlparserUtils { } private String handleSubstitutedSql(String sql) { - if (sql.contains(SysParamsSubstitutedParams)) { + if (sql.contains(SysParamsSubstitutedParams) && userEntity != null) { sql = sql.replace(SysParamsSubstitutedParams + "sysParams.userId", userEntity.getAccount()); sql = sql.replace(SysParamsSubstitutedParams + "sysParams.userEmail", userEntity.getEmail()); sql = sql.replace(SysParamsSubstitutedParams + "sysParams.userName", userEntity.getName()); @@ -700,7 +700,7 @@ public class SqlparserUtils { private String handleSubstitutedSqlForIn(String sql) { - if (sql.contains(SysParamsSubstitutedParams)) { + if (sql.contains(SysParamsSubstitutedParams) && userEntity != null) { for (SysVariableValueItem variable : userEntity.getVariables()) { List values = new ArrayList<>(); if (!variable.isValid()) { diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java index c135830ee7..32e360adcc 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java @@ -130,8 +130,7 @@ public class DatasetDataManage { } else { // parser sql params and replace default value String s = new String(Base64.getDecoder().decode(tableInfoDTO.getSql())); - UserFormVO userEntity = getRowPermissionsApi().getUserById(AuthUtils.getUser().getUserId()); - String originSql = new SqlparserUtils().handleVariableDefaultValue(s, datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage, userEntity); + String originSql = new SqlparserUtils().handleVariableDefaultValue(s, datasetTableDTO.getSqlVariableDetails(), false, false, null, false, datasourceRequest.getDsList(), pluginManage, getUserEntity()); originSql = provider.replaceComment(originSql); // add sql table schema @@ -397,6 +396,13 @@ public class DatasetDataManage { return map; } + private UserFormVO getUserEntity() { + if (getRowPermissionsApi() == null) { + return null; + } + return getRowPermissionsApi().getUserById(AuthUtils.getUser().getUserId()); + } + public Map previewSql(PreviewSqlDTO dto) throws DEException { CoreDatasource coreDatasource = dataSourceManage.getCoreDatasource(dto.getDatasourceId()); DatasourceSchemaDTO datasourceSchemaDTO = new DatasourceSchemaDTO(); @@ -422,8 +428,7 @@ public class DatasetDataManage { // parser sql params and replace default value String s = new String(Base64.getDecoder().decode(dto.getSql())); - UserFormVO userEntity = getRowPermissionsApi().getUserById(AuthUtils.getUser().getUserId()); - String originSql = new SqlparserUtils().handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(s), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage, userEntity); + String originSql = new SqlparserUtils().handleVariableDefaultValue(datasetSQLManage.subPrefixSuffixChar(s), dto.getSqlVariableDetails(), true, true, null, false, dsMap, pluginManage, getUserEntity()); originSql = provider.replaceComment(originSql); // sql 作为临时表,外层加上limit diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java index 16808e0c92..fa1c1ce563 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java @@ -69,9 +69,11 @@ public class DatasetSQLManage { private RowPermissionsApi rowPermissionsApi; @Resource private DataSourceManage dataSourceManage; + private RowPermissionsApi getRowPermissionsApi() { return rowPermissionsApi; } + private static Logger logger = LoggerFactory.getLogger(DatasetSQLManage.class); private List filterParameters(ChartExtRequest chartExtRequest, Long datasetTableId) { @@ -461,6 +463,13 @@ public class DatasetSQLManage { } } + private UserFormVO getUserEntity() { + if (getRowPermissionsApi() == null) { + return null; + } + return getRowPermissionsApi().getUserById(AuthUtils.getUser().getUserId()); + } + private SQLObj getUnionTable(DatasetTableDTO currentDs, DatasetTableInfoDTO infoDTO, String tableSchema, int index, List parameters, boolean isFromDataSet, boolean isCross, Map dsMap) { SQLObj tableObj; String tableAlias = String.format(SQLConstants.TABLE_ALIAS_PREFIX, index); @@ -470,8 +479,7 @@ public class DatasetSQLManage { Provider provider = ProviderFactory.getProvider(dsMap.entrySet().iterator().next().getValue().getType()); // parser sql params and replace default value String s = new String(Base64.getDecoder().decode(infoDTO.getSql())); - UserFormVO userEntity = getRowPermissionsApi().getUserById(AuthUtils.getUser().getUserId()); - String sql = new SqlparserUtils().handleVariableDefaultValue(s, currentDs.getSqlVariableDetails(), false, isFromDataSet, parameters, isCross, dsMap, pluginManage, userEntity); + String sql = new SqlparserUtils().handleVariableDefaultValue(s, currentDs.getSqlVariableDetails(), false, isFromDataSet, parameters, isCross, dsMap, pluginManage, getUserEntity()); sql = provider.replaceComment(sql); // add table schema if (isCross) {