From 15c25e895c83216d871939a5b190ebae0b3fa55b Mon Sep 17 00:00:00 2001 From: han0 Date: Fri, 7 Mar 2025 09:23:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9C=B0=E6=9D=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8A=E4=BC=A0=E7=BC=96=E7=A0=81=E6=9C=AA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xinke/main/model/db/LocalMaterial.java | 54 +++++++++++++++++++ src/test/java/mjkf/xinke/UploadFileTest.java | 5 +- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java b/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java index 3f1663b..fcf87f6 100644 --- a/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java +++ b/src/main/java/mjkf/xinke/main/model/db/LocalMaterial.java @@ -18,6 +18,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; /** *

@@ -101,6 +103,7 @@ public class LocalMaterial extends Model { public LocalMaterial (Row row, MaterialTask task) { var policy = Row.MissingCellPolicy.CREATE_NULL_AS_BLANK; + row.getCell(0).setCellType(CellType.STRING); this.setMaterialId(row.getCell(0, policy).getStringCellValue()); this.setCity(row.getCell(1, policy).getStringCellValue()); this.setCounty(row.getCell(2, policy).getStringCellValue()); @@ -132,4 +135,55 @@ public class LocalMaterial extends Model { this.setRemark(item.getRemark()); 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; + } + } } diff --git a/src/test/java/mjkf/xinke/UploadFileTest.java b/src/test/java/mjkf/xinke/UploadFileTest.java index 7447436..d11f989 100644 --- a/src/test/java/mjkf/xinke/UploadFileTest.java +++ b/src/test/java/mjkf/xinke/UploadFileTest.java @@ -25,8 +25,8 @@ public class UploadFileTest { @Test public void test() throws Exception { // var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx"; -// var filePath = "C:\\Users\\Administrator\\Documents\\对比材料精简9月.xlsx"; - var filePath = "D:\\defaultUploadFolder\\defaultBucketName\\2025\\2\\12\\1889631594115809281.xls"; + var filePath = "C:\\Users\\Administrator\\Documents\\地材.xlsx"; +// var filePath = "D:\\defaultUploadFolder\\defaultBucketName\\2025\\2\\12\\1889631594115809281.xls"; var file = new File(filePath); // var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed"); var multipartFile = this.mockMultipartFile(file); @@ -40,6 +40,7 @@ public class UploadFileTest { * 1810481965629005826 公路局.xlsx 40201 * 1810482216079302658 交通局.xlsx 40101 * 1810497092512178177 地材.xlsx 1101 + * 1897813936821006338 地材.xlsx 1101 * 1810506191866003457 地材-202405.xlsx 1101 * 1871732061747179521 相邻城市.xlsx 600 * 1866412571689631746 三明钢铁.xlsx 301