From 67b81dd64f9d866443ae46ad83cfdce138d9f575 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 19 Jan 2025 22:08:23 +0800 Subject: [PATCH] Pr@dev v2@fixds (#14742) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 【数据源】复制API数据源后校验与同步结果不一致 * fix: 【数据导出中心】设置空值处理置为零,导出堆叠条形图提示异常 * fix: [Bug]新建API数据源后,再新建Doris数据源,校验时会将之前新建API数据源的同步任务参数提交造成请求异常 #14729 * fix: 【数据导出中心】修复设置空值处理置为零,导出堆叠条形图提示异常 --------- Co-authored-by: taojinlong --- .../chart/server/ChartDataServer.java | 44 +++++++++++-------- .../datasource/provider/ApiUtils.java | 2 +- .../data/datasource/form/CreatDsGroup.vue | 3 ++ 3 files changed, 30 insertions(+), 19 deletions(-) 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 b23d2938c2..c62552e649 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 @@ -309,22 +309,25 @@ public class ChartDataServer implements ChartDataApi { 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<>(); 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); + + xAxis.addAll(viewInfo.getXAxis()); + xAxis.addAll(viewInfo.getYAxis()); + xAxis.addAll(viewInfo.getXAxisExt()); + xAxis.addAll(viewInfo.getYAxisExt()); + xAxis.addAll(viewInfo.getExtStack()); + + if (viewInfo.getType().equalsIgnoreCase("table-normal") || viewInfo.getType().equalsIgnoreCase("table-info")) { + 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; if (ArrayUtils.isNotEmpty(detailFields)) { cellStyle.setBorderTop(BorderStyle.THIN); @@ -410,7 +413,7 @@ public class ChartDataServer implements ChartDataApi { detailsSheet.setColumnWidth(j, 255 * 20); } else if (cellValObj != null) { try { - if (wb != null && (xAxis.get(j).getDeType().equals(DeTypeConstants.DE_INT) || xAxis.get(j).getDeType().equals(DeTypeConstants.DE_FLOAT))) { + if ((viewInfo.getType().equalsIgnoreCase("table-normal") || viewInfo.getType().equalsIgnoreCase("table-info")) && (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")) { @@ -431,7 +434,6 @@ public class ChartDataServer implements ChartDataApi { cell.setCellValue(cellValObj.toString()); } } - } catch (Exception e) { LogUtil.warn("export excel data transform error"); } @@ -439,8 +441,14 @@ public class ChartDataServer implements ChartDataApi { if (!viewInfo.getType().equalsIgnoreCase("circle-packing")) { Map senior = viewInfo.getSenior(); ChartSeniorFunctionCfgDTO functionCfgDTO = JsonUtil.parseObject((String) JsonUtil.toJSONString(senior.get("functionCfg")), ChartSeniorFunctionCfgDTO.class); - if (StringUtils.isNotEmpty(functionCfgDTO.getEmptyDataStrategy()) && functionCfgDTO.getEmptyDataStrategy().equalsIgnoreCase("setZero") && functionCfgDTO.getEmptyDataFieldCtrl().contains(xAxis.get(j).getDataeaseName())) { - cell.setCellValue(0); + if (functionCfgDTO != null && StringUtils.isNotEmpty(functionCfgDTO.getEmptyDataStrategy()) && functionCfgDTO.getEmptyDataStrategy().equalsIgnoreCase("setZero")) { + if ((viewInfo.getType().equalsIgnoreCase("table-normal") || viewInfo.getType().equalsIgnoreCase("table-info"))) { + if (functionCfgDTO.getEmptyDataFieldCtrl().contains(xAxis.get(j).getDataeaseName())) { + cell.setCellValue(0); + } + } else { + cell.setCellValue(0); + } } } } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java index c7ae295f99..ac9782645e 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java @@ -154,7 +154,7 @@ public class ApiUtils { List apiDefinitionList = JsonUtil.parseList(datasourceRequest.getDatasource().getConfiguration(), listTypeReference); List status = new ArrayList(); for (ApiDefinition apiDefinition : apiDefinitionList) { - if (apiDefinition == null) { + if (apiDefinition == null || (apiDefinition.getType() != null && apiDefinition.getType().equalsIgnoreCase("params"))) { continue; } datasourceRequest.setTable(apiDefinition.getName()); diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/CreatDsGroup.vue b/core/core-frontend/src/views/visualized/data/datasource/form/CreatDsGroup.vue index 61cb6bfdb5..5b86b1adce 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/CreatDsGroup.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/CreatDsGroup.vue @@ -291,6 +291,9 @@ const saveDataset = () => { request.apiConfiguration = '' checkRepeat(request).then(res => { let method = request.id === '' ? save : update + if (request.type !== 'API') { + request.syncSetting = null + } if (res) { ElMessageBox.confirm(t('datasource.has_same_ds'), options as ElMessageBoxOptions) .then(() => {