fix: 精简模式手动修改字段类型为数值后不生效

This commit is contained in:
taojinlong 2023-05-09 18:14:54 +08:00
parent b99a3f8b5f
commit 21dad506a3
2 changed files with 18 additions and 6 deletions

View File

@ -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<DatasetTableField> getDatasetTableFields() {
return datasetTableFields;
}
public void setDatasetTableFields(List<DatasetTableField> datasetTableFields) {
this.datasetTableFields = datasetTableFields;
}
private List<DatasetTableField> 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;

View File

@ -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<DatasetTableField> datasetTableFields) throws Exception {
List<String[]> data = new ArrayList<>();
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<ExcelSheetData> 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;
}