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; }