From 5ef9a304ca26fcd42613fc545680ad6c36c4e986 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Tue, 6 Aug 2024 10:25:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8E=9F=E5=A7=8B=E6=98=8E=E7=BB=86=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/CoreVisualizationExportManage.java | 25 +++++++++++++++++++ .../visualization/UserViewEnlarge.vue | 18 ++++++++++--- .../extensions/view/dto/ChartViewDTO.java | 3 +++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java index 790d773831..1eb4c348e9 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationExportManage.java @@ -5,8 +5,10 @@ import io.dataease.api.visualization.vo.DataVisualizationVO; import io.dataease.chart.manage.ChartDataManage; import io.dataease.chart.manage.ChartViewManege; import io.dataease.constant.CommonConstants; +import io.dataease.dataset.server.DatasetFieldServer; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.exception.DEException; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import io.dataease.extensions.view.dto.ChartExtRequest; import io.dataease.extensions.view.dto.ChartViewDTO; @@ -45,6 +47,9 @@ public class CoreVisualizationExportManage { @Resource private VisualizationTemplateExtendDataManage extendDataManage; + @Resource + private DatasetFieldServer datasetFieldServer; + public File exportExcel(Long dvId, String busiFlag, List viewIdList, boolean onlyDisplay) throws Exception { DataVisualizationVO visualization = extDataVisualizationMapper.findDvInfo(dvId, busiFlag); if (ObjectUtils.isEmpty(visualization)) DEException.throwException("资源不存在或已经被删除..."); @@ -81,7 +86,27 @@ public class CoreVisualizationExportManage { chartViewDTO = extendDataManage.getChartDataInfo(request.getId(), request); } else { try { + List dsHeader = null; + Integer[] dsTypes = null; + //downloadType = dataset 为下载原始名字 这里做数据转换模拟 table-info类型图表导出 + if ("dataset".equals(request.getDownloadType())) { + request.setType("table-info"); + request.setIsPlugin(false); + List sourceFields = datasetFieldServer.listByDatasetGroup(request.getTableId()); + dsHeader = sourceFields.stream() + .map(DatasetTableFieldDTO::getName) + .toList(); + dsTypes = sourceFields.stream() + .map(DatasetTableFieldDTO::getDeType) + .toArray(Integer[]::new); + TypeReference> listTypeReference = new TypeReference>(){ + }; + request.setXAxis(JsonUtil.parseList(JsonUtil.toJSONString(sourceFields).toString(),listTypeReference)); + } chartViewDTO = chartDataManage.calcData(request); + if ("dataset".equals(request.getDownloadType())) { + result.getData().addFirst(dsHeader); + } } catch (Exception e) { throw new RuntimeException(e); } diff --git a/core/core-frontend/src/components/visualization/UserViewEnlarge.vue b/core/core-frontend/src/components/visualization/UserViewEnlarge.vue index 20e18c203d..7da8a430ef 100644 --- a/core/core-frontend/src/components/visualization/UserViewEnlarge.vue +++ b/core/core-frontend/src/components/visualization/UserViewEnlarge.vue @@ -41,10 +41,21 @@ icon="Download" size="middle" :loading="exportLoading" - @click="downloadViewDetails" + @click="downloadViewDetails('view')" > 导出Excel + + 导出原始明细 + { htmlToImage() } -const downloadViewDetails = () => { +const downloadViewDetails = (downloadType = 'view') => { const viewDataInfo = dvMainStore.getViewDataDetails(viewInfo.value.id) const chartExtRequest = dvMainStore.getLastViewRequestInfo(viewInfo.value.id) const chart = { ...viewInfo.value, chartExtRequest, data: viewDataInfo, - type: sourceViewType.value + type: sourceViewType.value, + downloadType: downloadType } exportLoading.value = true exportExcelDownload(chart, () => { diff --git a/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartViewDTO.java b/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartViewDTO.java index 95223fe6d7..abf77a281b 100644 --- a/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartViewDTO.java +++ b/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartViewDTO.java @@ -35,4 +35,7 @@ public class ChartViewDTO extends ChartViewBaseDTO { */ @JsonSerialize(using = ToStringSerializer.class) private Long sourceTableId; + + // 数据下载模式 dataset 指的是现在原始数据 + private String downloadType; }