//package com.yaoyicloud.render; // //import java.io.IOException; //import java.nio.file.Paths; //import java.util.Map; //import java.util.UUID; // //import com.deepoove.poi.config.Configure; //import com.deepoove.poi.config.ConfigureBuilder; //import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; //import com.fasterxml.jackson.core.JsonGenerator; //import com.fasterxml.jackson.core.JsonProcessingException; //import com.fasterxml.jackson.databind.ObjectMapper; //import com.fasterxml.jackson.databind.SerializerProvider; //import com.fasterxml.jackson.databind.module.SimpleModule; //import com.fasterxml.jackson.databind.ser.std.StdSerializer; //import com.yaoyicloud.message.FxyProtos.AuditResult; //import com.yaoyicloud.message.FxyProtos.CheckItemScore; //import com.yaoyicloud.message.FxyProtos.CheckSummary; // //import cn.hutool.core.util.StrUtil; // ///** // * AuditResult渲染器 // * // */ //public final class AuditResultRender extends AbstractRender { // // public AuditResultRender(String cwd) { // super(cwd); // } // // /** // * Docx 渲染 // * // * @param info 数据 // * @param templateFileContent 模板内容 // * @return 本地文件目录 // * @throws IOException // */ // public String renderDocx(AuditResult info, Map addtionalMap, byte[] templateFileContent) throws IOException { // ObjectMapper mapper = new ObjectMapper(); // SimpleModule module = new SimpleModule(); // module.addSerializer(new AuditResultSerializer(AuditResult.class)); // module.addSerializer(new CheckItemScoreSerializer(CheckItemScore.class)); // module.addSerializer(new CheckSummarySerializer(CheckSummary.class)); // mapper.registerModule(module); // // String jsonStr = mapper.writeValueAsString(info); // // // 注: 报告模板的模板变量按照json序列化的结果命名 // // 注: 目前的实现假设:一个session对应一个cwd目录 // ConfigureBuilder builder = Configure.builder(); // builder.bind("checkItemScores", new LoopRowTableRenderPolicy()); // this.docxResultPath = this.renderDocx(jsonStr, addtionalMap, templateFileContent, builder, // Paths.get(cwd, UUID.randomUUID().toString() + ".docx").toString()); // return this.docxResultPath; // } // // /* // * 通过序列化和反序列化 // * 1. 默认显示规则的数据转换 // * 2. 避免TL处理模板面对复杂数据类型 // */ // public class AuditResultSerializer extends StdSerializer { // // public AuditResultSerializer() { // this(null); // } // // public AuditResultSerializer(Class t) { // super(t); // } // // @Override // public void serialize(AuditResult value, JsonGenerator jgen, SerializerProvider provider) // throws IOException, JsonProcessingException { // // jgen.writeStartObject(); // jgen.writeStringField("opinion", StrUtil.isBlank(value.getOpinion()) ? "-" : value.getOpinion()); // jgen.writeStringField("serviceProviderName", value.getServiceProviderName()); // // Note: ignore reportVersion // jgen.writeStringField("auditDate", value.getAuditDate()); // jgen.writeObjectField("overallSummary", value.getOverallSummary()); // jgen.writeObjectField("checkItemScores", value.getCheckItemScoresList()); // jgen.writeEndObject(); // } // } // // public class CheckItemScoreSerializer extends StdSerializer { // // public CheckItemScoreSerializer() { // this(null); // } // // public CheckItemScoreSerializer(Class t) { // super(t); // } // // @Override // public void serialize(CheckItemScore value, JsonGenerator jgen, SerializerProvider provider) // throws IOException, JsonProcessingException { // // jgen.writeStartObject(); // jgen.writeStringField("category", StrUtil.isBlank(value.getCategory()) ? "-" : value.getCategory()); // jgen.writeStringField("itemName", value.getItemName()); // jgen.writeNumberField("score", value.getScore()); // jgen.writeEndObject(); // } // } // // public class CheckSummarySerializer extends StdSerializer { // // public CheckSummarySerializer() { // this(null); // } // // public CheckSummarySerializer(Class t) { // super(t); // } // // @Override // public void serialize(CheckSummary value, JsonGenerator jgen, SerializerProvider provider) // throws IOException, JsonProcessingException { // jgen.writeStartObject(); // jgen.writeStringField("score", value.getScore() < 0 ? "-" : String.valueOf(value.getScore())); // jgen.writeStringField("riskSummary", value.getRiskSummary()); // jgen.writeStringField("suggestion", value.getSuggestion()); // jgen.writeEndObject(); // } // } //}