From 2147137b602d7f39db5798248bc654b195c3c143 Mon Sep 17 00:00:00 2001 From: junjun Date: Fri, 17 May 2024 10:41:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E9=9B=86):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=95=B0=E6=8D=AE=E9=9B=86=E9=A2=84=E8=A7=88=E6=80=BB?= =?UTF-8?q?=E6=95=B0=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/manage/DatasetDataManage.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) 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 7162ea76d9..c1fb11d441 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 @@ -231,28 +231,32 @@ public class DatasetDataManage { map.put("allFields", fieldList); } map.put("sql", Base64.getEncoder().encodeToString(querySQL.getBytes())); - map.put("total", getDatasetTotal(datasetGroupInfoDTO)); + map.put("total", getDatasetTotal(datasetGroupInfoDTO, SqlUtils.rebuildSQL(SQLProvider.createQuerySQL(sqlMeta, false, false, needOrder), sqlMeta, crossDs, dsMap))); return map; } public Long getDatasetTotal(Long datasetGroupId) throws Exception { DatasetGroupInfoDTO dto = datasetGroupManage.getForCount(datasetGroupId); if (StringUtils.equalsIgnoreCase(dto.getNodeType(), "dataset")) { - return getDatasetTotal(dto); + return getDatasetTotal(dto, null); } return 0L; } - public Long getDatasetTotal(DatasetGroupInfoDTO datasetGroupInfoDTO) throws Exception { + public Long getDatasetTotal(DatasetGroupInfoDTO datasetGroupInfoDTO, String s) throws Exception { Map sqlMap = datasetSQLManage.getUnionSQLForEdit(datasetGroupInfoDTO, null); - String sql = (String) sqlMap.get("sql"); - Map dsMap = (Map) sqlMap.get("dsMap"); - boolean crossDs = Utils.isCrossDs(dsMap); - if (!crossDs) { - sql = Utils.replaceSchemaAlias(sql, dsMap); - } + String sql; + if (StringUtils.isEmpty(s)) { + sql = (String) sqlMap.get("sql"); + boolean crossDs = Utils.isCrossDs(dsMap); + if (!crossDs) { + sql = Utils.replaceSchemaAlias(sql, dsMap); + } + } else { + sql = s; + } String querySQL = "SELECT COUNT(*) FROM (" + sql + ") t_a_0"; logger.info("calcite data count sql: " + querySQL);