分支
用户 xiaoyi <908147524@qq.com>
星期二, 十一月 3, 2026 19:10 +0800
提交者 xiaoyi <908147524@qq.com>
星期二, 十一月 3, 2026 19:10 +0800
提交b471ab5edf72439cf6e37c4635c07e7a5fc08a4f
目录 5f012742ab9cc4f7320029b68d80755dc471c94a 目录 | zip | gz
上一版本 481d8165f26fc7e37f0e87f6444ac0340bb563a3 查看 | 对比
fix(excel): Excel 导入报错统一转为可读中文提示,不再出现「系统异常」500

问题:119 个导入接口中有 52 个直接调用 ExcelUtils.read 且无 try-catch,任何坏文件 / 空文件 / 模板不匹配都会抛底层异常,前端只看到「系统异常」。

修复思路:不逐个改 52 个 Controller,而是在唯一的入口 ExcelUtils.read 统一收敛。

1. 新增 ExcelErrorCodeConstants(1_099_xxx 区间,框架级):文件为空 / 读取失败 / 内容为空 / 表头不匹配 / 模板不匹配 / 单元格格式错误

2. ExcelUtils.read 逐类识别异常并转成可读提示:

- 空文件 -> 请选择要导入的 Excel 文件

- IOException -> Excel 文件读取失败,请确认文件未损坏且为 .xls/.xlsx 格式

- ExcelDataConvertException -> 第 N 行第 M 列数据格式不正确:xxx

- ExcelAnalysisException -> 表头/模板不匹配,请下载最新模板重新填写

- 其它异常兜底 -> Excel 文件读取失败

- 只有表头没有数据 -> Excel 内容为空,请按照模板填写数据后再导入

3. GlobalExceptionHandler 补齐客户端问题不报 500:

- MultipartException(导入接口漏传文件)-> 400

- 其它反序列化失败 -> 400,不再落到 defaultExceptionHandler

- buildExceptionLog 对 NOT NULL 列做空值兜底,避免异常日志本身插入失败

4. UserController 移除与 ExcelUtils 重复的 try-catch(否则会吞掉更精确的提示)

5. 同步更新 AdminUserServiceImplTest 四个导入用例以适配 deptName
已添加1个文件
已修改4个文件
190 ■■■■■ 文件已修改
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/enums/ExcelErrorCodeConstants.java 34 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java 63 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java 49 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java 15 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java 29 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史