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