From 2e541ae47b540bd310c138486770c3b5ce497a0b Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 10 Jan 2025 17:52:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=80=90=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F=E3=80=91=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BAexcel=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=81=9A=E7=A9=BA=E5=80=BC=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E7=85=A7=E5=A4=84=E7=90=86=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/server/ChartDataServer.java | 51 +++++++++++-------- .../manage/ExportCenterManage.java | 7 +-- .../view/dto/ChartSeniorFunctionCfgDTO.java | 12 +++++ 3 files changed, 44 insertions(+), 26 deletions(-) create mode 100644 sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartSeniorFunctionCfgDTO.java diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index 75d964f11c..ea5d72e6dc 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -17,9 +17,7 @@ import io.dataease.exception.DEException; import io.dataease.exportCenter.manage.ExportCenterManage; import io.dataease.exportCenter.util.ExportCenterUtils; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; -import io.dataease.extensions.view.dto.ChartViewDTO; -import io.dataease.extensions.view.dto.ChartViewFieldDTO; -import io.dataease.extensions.view.dto.FormatterCfgDTO; +import io.dataease.extensions.view.dto.*; import io.dataease.license.manage.F2CLicLimitedManage; import io.dataease.result.ResultCode; import io.dataease.utils.JsonUtil; @@ -46,10 +44,7 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -256,7 +251,7 @@ public class ChartDataServer implements ChartDataApi { details.add(0, request.getHeader()); ViewDetailField[] detailFields = request.getDetailFields(); Object[] header = request.getHeader(); - ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, request.getViewInfo().getXAxis(), wb); + ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, request.getViewInfo(), wb); sheetIndex++; details.clear(); } @@ -306,22 +301,28 @@ public class ChartDataServer implements ChartDataApi { this.innerExportDetails(request, response); } - public static void setExcelData(Sheet detailsSheet, CellStyle cellStyle, Object[] header, List details, ViewDetailField[] detailFields, Integer[] excelTypes, List xAxis, Workbook wb) { - setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, null, xAxis, wb); + public static void setExcelData(Sheet detailsSheet, CellStyle cellStyle, Object[] header, List details, ViewDetailField[] detailFields, Integer[] excelTypes, ChartViewDTO viewInfo, Workbook wb) { + setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, null, viewInfo, wb); } - public static void setExcelData(Sheet detailsSheet, CellStyle cellStyle, Object[] header, List details, ViewDetailField[] detailFields, Integer[] excelTypes, Comment comment, List xAxis, Workbook wb) { + public static void setExcelData(Sheet detailsSheet, CellStyle cellStyle, Object[] header, List details, ViewDetailField[] detailFields, Integer[] excelTypes, Comment comment, ChartViewDTO viewInfo, Workbook wb) { List styles = new ArrayList<>(); - if (xAxis != null) { - for (ChartViewFieldDTO xAxi : xAxis) { - if (xAxi.getDeType().equals(DeTypeConstants.DE_INT) || xAxi.getDeType().equals(DeTypeConstants.DE_FLOAT)) { - FormatterCfgDTO formatterCfgDTO = xAxi.getFormatterCfg() == null ? new FormatterCfgDTO() : xAxi.getFormatterCfg(); - CellStyle formatterCellStyle = createCellStyle(wb, formatterCfgDTO, null); - styles.add(formatterCellStyle); - } else { - styles.add(null); - } + List xAxis = new ArrayList<>(); + if (viewInfo.getType().equalsIgnoreCase("table-normal")) { + xAxis.addAll(viewInfo.getXAxis()); + xAxis.addAll(viewInfo.getYAxis()); + } + if (viewInfo.getType().equalsIgnoreCase("table-info")) { + xAxis.addAll(viewInfo.getXAxis()); + } + for (ChartViewFieldDTO xAxi : xAxis) { + if (xAxi.getDeType().equals(DeTypeConstants.DE_INT) || xAxi.getDeType().equals(DeTypeConstants.DE_FLOAT)) { + FormatterCfgDTO formatterCfgDTO = xAxi.getFormatterCfg() == null ? new FormatterCfgDTO() : xAxi.getFormatterCfg(); + CellStyle formatterCellStyle = createCellStyle(wb, formatterCfgDTO, null); + styles.add(formatterCellStyle); + } else { + styles.add(null); } } boolean mergeHead = false; @@ -409,7 +410,7 @@ public class ChartDataServer implements ChartDataApi { detailsSheet.setColumnWidth(j, 255 * 20); } else if (cellValObj != null) { try { - if (xAxis != null && (xAxis.get(j).getDeType().equals(DeTypeConstants.DE_INT) || xAxis.get(j).getDeType().equals(DeTypeConstants.DE_FLOAT))) { + if (viewInfo != null && (xAxis.get(j).getDeType().equals(DeTypeConstants.DE_INT) || xAxis.get(j).getDeType().equals(DeTypeConstants.DE_FLOAT))) { try { FormatterCfgDTO formatterCfgDTO = xAxis.get(j).getFormatterCfg() == null ? new FormatterCfgDTO() : xAxis.get(j).getFormatterCfg(); if (formatterCfgDTO.getType().equalsIgnoreCase("auto")) { @@ -434,6 +435,14 @@ public class ChartDataServer implements ChartDataApi { } catch (Exception e) { LogUtil.warn("export excel data transform error"); } + } else { + if (!viewInfo.getType().equalsIgnoreCase("circle-packing")) { + Map senior = viewInfo.getSenior(); + ChartSeniorFunctionCfgDTO functionCfgDTO = JsonUtil.parseObject((String) JsonUtil.toJSONString(senior.get("assistLineCfg")), ChartSeniorFunctionCfgDTO.class); + if (StringUtils.isNotEmpty(functionCfgDTO.getEmptyDataStrategy()) && functionCfgDTO.getEmptyDataStrategy().equalsIgnoreCase("setZero") && functionCfgDTO.getEmptyDataFieldCtrl().contains(xAxis.get(j).getDataeaseName())) { + cell.setCellValue(0); + } + } } } } diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java index 50ff963af3..02e08642bf 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java @@ -677,7 +677,7 @@ public class ExportCenterManage implements BaseExportApi { details.add(0, request.getHeader()); ViewDetailField[] detailFields = request.getDetailFields(); Object[] header = request.getHeader(); - ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, request.getViewInfo().getXAxis(), wb); + ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, request.getViewInfo(), wb); sheetIndex++; details.clear(); exportTask.setExportStatus("IN_PROGRESS"); @@ -737,10 +737,7 @@ public class ExportCenterManage implements BaseExportApi { Object[] header = request.getHeader(); Sheet detailsSheet = wb.createSheet("数据"); if (request.getViewInfo().getType().equalsIgnoreCase("table-normal")) { - List xAxis = new ArrayList<>(); - xAxis.addAll(request.getViewInfo().getXAxis()); - xAxis.addAll(request.getViewInfo().getYAxis()); - ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, xAxis, wb); + ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, request.getViewInfo(), wb); } else { ChartDataServer.setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes, null, null); } diff --git a/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartSeniorFunctionCfgDTO.java b/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartSeniorFunctionCfgDTO.java new file mode 100644 index 0000000000..2da7374853 --- /dev/null +++ b/sdk/extensions/extensions-view/src/main/java/io/dataease/extensions/view/dto/ChartSeniorFunctionCfgDTO.java @@ -0,0 +1,12 @@ +package io.dataease.extensions.view.dto; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class ChartSeniorFunctionCfgDTO { + private String emptyDataStrategy; + private String emptyDataCustomValue; + private List emptyDataFieldCtrl = new ArrayList<>(); +}