Jelajahi Sumber

replace POJO with protobuf msg

dengjia 1 bulan lalu
induk
melakukan
3569794b96

+ 0 - 26
easier-report-biz/src/main/java/com/yaoyicloud/render/AuditResult.java

@@ -1,26 +0,0 @@
-package com.yaoyicloud.render;
-
-import lombok.Data;
-
-import java.time.LocalDate;
-import java.util.List;
-
-/**
- * 审核结果类
- */
-@Data
-public class AuditResult {
-    private final String auditResultScore; // ${审核结果:评分}
-    private final String opinion; // ${审核结果:审核意见}
-    private final String serviceProviderName; // ${审核结果:服务商名称}
-    private final LocalDate auditDate; // ${审核结果:审核日期}
-    private final String reportVersion; // ${审核结果:报告版本}
-    private final String riskAlert; // ${风险概述:风险提示}
-    private final String auditResultSuggestion; // ${风险概述:建议}
-
-    // 基础信息评分
-    // 公共记录评分
-    // 财务信息评分
-    // 项目情况评分
-    private final List<CheckItemScore> checkItemScores;
-}

+ 33 - 8
easier-report-biz/src/main/java/com/yaoyicloud/render/AuditResultRender.java

@@ -2,7 +2,6 @@ package com.yaoyicloud.render;
 
 import java.io.IOException;
 import java.nio.file.Paths;
-import java.time.format.DateTimeFormatter;
 import java.util.UUID;
 
 import com.deepoove.poi.config.Configure;
@@ -14,8 +13,10 @@ 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 cn.hutool.core.date.DatePattern;
+import cn.hutool.core.util.StrUtil;
 
 /**
  * AuditResult渲染器
@@ -39,6 +40,7 @@ public final class AuditResultRender extends AbstractRender {
         ObjectMapper mapper = new ObjectMapper();
         SimpleModule module = new SimpleModule();
         module.addSerializer(new AuditResultSerializer(AuditResult.class));
+        module.addSerializer(new CheckItemScoreSerializer(CheckItemScore.class));
         mapper.registerModule(module);
 
         String jsonStr = mapper.writeValueAsString(info);
@@ -73,14 +75,37 @@ public final class AuditResultRender extends AbstractRender {
 
             jgen.writeStartObject();
             jgen.writeStringField("auditResultScore", value.getAuditResultScore());
-            jgen.writeStringField("opinion", value.getOpinion() == null ? "-" : value.getOpinion());
+            jgen.writeStringField("opinion", StrUtil.isBlank(value.getOpinion()) ? "-" : value.getOpinion());
             jgen.writeStringField("serviceProviderName", value.getServiceProviderName());
             // Note: ignore reportVersion
-            jgen.writeStringField("auditDate", value.getAuditDate() == null ? ""
-                : value.getAuditDate().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
-            jgen.writeStringField("riskAlert", value.getRiskAlert() == null ? "-" : value.getRiskAlert());
-            jgen.writeStringField("auditResultSuggestion", value.getAuditResultSuggestion() == null ? "-" : value.getAuditResultSuggestion());
-            jgen.writeObjectField("checkItemScores", value.getCheckItemScores());
+            jgen.writeStringField("auditDate", value.getAuditDate());
+            jgen.writeStringField("riskAlert", StrUtil.isBlank(value.getRiskAlert()) ? "-" : value.getRiskAlert());
+            jgen.writeStringField("auditResultSuggestion",
+                StrUtil.isBlank(value.getAuditResultSuggestion()) ? "-" : value.getAuditResultSuggestion());
+            jgen.writeObjectField("checkItemScores", value.getCheckItemScoresList());
+            jgen.writeEndObject();
+        }
+    }
+
+    public class CheckItemScoreSerializer extends StdSerializer<CheckItemScore> {
+
+        public CheckItemScoreSerializer() {
+            this(null);
+        }
+
+        public CheckItemScoreSerializer(Class<CheckItemScore> t) {
+            super(t);
+        }
+
+        @Override
+        public void serialize(CheckItemScore value, JsonGenerator jgen, SerializerProvider provider)
+            throws IOException, JsonProcessingException {
+
+            jgen.writeStartObject();
+            jgen.writeNumberField("itemId", value.getItemId());
+            jgen.writeStringField("category", StrUtil.isBlank(value.getCategory()) ? "-" : value.getCategory());
+            jgen.writeStringField("itemName", value.getItemName());
+            jgen.writeNumberField("score", value.getScore());
             jgen.writeEndObject();
         }
     }

+ 0 - 19
easier-report-biz/src/main/java/com/yaoyicloud/render/CheckItemScore.java

@@ -1,19 +0,0 @@
-package com.yaoyicloud.render;
-
-import lombok.Data;
-
-/**
- *
- */
-@Data
-public class CheckItemScore {
-    private final Long itemId;
-    private final String category;
-    private final String itemName;
-    private final Long score;
-
-    public int compareTo(CheckItemScore o) {
-        String cates = "基础信息,公共记录,财务信息,项目情况";
-        return cates.indexOf(this.category) - cates.indexOf(o.category);
-    }
-}

+ 0 - 16
easier-report-biz/src/main/java/com/yaoyicloud/render/ServiceProviderInfo.java

