1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.yaoyicloud.render.cso;
- import java.io.IOException;
- import java.util.Map;
- import org.apache.commons.collections4.MapUtils;
- import com.deepoove.poi.config.Configure;
- import com.deepoove.poi.config.ConfigureBuilder;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.yaoyicloud.config.CommonDataCache;
- import com.yaoyicloud.config.FilerepoProperties;
- import com.yaoyicloud.render.AbstractRender;
- import lombok.extern.slf4j.Slf4j;
- @Slf4j
- public final class EntAppendixRender extends AbstractRender {
- private final FilerepoProperties filerepoProperties;
- private final CommonDataCache commonDataCache;
- public EntAppendixRender(String cwd, FilerepoProperties filerepoProperties, CommonDataCache commonDataCache) {
- super(cwd);
- this.filerepoProperties = filerepoProperties;
- this.commonDataCache = commonDataCache;
- }
- @Override
- protected String getBasicPath() throws IOException {
- return filerepoProperties.getBasePath();
- }
- @Override
- protected String getReportImagePath() {
- return filerepoProperties.getReportImagePath();
- }
- /**
- * Docx 渲染
- * @param info 数据
- * @param templateFileContent 模板内容
- * @param relationId 用于查询缓存
- * @return
- * @throws IOException
- */
- public String renderDocx(String info, byte[] templateFileContent, String relationId) throws IOException {
- log.info("开始渲染CSO企业报告签章模块,relationId: {}", relationId);
- // 配置POI-TL渲染器
- ConfigureBuilder builder = Configure.builder();
- ObjectMapper objectMapper = new ObjectMapper();
- Map<String, Object> data = objectMapper.readValue(info, new TypeReference<Map<String, Object>>() {});
- Map<String, Object> commonDataCacheData = commonDataCache.getData(relationId);
- if (MapUtils.isNotEmpty(commonDataCacheData)) {
- data.putAll(commonDataCacheData);
- }
- fillDefaultValues(data);
- try {
- // 渲染文档
- String resultPath = this.renderDocx(data, templateFileContent, builder, relationId, "Appendix");
- log.info("渲染CSO企业报告签章模块成功,文件路径: {}", resultPath);
- return resultPath;
- } catch (Exception e) {
- log.error("渲染CSO企业报告签章模块失败,relationId: {}", relationId, e);
- throw new IOException("文档渲染失败", e);
- }
- }
- /**
- * 填充默认值,确保所有必要字段都存在
- */
- private void fillDefaultValues(Map<String, Object> data) {
- }
- }
|