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 bca7856d36..3fe2c6192f 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 @@ -281,6 +281,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Map data = provider.fetchResultField(datasourceRequest); Map map = new LinkedHashMap<>(); @@ -385,6 +386,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Provider provider; if (crossDs) { @@ -426,6 +428,18 @@ public class DatasetDataManage { return map; } + @SuppressWarnings("unchecked") + private void applyPreparedParams(DatasourceRequest datasourceRequest, Map sqlMap) { + if (sqlMap == null) { + return; + } + List tableFieldWithValues = (List) sqlMap.get("tableFieldWithValues"); + if (CollectionUtils.isEmpty(tableFieldWithValues)) { + return; + } + datasourceRequest.setTableFieldWithValues(tableFieldWithValues.stream().map(TableFieldWithValue::copy).toList()); + } + private UserFormVO getUserEntity() { if (getRowPermissionsApi() == null) { return null; @@ -654,6 +668,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Map data = provider.fetchResultField(datasourceRequest); List dataList = (List) data.get("data"); @@ -780,6 +795,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Map data = provider.fetchResultField(datasourceRequest); List dataList = (List) data.get("data"); @@ -1043,6 +1059,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Map data = provider.fetchResultField(datasourceRequest); List dataList = (List) data.get("data"); @@ -1244,6 +1261,7 @@ public class DatasetDataManage { datasourceRequest.setQuery(querySQL); datasourceRequest.setDsList(dsMap); datasourceRequest.setIsCross(crossDs); + applyPreparedParams(datasourceRequest, sqlMap); Map data = provider.fetchResultField(datasourceRequest); List rows = (List) data.get("data"); diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue b/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue index e8d6a91aa6..3b04acafc1 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue @@ -230,7 +230,8 @@ const saveSqlNode = (val: SqlNode, cb) => { info: state.visualNode.info, tableName, type: 'sql', - isCross: isCross.value + isCross: isCross.value, + sqlVariableDetails }).then(res => { state.visualNode.confirm = true state.nodeList.push(state.visualNode) @@ -251,7 +252,8 @@ const saveSqlNode = (val: SqlNode, cb) => { info: state.visualNode.info, tableName, type: 'sql', - isCross: isCross.value + isCross: isCross.value, + sqlVariableDetails }).then(() => { state.visualNode.confirm = true cb?.()