@@ -1,16 +0,0 @@
-package com.yaoyicloud.render;
-
-import java.time.LocalDate;
-
-import lombok.Data;
-
-/**
- * 服务商信息类
- */
-@Data
-public class ServiceProviderInfo {
-    private final String name; // ${服务商信息:服务商名称}
-    private final String type; // "基金会"
-    private final LocalDate reportDate; // ${服务商信息:报告日期}
-    private final String tenantName; // ${服务商信息:租户名称}
-}

+ 7 - 8
easier-report-biz/src/main/java/com/yaoyicloud/render/ServiceProviderInfoRender.java

@@ -2,7 +2,6 @@ package com.yaoyicloud.render;
 
 import java.io.IOException;
 import java.nio.file.Paths;
-import java.time.format.DateTimeFormatter;
 import java.util.UUID;
 
 import com.deepoove.poi.config.Configure;
@@ -12,8 +11,9 @@ 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.ServiceProviderInfo;
 
-import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.util.StrUtil;
 
 /**
  * ServiceProviderInfo渲染器
@@ -51,8 +51,8 @@ public final class ServiceProviderInfoRender extends AbstractRender {
 
     /*
      * 通过序列化和反序列化
-     * 1. 默认显示规则的数据转换
-     * 2. 避免TL处理模板面对复杂数据类型
+     * 1. 进行默认显示规则的数据转换
+     * 2. 避免POI-TL处理模板面对复杂数据类型
      */
     public class ServiceProviderInfoSerializer extends StdSerializer<ServiceProviderInfo> {
 
@@ -69,10 +69,9 @@ public final class ServiceProviderInfoRender extends AbstractRender {
             throws IOException, JsonProcessingException {
 
             jgen.writeStartObject();
-            jgen.writeStringField("name", value.getName() == null ? "-" : value.getName());
-            jgen.writeStringField("type", value.getType() == null ? "-" : value.getType());
-            jgen.writeStringField("reportDate", value.getReportDate() == null ? ""
-                : value.getReportDate().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
+            jgen.writeStringField("name", StrUtil.isBlank(value.getName()) ? "-" : value.getName());
+            jgen.writeStringField("type", StrUtil.isBlank(value.getType()) ? "-" : value.getType());
+            jgen.writeStringField("reportDate", value.getReportDate());
             jgen.writeStringField("tenantName", value.getTenantName());
             jgen.writeEndObject();
         }

+ 9 - 13
easier-report-biz/src/test/java/com/yaoyicloud/render/test/TestAuditResultRender.java

@@ -4,15 +4,11 @@ import static org.junit.Assert.assertTrue;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
-import com.yaoyicloud.render.AuditResult;
+import com.yaoyicloud.message.FxyProtos.AuditResult;
+import com.yaoyicloud.message.FxyProtos.CheckItemScore;
 import com.yaoyicloud.render.AuditResultRender;
-import com.yaoyicloud.render.CheckItemScore;
 
 public class TestAuditResultRender {
 
@@ -23,13 +19,13 @@ public class TestAuditResultRender {
             .readAllBytes(Paths.get(getClass().getClassLoader().getResource("docx/check_overview.docx").getFile()));
         AuditResultRender render = new AuditResultRender("../temp/");
         String retPath = render.renderDocx(
-            new AuditResult("30", "my opinion", "whoami", LocalDate.now(), "",
-                "high risk", "accept it",
-                new ArrayList<CheckItemScore>(List.of(
-                    new CheckItemScore(1L, "cate1", "name1", 1L),
-                    new CheckItemScore(2L, "cate2", "name2", 2L)
-                ))
-            ),
+            AuditResult.newBuilder().setAuditResultScore("30").setOpinion("my opinion").setServiceProviderName("whoami")
+                .setRiskAlert("high risk").setAuditResultSuggestion("accept it")
+                .addCheckItemScores(0,
+                    CheckItemScore.newBuilder().setItemId(1L).setCategory("cate1").setItemName("name1").setScore(1L))
+                .addCheckItemScores(0,
+                    CheckItemScore.newBuilder().setItemId(2L).setCategory("cate2").setItemName("name2").setScore(2L))
+                .build(),
             content);
 
         assertTrue(retPath.length() > 0);

+ 4 - 4
easier-report-biz/src/test/java/com/yaoyicloud/render/test/TestServiceProviderInfoRender.java

@@ -4,11 +4,9 @@ import static org.junit.Assert.assertTrue;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.time.LocalDate;
-
 import org.junit.Test;
 
-import com.yaoyicloud.render.ServiceProviderInfo;
+import com.yaoyicloud.message.FxyProtos.ServiceProviderInfo;
 import com.yaoyicloud.render.ServiceProviderInfoRender;
 
 public class TestServiceProviderInfoRender {
@@ -20,7 +18,9 @@ public class TestServiceProviderInfoRender {
             Paths.get(getClass().getClassLoader().getResource("docx/service_provider_info.docx").getFile()));
         // String s = Paths.get("").toAbsolutePath().toString();
         ServiceProviderInfoRender render = new ServiceProviderInfoRender("../temp/");
-        String retPath = render.renderDocx(new ServiceProviderInfo("宇宙公司", null, LocalDate.now(), "要易"), content);
+        String retPath = render.renderDocx(
+            ServiceProviderInfo.newBuilder().setName("宇宙公司").setType("服务商").build(),
+            content);
 
         assertTrue(retPath.length() > 0);
     }