forked from github/dataease
fix: 修复excel 数据类型判断错误
This commit is contained in:
parent
d2ccad7261
commit
f781cc25fd
@ -311,9 +311,6 @@ public class ExcelUtils {
|
||||
if (StringUtils.isEmpty(value) || value.length() > 19) {
|
||||
return "TEXT";
|
||||
}
|
||||
if (value.length() > 1 && value.startsWith("0")) {
|
||||
return "TEXT";
|
||||
}
|
||||
String regex = "^\\d+(\\.\\d+)?$";
|
||||
if (!value.matches(regex)) {
|
||||
return "TEXT";
|
||||
@ -322,6 +319,9 @@ public class ExcelUtils {
|
||||
Double d = Double.valueOf(value);
|
||||
double eps = 1e-10;
|
||||
if (d - Math.floor(d) < eps) {
|
||||
if (value.length() > 1 && value.startsWith("0")) {
|
||||
return "TEXT";
|
||||
}
|
||||
return "LONG";
|
||||
} else {
|
||||
return "DOUBLE";
|
||||
|
@ -853,16 +853,18 @@ public class DatasourceServer implements DatasourceApi {
|
||||
for (ExcelSheetData sheet : excelFileData.getSheets()) {
|
||||
for (DatasetTableDTO datasetTableDTO : datasetTableDTOS) {
|
||||
if (excelDataTableName(datasetTableDTO.getTableName()).equals(sheet.getTableName()) || isCsv(file.getOriginalFilename())) {
|
||||
List<String> fieldNames = sheet.getFields().stream().map(TableField::getName).collect(Collectors.toList());
|
||||
List<String> fieldTypes = sheet.getFields().stream().map(TableField::getFieldType).collect(Collectors.toList());
|
||||
Collections.sort(fieldNames);
|
||||
Collections.sort(fieldTypes);
|
||||
List<TableField> newTableFields = sheet.getFields();
|
||||
newTableFields.sort((o1, o2) -> {
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
});
|
||||
|
||||
datasourceRequest.setTable(datasetTableDTO.getTableName());
|
||||
List<String> oldFieldNames = ExcelUtils.getTableFields(datasourceRequest).stream().map(TableField::getName).collect(Collectors.toList());
|
||||
List<String> oldFieldTypes = ExcelUtils.getTableFields(datasourceRequest).stream().map(TableField::getFieldType).collect(Collectors.toList());
|
||||
Collections.sort(oldFieldNames);
|
||||
Collections.sort(oldFieldTypes);
|
||||
if (fieldNames.equals(oldFieldNames) && fieldTypes.equals(oldFieldTypes)) {
|
||||
List<TableField> oldTableFields = ExcelUtils.getTableFields(datasourceRequest);
|
||||
oldTableFields.sort((o1, o2) -> {
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
});
|
||||
|
||||
if (isEqual(newTableFields, oldTableFields)) {
|
||||
sheet.setDeTableName(datasetTableDTO.getTableName());
|
||||
excelSheetDataList.add(sheet);
|
||||
}
|
||||
@ -888,6 +890,34 @@ public class DatasourceServer implements DatasourceApi {
|
||||
return excelFileData;
|
||||
}
|
||||
|
||||
private boolean isEqual(List<TableField> newTableFields, List<TableField> oldTableFields) {
|
||||
boolean isEqual = true;
|
||||
if (CollectionUtils.isEmpty(newTableFields) || CollectionUtils.isEmpty(oldTableFields)) {
|
||||
isEqual = false;
|
||||
}
|
||||
for (int i = 0; i < newTableFields.size(); i++) {
|
||||
if (!newTableFields.get(i).getName().equals(oldTableFields.get(i).getName())) {
|
||||
isEqual = false;
|
||||
break;
|
||||
}
|
||||
if (!newTableFields.get(i).getFieldType().equals(oldTableFields.get(i).getFieldType())) {
|
||||
if (oldTableFields.get(i).getFieldType().equals("TEXT")) {
|
||||
continue;
|
||||
}
|
||||
if (oldTableFields.get(i).getFieldType().equals("DOUBLE")) {
|
||||
if (newTableFields.get(i).getFieldType().equals("LONG")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
isEqual = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return isEqual;
|
||||
|
||||
}
|
||||
|
||||
private boolean isCsv(String fileName) {
|
||||
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
|
||||
return suffix.equalsIgnoreCase("csv");
|
||||
|
Loading…
Reference in New Issue
Block a user