From eae6f266ede14ee2a19880b99d6becceeaad2221 Mon Sep 17 00:00:00 2001 From: jishenghua <752718920@qq.com> Date: Fri, 14 Nov 2025 21:39:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9excel=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=96=87=E4=BB=B6=E6=89=A9=E5=B1=95=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/ExceptionConstants.java | 10 +++++++--- .../erp/controller/DepotItemController.java | 20 +++++++++---------- .../erp/controller/SupplierController.java | 13 ++++++++++++ .../com/jsh/erp/service/MaterialService.java | 6 +++--- .../com/jsh/erp/service/SupplierService.java | 16 +++++++++++++++ 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 579bcb76..0d0be4b1 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -39,6 +39,13 @@ public class ExceptionConstants { **/ public static final int DELETE_FORCE_CONFIRM_CODE = 601; public static final String DELETE_FORCE_CONFIRM_MSG = "检测到存在依赖数据,不能删除!"; + + /** + * 文件扩展名必须为xls + **/ + public static final int FILE_EXTENSION_ERROR_CODE = 701; + public static final String FILE_EXTENSION_ERROR_MSG = "文件扩展名必须为xls"; + /** * 用户信息 * type = 5 @@ -296,9 +303,6 @@ public class ExceptionConstants { //序列号和批号只能有一项 public static final int MATERIAL_ENABLE_MUST_ONE_CODE = 8000008; public static final String MATERIAL_ENABLE_MUST_ONE_MSG = "抱歉,商品条码:%s的序列号和批号不能同时填1"; - //抱歉,文件扩展名必须为xls - public static final int MATERIAL_EXTENSION_ERROR_CODE = 8000009; - public static final String MATERIAL_EXTENSION_ERROR_MSG = "抱歉,文件扩展名必须为xls"; //名称为空 public static final int MATERIAL_NAME_EMPTY_CODE = 8000010; public static final String MATERIAL_NAME_EMPTY_MSG = "第%s行名称为空"; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java index 297f4a6f..07e39b85 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -1063,17 +1063,17 @@ public class DepotItemController { String message = ""; try { String barCodes = ""; - //文件合法性校验 - Sheet src = null; - try { - Workbook workbook = Workbook.getWorkbook(file.getInputStream()); - src = workbook.getSheet(0); - } catch (Exception e) { - message = "导入文件不合法,请检查"; - data.put("message", message); - res.code = 400; - res.data = data; + //文件扩展名只能为xls + String fileName = file.getOriginalFilename(); + if(StringUtil.isNotEmpty(fileName)) { + String fileExt = fileName.substring(fileName.indexOf(".")+1); + if(!"xls".equals(fileExt)) { + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); + } } + Workbook workbook = Workbook.getWorkbook(file.getInputStream()); + Sheet src = workbook.getSheet(0); if(src.getRows()>1000) { message = "导入失败,明细不能超出1000条"; res.code = 500; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java index 9a12bb9f..24ff7fc8 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java @@ -7,6 +7,7 @@ import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Supplier; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.vo.SupplierSimple; +import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.SupplierService; import com.jsh.erp.service.SystemConfigService; import com.jsh.erp.service.UserService; @@ -403,9 +404,13 @@ public class SupplierController extends BaseController { HttpServletRequest request, HttpServletResponse response) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); try { + supplierService.checkFileExt(file); supplierService.importVendor(file, request); res.code = 200; res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); } catch(Exception e){ logger.error(e.getMessage(), e); res.code = 500; @@ -427,9 +432,13 @@ public class SupplierController extends BaseController { HttpServletRequest request, HttpServletResponse response) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); try { + supplierService.checkFileExt(file); supplierService.importCustomer(file, request); res.code = 200; res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); } catch(Exception e){ logger.error(e.getMessage(), e); res.code = 500; @@ -451,9 +460,13 @@ public class SupplierController extends BaseController { HttpServletRequest request, HttpServletResponse response) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); try { + supplierService.checkFileExt(file); supplierService.importMember(file, request); res.code = 200; res.data = "导入成功"; + } catch(BusinessRunTimeException e) { + res.code = e.getCode(); + res.data = e.getData().get("message"); } catch(Exception e){ logger.error(e.getMessage(), e); res.code = 500; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java index cd1950c3..d0f30464 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java @@ -571,8 +571,8 @@ public class MaterialService { if(StringUtil.isNotEmpty(fileName)) { String fileExt = fileName.substring(fileName.indexOf(".")+1); if(!"xls".equals(fileExt)) { - throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXTENSION_ERROR_CODE, - ExceptionConstants.MATERIAL_EXTENSION_ERROR_MSG); + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); } } Workbook workbook = Workbook.getWorkbook(file.getInputStream()); @@ -1518,4 +1518,4 @@ public class MaterialService { } return list; } -} \ No newline at end of file +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java index 2b2826b9..3e03eb3c 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java @@ -430,6 +430,22 @@ public class SupplierService { return map; } + /** + * 校验文件格式 + * @param file + */ + public void checkFileExt(MultipartFile file) { + //文件扩展名只能为xls + String fileName = file.getOriginalFilename(); + if(StringUtil.isNotEmpty(fileName)) { + String fileExt = fileName.substring(fileName.indexOf(".")+1); + if(!"xls".equals(fileExt)) { + throw new BusinessRunTimeException(ExceptionConstants.FILE_EXTENSION_ERROR_CODE, + ExceptionConstants.FILE_EXTENSION_ERROR_MSG); + } + } + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void importVendor(MultipartFile file, HttpServletRequest request) throws Exception{ String type = "供应商";