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;