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) {
|
if (StringUtils.isEmpty(value) || value.length() > 19) {
|
||||||
return "TEXT";
|
return "TEXT";
|
||||||
}
|
}
|
||||||
if (value.length() > 1 && value.startsWith("0")) {
|
|
||||||
return "TEXT";
|
|
||||||
}
|
|
||||||
String regex = "^\\d+(\\.\\d+)?$";
|
String regex = "^\\d+(\\.\\d+)?$";
|
||||||
if (!value.matches(regex)) {
|
if (!value.matches(regex)) {
|
||||||
return "TEXT";
|
return "TEXT";
|
||||||
@ -322,6 +319,9 @@ public class ExcelUtils {
|
|||||||
Double d = Double.valueOf(value);
|
Double d = Double.valueOf(value);
|
||||||
double eps = 1e-10;
|
double eps = 1e-10;
|
||||||
if (d - Math.floor(d) < eps) {
|
if (d - Math.floor(d) < eps) {
|
||||||
|
if (value.length() > 1 && value.startsWith("0")) {
|
||||||
|
return "TEXT";
|
||||||
|
}
|
||||||
return "LONG";
|
return "LONG";
|
||||||
} else {
|
} else {
|
||||||
return "DOUBLE";
|
return "DOUBLE";
|
||||||
|
@ -853,16 +853,18 @@ public class DatasourceServer implements DatasourceApi {
|
|||||||
for (ExcelSheetData sheet : excelFileData.getSheets()) {
|
for (ExcelSheetData sheet : excelFileData.getSheets()) {
|
||||||
for (DatasetTableDTO datasetTableDTO : datasetTableDTOS) {
|
for (DatasetTableDTO datasetTableDTO : datasetTableDTOS) {
|
||||||
if (excelDataTableName(datasetTableDTO.getTableName()).equals(sheet.getTableName()) || isCsv(file.getOriginalFilename())) {
|
if (excelDataTableName(datasetTableDTO.getTableName()).equals(sheet.getTableName()) || isCsv(file.getOriginalFilename())) {
|
||||||
List<String> fieldNames = sheet.getFields().stream().map(TableField::getName).collect(Collectors.toList());
|
List<TableField> newTableFields = sheet.getFields();
|
||||||
List<String> fieldTypes = sheet.getFields().stream().map(TableField::getFieldType).collect(Collectors.toList());
|
newTableFields.sort((o1, o2) -> {
|
||||||
Collections.sort(fieldNames);
|
return o1.getName().compareTo(o2.getName());
|
||||||
Collections.sort(fieldTypes);
|
});
|
||||||
|
|
||||||
datasourceRequest.setTable(datasetTableDTO.getTableName());
|
datasourceRequest.setTable(datasetTableDTO.getTableName());
|
||||||
List<String> oldFieldNames = ExcelUtils.getTableFields(datasourceRequest).stream().map(TableField::getName).collect(Collectors.toList());
|
List<TableField> oldTableFields = ExcelUtils.getTableFields(datasourceRequest);
|
||||||
List<String> oldFieldTypes = ExcelUtils.getTableFields(datasourceRequest).stream().map(TableField::getFieldType).collect(Collectors.toList());
|
oldTableFields.sort((o1, o2) -> {
|
||||||
Collections.sort(oldFieldNames);
|
return o1.getName().compareTo(o2.getName());
|
||||||
Collections.sort(oldFieldTypes);
|
});
|
||||||
if (fieldNames.equals(oldFieldNames) && fieldTypes.equals(oldFieldTypes)) {
|
|
||||||
|
if (isEqual(newTableFields, oldTableFields)) {
|
||||||
sheet.setDeTableName(datasetTableDTO.getTableName());
|
sheet.setDeTableName(datasetTableDTO.getTableName());
|
||||||
excelSheetDataList.add(sheet);
|
excelSheetDataList.add(sheet);
|
||||||
}
|
}
|
||||||
@ -888,6 +890,34 @@ public class DatasourceServer implements DatasourceApi {
|
|||||||
return excelFileData;
|
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) {
|
private boolean isCsv(String fileName) {
|
||||||
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
|
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
|
||||||
return suffix.equalsIgnoreCase("csv");
|
return suffix.equalsIgnoreCase("csv");
|
||||||
|
Loading…
Reference in New Issue
Block a user