36 lines
1.9 KiB
Markdown
36 lines
1.9 KiB
Markdown
# EasyExcel 导入模板 Fontconfig 异常修复实施记录
|
||
|
||
## 保存路径确认
|
||
|
||
- 文档类型:实施记录
|
||
- 保存路径:`docs/reports/implementation/`
|
||
|
||
## 问题说明
|
||
|
||
- 请求地址:`/ccdi/baseStaff/importTemplate`
|
||
- 异常信息:`java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration`
|
||
- 触发链路:员工信息维护导入模板下载使用 `EasyExcelUtil.importTemplateWithDictDropdown` 生成双 Sheet 模板,EasyExcel 默认创建 `SXSSFWorkbook`,在无可用字体配置的服务器环境中创建 Sheet 时会触发 POI/AWT 字体配置初始化异常。
|
||
|
||
## 修改内容
|
||
|
||
- 修改 `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/utils/EasyExcelUtil.java`
|
||
- 将导入模板下载相关写出入口统一改为 `inMemory(Boolean.TRUE)`:
|
||
- 单 Sheet 普通模板
|
||
- 单 Sheet 带字典下拉模板
|
||
- 指定文件名的带字典下拉模板
|
||
- 双 Sheet 带字典下拉模板
|
||
- 普通数据导出入口保持流式写出,不改变大数据导出的内存特性。
|
||
|
||
## 影响范围
|
||
|
||
- 修复员工信息维护 `/ccdi/baseStaff/importTemplate` 模板下载。
|
||
- 同步覆盖复用同一工具方法的其他导入模板下载接口。
|
||
- 不改变导入解析逻辑、模板表头、字典下拉、必填标记和文本格式处理逻辑。
|
||
|
||
## 验证记录
|
||
|
||
- 已执行:`mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false test`
|
||
- 结果:失败,失败原因是本机 JDK 21 下 Mockito inline 自附加失败,错误为 `Could not self-attach to current VM`,未进入模板业务断言。
|
||
- 已执行:`mvn -pl ccdi-info-collection -am -Dtest=EasyExcelUtilTemplateTest -Dsurefire.failIfNoSpecifiedTests=false -DargLine=-javaagent:/Users/wkc/.m2/repository/net/bytebuddy/byte-buddy-agent/1.17.8/byte-buddy-agent-1.17.8.jar test`
|
||
- 结果:通过,`Tests run: 5, Failures: 0, Errors: 0, Skipped: 0`。
|