From df09ffd789302fdc367b24dbd0cd28ce0cfc90fc Mon Sep 17 00:00:00 2001 From: junjie Date: Tue, 11 May 2021 12:21:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E9=9B=86):=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/DataSetTableService.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 1b2b0df289..2d40166f1e 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -326,10 +326,9 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(); - // 使用输入的sql先预执行一次 + // 使用输入的sql先预执行一次,并拿到所有字段 datasourceRequest.setQuery(sql); - Map stringListMap = datasourceProvider.fetchResultAndField(datasourceRequest); - List previewFields = stringListMap.get("fieldList"); + List previewFields = datasourceProvider.fetchResultField(datasourceRequest); // 正式执行 datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp ORDER BY " + previewFields.get(0).getFieldName() + " LIMIT 0,1000"); Map result = datasourceProvider.fetchResultAndField(datasourceRequest); @@ -364,12 +363,12 @@ public class DataSetTableService { DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); List list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()); - // 使用输入的sql先预执行一次 - datasourceRequest.setQuery(getCustomSQL(dataTableInfoDTO, list)); - Map stringListMap = jdbcProvider.fetchResultAndField(datasourceRequest); - List previewFields = stringListMap.get("fieldList"); + String sql = getCustomSQL(dataTableInfoDTO, list); + // 使用输入的sql先预执行一次,并拿到所有字段 + datasourceRequest.setQuery(sql); + List previewFields = jdbcProvider.fetchResultField(datasourceRequest); - datasourceRequest.setQuery("SELECT * FROM (" + getCustomSQL(dataTableInfoDTO, list) + ") AS tmp ORDER BY " + previewFields.get(0).getFieldName() + " LIMIT 0,1000"); + datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp ORDER BY " + previewFields.get(0).getFieldName() + " LIMIT 0,1000"); Map result = jdbcProvider.fetchResultAndField(datasourceRequest); List data = result.get("dataList"); List fields = result.get("fieldList");