From aacc1f8ca6cfa9879f102bd49466b6bb72220599 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 30 May 2024 15:54:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=AF=BC=E5=87=BA=E5=8E=9F=E5=A7=8B=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E8=B6=8A=E6=9D=83=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8C=E9=83=A8=E5=88=86=E6=98=8E=E7=BB=86=E8=A1=A8?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=AF=BC=E5=87=BA=E6=83=85=E5=86=B5=20#9702?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../panel/PanelGroupController.java | 7 +------ .../request/chart/ChartExtRequest.java | 3 +++ .../panel/PanelViewDetailsRequest.java | 2 ++ .../service/chart/ChartViewService.java | 19 ++++++++++++++++++- .../exportCenter/ExportCenterService.java | 11 ++++++++--- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java b/core/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java index 86564eed10..8554d34345 100644 --- a/core/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java +++ b/core/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java @@ -185,12 +185,7 @@ public class PanelGroupController { @DePermissionProxy(value = "proxy") @I18n public void innerExportDetails(@RequestBody PanelViewDetailsRequest request) throws Exception { - if("dataset".equals(request.getDownloadType())){ - DataSetExportRequest exportRequest = panelGroupService.composeDatasetExportRequest(request); - exportCenterService.addTask(exportRequest.getId(), "dataset", exportRequest); - }else{ - exportCenterService.addTask(request.getViewId(), "chart", request); - } + exportCenterService.addTask(request.getViewId(), "chart", request); } @ApiOperation("更新仪表板状态") diff --git a/core/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java b/core/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java index b593df605b..96d7bf3d2d 100644 --- a/core/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java +++ b/core/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java @@ -51,4 +51,7 @@ public class ChartExtRequest { private Boolean excelExportFlag = false; + @ApiModelProperty(hidden = true) + private String downloadType; + } diff --git a/core/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java b/core/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java index 2d760aef68..70dab0f28f 100644 --- a/core/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java +++ b/core/backend/src/main/java/io/dataease/controller/request/panel/PanelViewDetailsRequest.java @@ -44,4 +44,6 @@ public class PanelViewDetailsRequest { private String downloadType; + private String viewType; + } diff --git a/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 6fb2639c6b..b07dc3e1da 100644 --- a/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/core/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -338,7 +338,24 @@ public class ChartViewService { if (CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(view.getDataFrom())) { return extendDataService.getChartDataInfo(id, view); } else { - return calcData(view, request, request.isCache()); + String[] dsHeader = null; + Integer[] dsTypes = null; + //downloadType = dataset 为下载原始名字 这里做数据转换模拟 table-info类型图表导出 + if("dataset".equals(request.getDownloadType())){ + view.setType("table-info"); + List sourceFields = dataSetTableFieldsService.getFieldsByTableId(view.getTableId()); + dsHeader = sourceFields.stream() + .map(DatasetTableField::getName) + .toArray(String[]::new); + dsTypes = sourceFields.stream() + .map(DatasetTableField::getDeType) + .toArray(Integer[]::new); + view.setXAxis(JSONObject.toJSONString(sourceFields)); + } + ChartViewDTO result = calcData(view, request, request.isCache()); + result.getData().put("header",dsHeader); + result.getData().put("dsTypes",dsTypes); + return result; } } catch (Exception e) { diff --git a/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java b/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java index fef077f5e7..e2f8ddbb34 100644 --- a/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java +++ b/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java @@ -309,8 +309,8 @@ public class ExportCenterService { public void findExcelData(PanelViewDetailsRequest request) { ChartViewWithBLOBs viewInfo = chartViewService.get(request.getViewId()); - request.setDownloadType(viewInfo.getType()); - if ("table-info".equals(viewInfo.getType())) { + request.setViewType(viewInfo.getType()); + if ("table-info".equals(viewInfo.getType()) || "dataset".equals(request.getDownloadType())) { try { ChartExtRequest componentFilterInfo = request.getComponentFilterInfo(); componentFilterInfo.setGoPage(1L); @@ -318,9 +318,14 @@ public class ExportCenterService { componentFilterInfo.setExcelExportFlag(true); componentFilterInfo.setProxy(request.getProxy()); componentFilterInfo.setUser(request.getUserId()); + componentFilterInfo.setDownloadType(request.getDownloadType()); ChartViewDTO chartViewInfo = chartViewService.getData(request.getViewId(), componentFilterInfo); List tableRow = (List) chartViewInfo.getData().get("sourceData"); request.setDetails(tableRow); + if("dataset".equals(request.getDownloadType())){ + request.setHeader((String[]) chartViewInfo.getData().get("header")); + request.setExcelTypes((Integer[]) chartViewInfo.getData().get("dsTypes")); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -409,7 +414,7 @@ public class ExportCenterService { cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); //设置单元格填充样式(使用纯色背景颜色填充) cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - if ("table-info".equals(request.getDownloadType())) { + if ("table-info".equals(request.getViewType())||"dataset".equals(request.getDownloadType())) { exportTableDetails(request, wb, cellStyle, detailsSheet); } else { Boolean mergeHead = false;