fix: 修复地材数据上传编码未入库的问题
This commit is contained in:
@@ -18,6 +18,8 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
|
import org.apache.poi.ss.usermodel.CellType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -101,6 +103,7 @@ public class LocalMaterial extends Model<LocalMaterial> {
|
|||||||
|
|
||||||
public LocalMaterial (Row row, MaterialTask task) {
|
public LocalMaterial (Row row, MaterialTask task) {
|
||||||
var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
|
var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
|
||||||
|
row.getCell(0).setCellType(CellType.STRING);
|
||||||
this.setMaterialId(row.getCell(0, policy).getStringCellValue());
|
this.setMaterialId(row.getCell(0, policy).getStringCellValue());
|
||||||
this.setCity(row.getCell(1, policy).getStringCellValue());
|
this.setCity(row.getCell(1, policy).getStringCellValue());
|
||||||
this.setCounty(row.getCell(2, policy).getStringCellValue());
|
this.setCounty(row.getCell(2, policy).getStringCellValue());
|
||||||
@@ -132,4 +135,55 @@ public class LocalMaterial extends Model<LocalMaterial> {
|
|||||||
this.setRemark(item.getRemark());
|
this.setRemark(item.getRemark());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getCellValueAsString(Cell cell) {
|
||||||
|
if (cell == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (cell.getCellType()) {
|
||||||
|
case STRING:
|
||||||
|
return cell.getStringCellValue();
|
||||||
|
case NUMERIC:
|
||||||
|
// 处理数值类型,转换为字符串
|
||||||
|
double numericValue = cell.getNumericCellValue();
|
||||||
|
// 如果是整数,去掉小数点
|
||||||
|
if (numericValue == (long) numericValue) {
|
||||||
|
return String.format("%.0f", numericValue);
|
||||||
|
}
|
||||||
|
return String.valueOf(numericValue);
|
||||||
|
case BOOLEAN:
|
||||||
|
return String.valueOf(cell.getBooleanCellValue());
|
||||||
|
case FORMULA:
|
||||||
|
try {
|
||||||
|
return cell.getStringCellValue();
|
||||||
|
} catch (Exception e) {
|
||||||
|
return String.valueOf(cell.getNumericCellValue());
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private BigDecimal getCellValueAsDecimal(Cell cell) {
|
||||||
|
if (cell == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (cell.getCellType()) {
|
||||||
|
case NUMERIC:
|
||||||
|
return BigDecimal.valueOf(cell.getNumericCellValue());
|
||||||
|
case STRING:
|
||||||
|
String stringValue = cell.getStringCellValue().trim();
|
||||||
|
return stringValue.isEmpty() ? null : new BigDecimal(stringValue);
|
||||||
|
case FORMULA:
|
||||||
|
return BigDecimal.valueOf(cell.getNumericCellValue());
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,8 +25,8 @@ public class UploadFileTest {
|
|||||||
@Test
|
@Test
|
||||||
public void test() throws Exception {
|
public void test() throws Exception {
|
||||||
// var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx";
|
// var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx";
|
||||||
// var filePath = "C:\\Users\\Administrator\\Documents\\对比材料精简9月.xlsx";
|
var filePath = "C:\\Users\\Administrator\\Documents\\地材.xlsx";
|
||||||
var filePath = "D:\\defaultUploadFolder\\defaultBucketName\\2025\\2\\12\\1889631594115809281.xls";
|
// var filePath = "D:\\defaultUploadFolder\\defaultBucketName\\2025\\2\\12\\1889631594115809281.xls";
|
||||||
var file = new File(filePath);
|
var file = new File(filePath);
|
||||||
// var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed");
|
// var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed");
|
||||||
var multipartFile = this.mockMultipartFile(file);
|
var multipartFile = this.mockMultipartFile(file);
|
||||||
@@ -40,6 +40,7 @@ public class UploadFileTest {
|
|||||||
* 1810481965629005826 公路局.xlsx 40201
|
* 1810481965629005826 公路局.xlsx 40201
|
||||||
* 1810482216079302658 交通局.xlsx 40101
|
* 1810482216079302658 交通局.xlsx 40101
|
||||||
* 1810497092512178177 地材.xlsx 1101
|
* 1810497092512178177 地材.xlsx 1101
|
||||||
|
* 1897813936821006338 地材.xlsx 1101
|
||||||
* 1810506191866003457 地材-202405.xlsx 1101
|
* 1810506191866003457 地材-202405.xlsx 1101
|
||||||
* 1871732061747179521 相邻城市.xlsx 600
|
* 1871732061747179521 相邻城市.xlsx 600
|
||||||
* 1866412571689631746 三明钢铁.xlsx 301
|
* 1866412571689631746 三明钢铁.xlsx 301
|
||||||
|
Reference in New Issue
Block a user