# 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`。
