From 21dad506a38bcf09a8b372cdb56324d3d67023a0 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Tue, 9 May 2023 18:14:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=B2=BE=E7=AE=80=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B8=BA=E6=95=B0=E5=80=BC=E5=90=8E=E4=B8=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/commons/utils/ExcelXlsxReader.java | 17 ++++++++++++++--- .../service/dataset/ExtractDataService.java | 7 ++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java index 15014155a6..5e2c2ea0ef 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java @@ -2,6 +2,7 @@ package io.dataease.commons.utils; import io.dataease.dto.dataset.ExcelSheetData; import io.dataease.i18n.Translator; +import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.dto.datasource.TableField; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.openxml4j.opc.OPCPackage; @@ -109,6 +110,16 @@ public class ExcelXlsxReader extends DefaultHandler { //定义该文档一行最大的单元格数,用来补全一行最后可能缺失的单元格 private String maxRef = null; + public List getDatasetTableFields() { + return datasetTableFields; + } + + public void setDatasetTableFields(List datasetTableFields) { + this.datasetTableFields = datasetTableFields; + } + + private List datasetTableFields = null; + /** * 单元格 */ @@ -418,10 +429,10 @@ public class ExcelXlsxReader extends DefaultHandler { break; case NUMBER: //数字 if (formatString != null && isDateFormat) { - if (obtainedNum != null) { - thisStr = formatter.formatRawCellContents(Double.parseDouble(value), formatIndex, formatString).trim(); - } else { + if (getDatasetTableFields() != null && getDatasetTableFields().get(curCol).getDeExtractType() == 1) { thisStr = formatter.formatRawCellContents(Double.parseDouble(value), formatIndex, "yyyy-mm-dd hh:mm:ss").trim(); + } else { + thisStr = formatter.formatRawCellContents(Double.parseDouble(value), formatIndex, formatString).trim(); } } else { thisStr = value; diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 4efc52dd57..71ff655b11 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -197,7 +197,7 @@ public class ExtractDataService { generateJobFile("all_scope", datasetTable, datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.joining(","))); extractData(datasetTable, "all_scope"); } else { - extractExcelDataForSimpleMode(datasetTable, "all_scope"); + extractExcelDataForSimpleMode(datasetTable, "all_scope", datasetTableFields); } replaceTable(TableUtils.tableName(datasetTableId)); saveSuccessLog(datasetTableTaskLog, false); @@ -250,7 +250,7 @@ public class ExtractDataService { generateJobFile("incremental_add", datasetTable, datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.joining(","))); extractData(datasetTable, "incremental_add"); } else { - extractExcelDataForSimpleMode(datasetTable, "incremental_add"); + extractExcelDataForSimpleMode(datasetTable, "incremental_add", datasetTableFields); } saveSuccessLog(datasetTableTaskLog, false); updateTableStatus(datasetTableId, JobStatus.Completed, execTime); @@ -724,7 +724,7 @@ public class ExtractDataService { return datasetTableTaskLog; } - private void extractExcelDataForSimpleMode(DatasetTable datasetTable, String extractType) throws Exception { + private void extractExcelDataForSimpleMode(DatasetTable datasetTable, String extractType, List datasetTableFields) throws Exception { List data = new ArrayList<>(); DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); List excelSheetDataList = dataTableInfoDTO.getExcelSheetDataList(); @@ -738,6 +738,7 @@ public class ExtractDataService { } if (StringUtils.equalsIgnoreCase(suffix, "xlsx")) { ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader(); + excelXlsxReader.setDatasetTableFields(datasetTableFields); excelXlsxReader.process(new FileInputStream(excelSheetData.getPath())); totalSheets = excelXlsxReader.totalSheets; }