EntPromotionDetailsRender.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.yaoyicloud.render.cso;
  2. import java.io.IOException;
  3. import java.util.Map;
  4. import com.deepoove.poi.policy.RenderPolicy;
  5. import com.yaoyicloud.easier.common.file.core.FileProperties;
  6. import com.yaoyicloud.easier.common.file.core.FileTemplate;
  7. import com.yaoyicloud.factory.CSOAbstractRender;
  8. import org.apache.commons.collections4.MapUtils;
  9. import com.deepoove.poi.config.Configure;
  10. import com.deepoove.poi.config.ConfigureBuilder;
  11. import com.fasterxml.jackson.core.type.TypeReference;
  12. import com.fasterxml.jackson.databind.ObjectMapper;
  13. import com.google.protobuf.util.JsonFormat;
  14. import com.yaoyicloud.config.CommonDataCache;
  15. import com.yaoyicloud.config.FilerepoProperties;
  16. import com.yaoyicloud.message.CSOProtos;
  17. import lombok.extern.slf4j.Slf4j;
  18. @Slf4j
  19. public final class EntPromotionDetailsRender extends CSOAbstractRender {
  20. private final FilerepoProperties filerepoProperties;
  21. private final CommonDataCache commonDataCache;
  22. public EntPromotionDetailsRender(String cwd, FileTemplate ossTemplate, FileProperties properties,
  23. FilerepoProperties filerepoProperties,
  24. CommonDataCache commonDataCache) {
  25. super(cwd, ossTemplate, properties);
  26. this.filerepoProperties = filerepoProperties;
  27. this.commonDataCache = commonDataCache;
  28. }
  29. @Override
  30. protected Map<String, Object> renderDocx(String info, String relationId, Integer counter) throws IOException {
  31. log.info("开始渲染CSO企业报告推广明细模块,relationId: {}", relationId);
  32. CSOProtos.PromotionDetails.Builder promotionSummary = CSOProtos.PromotionDetails.newBuilder();
  33. JsonFormat.parser().merge(info, promotionSummary);
  34. CSOProtos.PromotionDetails defaultInstance = CSOProtos.PromotionDetails.getDefaultInstance();
  35. CSOProtos.PromotionDetails mergedProto = defaultInstance.toBuilder()
  36. .mergeFrom(promotionSummary.build())
  37. .build();
  38. String completeJson = JsonFormat.printer()
  39. .includingDefaultValueFields()
  40. .print(mergedProto);
  41. ObjectMapper objectMapper = new ObjectMapper();
  42. Map<String, Object> data = objectMapper.readValue(completeJson, new TypeReference<Map<String, Object>>() {});
  43. // 将用户积分数据添加到渲染数据中
  44. Map<String, Object> commonDataCacheData = commonDataCache.getData(relationId);
  45. if (MapUtils.isNotEmpty(commonDataCacheData)) {
  46. data.putAll(commonDataCacheData);
  47. }
  48. data.put("levelInteger", counter);
  49. fillDefaultValues(data);
  50. return data;
  51. }
  52. @Override
  53. protected ConfigureBuilder builder(Map<String, Object> data) {
  54. ConfigureBuilder builder = Configure.builder();
  55. RenderPolicy policy = this.indicatorsRenderPolicyToProtobuf();
  56. builder.bind("userTasks", policy);
  57. builder.bind("tasks", policy);
  58. builder.bind("meetingList", policy);
  59. builder.bind("taskType515253List", policy);
  60. builder.bind("taskType55List", policy);
  61. builder.bind("taskType5657List", policy);
  62. builder.bind("taskType811List", policy);
  63. builder.bind("taskType910List", policy);
  64. builder.bind("policyInfoCollectList", policy);
  65. builder.bind("competingProductsInfoCollectList", policy);
  66. builder.bind("inventoryInfoCollectList", policy);
  67. builder.bind("taskType16List", policy);
  68. builder.bind("taskType18List", policy);
  69. builder.bind("taskType15List", policy);
  70. builder.bind("taskType45List", policy);
  71. builder.bind("taskType54List", policy);
  72. builder.bind("taskType74List", policy);
  73. builder.bind("taskType75List", policy);
  74. builder.bind("taskType76List", policy);
  75. builder.bind("taskType7879List", policy);
  76. builder.bind("taskType80List", policy);
  77. builder.bind("taskType81List", policy);
  78. builder.bind("taskType38List", policy);
  79. builder.bind("taskType394041List", policy);
  80. builder.bind("taskType46List", policy);
  81. builder.bind("taskType47484950List", policy);
  82. builder.bind("taskType19List", policy);
  83. builder.bind("taskType343536List", policy);
  84. builder.bind("taskType87List", policy);
  85. builder.bind("taskType86List", policy);
  86. builder.bind("taskType85List", policy);
  87. builder.bind("customerVisitList", policy);
  88. builder.bind("taskType424344List", policy);
  89. return builder;
  90. }
  91. @Override
  92. protected String getBasicPath() throws IOException {
  93. return filerepoProperties.getBasePath();
  94. }
  95. @Override
  96. protected String getReportImagePath() {
  97. return filerepoProperties.getReportImagePath();
  98. }
  99. /**
  100. * 填充默认值,确保所有必要字段都存在
  101. */
  102. @SuppressWarnings("checkstyle:MethodLength")
  103. private void fillDefaultValues(Map<String, Object> data) {
  104. processJsonData(data, "userTasks");
  105. processJsonData(data, "tasks");
  106. processJsonData(data, "meetingList");
  107. processJsonData(data, "taskType515253List");
  108. processJsonData(data, "taskType55List");
  109. processJsonData(data, "taskType5657List");
  110. processJsonData(data, "taskType811List");
  111. processJsonData(data, "taskType910List");
  112. processJsonData(data, "policyInfoCollectList");
  113. processJsonData(data, "competingProductsInfoCollectList");
  114. processJsonData(data, "inventoryInfoCollectList");
  115. processJsonData(data, "taskType16List");
  116. processJsonData(data, "taskType18List");
  117. processJsonData(data, "taskType15List");
  118. processJsonData(data, "taskType45List");
  119. processJsonData(data, "taskType54List");
  120. processJsonData(data, "taskType74List");
  121. processJsonData(data, "taskType75List");
  122. processJsonData(data, "taskType76List");
  123. processJsonData(data, "taskType7879List");
  124. processJsonData(data, "taskType80List");
  125. processJsonData(data, "taskType81List");
  126. processJsonData(data, "taskType38List");
  127. processJsonData(data, "taskType394041List");
  128. processJsonData(data, "taskType46List");
  129. processJsonData(data, "taskType47484950List");
  130. processJsonData(data, "taskType19List");
  131. processJsonData(data, "taskType343536List");
  132. processJsonData(data, "taskType85List");
  133. processJsonData(data, "taskType86List");
  134. processJsonData(data, "taskType87List");
  135. processJsonData(data, "customerVisitList");
  136. processJsonData(data, "taskType424344List");
  137. processJsonData(data, "taskType801List");
  138. }
  139. }