Browse Source

anti bribery render

dengjia 1 month ago
parent
commit
a2a63c2c85

+ 44 - 0
easier-report-biz/src/main/java/com/yaoyicloud/render/AntiBriberyRender.java

@@ -0,0 +1,44 @@
+package com.yaoyicloud.render;
+
+import java.io.IOException;
+import java.nio.file.Paths;
+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.google.protobuf.util.JsonFormat;
+import com.yaoyicloud.message.FxyProtos.AntiBribery;
+
+/**
+ * AntiBribery渲染器
+ *
+ */
+public final class AntiBriberyRender extends AbstractRender {
+
+    public AntiBriberyRender(String cwd) {
+        super(cwd);
+    }
+
+    /**
+     * Docx 渲染
+     *
+     * @param info 数据
+     * @param templateFileContent 模板内容
+     * @return 本地文件目录
+     * @throws IOException
+     */
+    public String renderDocx(AntiBribery info, byte[] templateFileContent) throws IOException {
+        // 不需要定制展示逻辑的时候,使用protobuf的转json方法
+        String jsonStr = JsonFormat.printer().print(info);
+
+        // 注: 报告模板的模板变量按照json序列化的结果命名
+        // 注: 目前的实现假设:一个session对应一个cwd目录
+        ConfigureBuilder builder = Configure.builder();
+        builder.bind("questionnaireItems", new LoopRowTableRenderPolicy());
+        this.docxResultPath = this.renderDocx(jsonStr, templateFileContent, builder,
+            Paths.get(cwd, UUID.randomUUID().toString() + ".docx").toString());
+        return this.docxResultPath;
+    }
+
+}

+ 35 - 0
easier-report-biz/src/test/java/com/yaoyicloud/render/test/TestAntiBriberyRender.java

@@ -0,0 +1,35 @@
+package com.yaoyicloud.render.test;
+
+import static org.junit.Assert.assertTrue;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import org.junit.Test;
+
+import com.yaoyicloud.message.FxyProtos.AntiBribery;
+import com.yaoyicloud.message.FxyProtos.CheckSummary;
+import com.yaoyicloud.message.FxyProtos.QuestionnaireItem;
+import com.yaoyicloud.render.AntiBriberyRender;
+
+public class TestAntiBriberyRender {
+
+    @Test
+    public void testRenderDocx() throws IOException {
+
+        byte[] content = Files
+            .readAllBytes(Paths.get(getClass().getClassLoader().getResource("docx/antiBribery.docx").getFile()));
+        AntiBriberyRender render = new AntiBriberyRender("../temp/");
+        String retPath = render.renderDocx(
+            AntiBribery.newBuilder()
+                .setAntiBriberySummary(CheckSummary.newBuilder().setRiskSummary("high risk").setSuggestion("accept it"))
+                .addQuestionnaireItems(
+                    QuestionnaireItem.newBuilder().setId(1).setQuestion("question1").setAnswer("answer1"))
+                .addQuestionnaireItems(
+                    QuestionnaireItem.newBuilder().setId(1).setQuestion("question2").setAnswer("answer2"))
+                .build(),
+            content);
+
+        assertTrue(retPath.length() > 0);
+    }
+
+}

BIN
easier-report-biz/src/test/resources/docx/antiBribery.docx