AcademicAssociationReport.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.yaoyicloud.template;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.Arrays;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import org.springframework.stereotype.Component;
  9. import com.deepoove.poi.XWPFTemplate;
  10. import com.deepoove.poi.config.Configure;
  11. import com.deepoove.poi.config.ConfigureBuilder;
  12. import com.deepoove.poi.data.Texts;
  13. import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
  14. import com.deepoove.poi.policy.RenderPolicy;
  15. import com.yaoyicloud.config.FilerepoProperties;
  16. import com.yaoyicloud.constant.enums.ReportType;
  17. import cn.hutool.core.util.StrUtil;
  18. import lombok.RequiredArgsConstructor;
  19. import lombok.extern.slf4j.Slf4j;
  20. @Slf4j
  21. @Component
  22. @RequiredArgsConstructor
  23. public class AcademicAssociationReport extends AbstractReportExporter {
  24. private final FilerepoProperties filerepoProperties;
  25. @Override
  26. protected String getReportImagePath() {
  27. return filerepoProperties.getReportImagePath();
  28. }
  29. @Override
  30. protected String getTemplate(ReportType reportType, String basePath) {
  31. String reportTemplateFileName = getReportTemplateFileName(reportType);
  32. return basePath + File.separator + reportTemplateFileName;
  33. }
  34. @Override
  35. protected void bindConfigure(ConfigureBuilder builder, Map<String, Object> data) {
  36. LoopRowTableRenderPolicy hackLoopTableRenderPolicy = new LoopRowTableRenderPolicy();
  37. Object checkItemScores = data.get("checkItemScores");
  38. if (checkItemScores != null) {
  39. RenderPolicy scoreRenderPolicy = this.getScoreRenderPolicy();
  40. builder.bind("checkItemScores", scoreRenderPolicy).bind("basicInfoChecks", hackLoopTableRenderPolicy)
  41. .bind("businessAbnormals", hackLoopTableRenderPolicy).bind("dishonestPersons", hackLoopTableRenderPolicy)
  42. .bind("penaltyRecords", hackLoopTableRenderPolicy).bind("taxPenalties", hackLoopTableRenderPolicy)
  43. .bind("severeViolations", hackLoopTableRenderPolicy).bind("questionnaireItems", hackLoopTableRenderPolicy)
  44. .bind("indicators", hackLoopTableRenderPolicy).bind("superiorAuthority", hackLoopTableRenderPolicy);
  45. }
  46. builder.bind("basicInfoChecks", hackLoopTableRenderPolicy)
  47. .bind("businessAbnormals", hackLoopTableRenderPolicy).bind("dishonestPersons", hackLoopTableRenderPolicy)
  48. .bind("penaltyRecords", hackLoopTableRenderPolicy).bind("taxPenalties", hackLoopTableRenderPolicy)
  49. .bind("severeViolations", hackLoopTableRenderPolicy).bind("questionnaireItems", hackLoopTableRenderPolicy)
  50. .bind("indicators", hackLoopTableRenderPolicy).bind("superiorAuthority", hackLoopTableRenderPolicy);
  51. }
  52. @Override
  53. protected String imagePath() {
  54. return filerepoProperties.getReportImagePath();
  55. }
  56. @Override
  57. protected void renderTemplate(String reportTempWordFile, String templatePath, ConfigureBuilder builder,
  58. Map<String, Object> data) throws IOException {
  59. Configure config = builder.build();
  60. XWPFTemplate template = XWPFTemplate.compile(templatePath, config).render(data);
  61. template.writeToFile(reportTempWordFile);
  62. template.close();
  63. }
  64. @Override
  65. protected String getBasicPath() throws IOException {
  66. return filerepoProperties.getBasePath();
  67. }
  68. /**
  69. * 获取模板文件路径
  70. *
  71. * @param reportType
  72. * @return
  73. */
  74. public String getReportTemplateFileName(ReportType reportType) {
  75. return reportType.getType().toLowerCase() + "_template.docx";
  76. }
  77. @Override
  78. protected List<String> getFontPaths() {
  79. return Arrays.asList(filerepoProperties.getSourceHanSansCnFontMediumPath());
  80. }
  81. @Override
  82. public Map<String, Object> processData(Map<String, Object> rawData) throws Exception {
  83. Map<String, Object> processedData = new HashMap<>(rawData);
  84. String docurl1 = (String) processedData.get("docurl1");
  85. if (StrUtil.isNotBlank(docurl1)) {
  86. processedData.put("docurl1", Texts.of(docurl1).link(docurl1).create());
  87. }
  88. if (processedData.containsKey("docurl1Text")) {
  89. int i = 2;
  90. while (processedData.containsKey("docurl" + i)) {
  91. String url = (String) processedData.get("docurl" + i);
  92. if (StrUtil.isNotBlank(url)) {
  93. processedData.put("docurl" + i, Texts.of(url).link(url).create());
  94. }
  95. i++;
  96. }
  97. }
  98. // Process other specific links
  99. processLink(processedData, "socialSecurityDetailsLink");
  100. processLink(processedData, "taxDeclarationImage");
  101. processLink(processedData, "financialInfoLink");
  102. // Process image lists
  103. processImageListToNumberedRenderData("files", processedData);
  104. processImageListToNumberedRenderData("relatedEntitiesImage", processedData);
  105. processImageListToNumberedRenderData("interestConflict", processedData);
  106. processImageListToNumberedRenderData("businessLicenseImage", processedData);
  107. processImageListToNumberedRenderData("legalRegistrationCertImages", processedData);
  108. processImageListToNumberedRenderData("annualInspectionResultImage", processedData);
  109. processImageListToNumberedRenderData("bankCertificationImages", processedData);
  110. processImageListToNumberedRenderData("assessmentLevelCertImage", processedData);
  111. processImageListToNumberedRenderData("fullCharterImage", processedData);
  112. processImageListToNumberedRenderData("topDonorsListImage", processedData);
  113. processImageListToNumberedRenderData("topExpenditureListImage", processedData);
  114. processImageListToNumberedRenderData("managementFilingFormImage", processedData);
  115. processImageListToNumberedRenderData("jigoupinggu", processedData);
  116. processImageListToNumberedRenderData("nianjianjieguo", processedData);
  117. processImageListToNumberedRenderData("branchInfoImage", processedData);
  118. processImageListToNumberedRenderData("principalInfoImage", processedData);
  119. processImageListToNumberedRenderData("projectInfoImage", processedData);
  120. processImageListToNumberedRenderData("otherInfoImage", processedData);
  121. processImageListToNumberedRenderData("zongti", processedData);
  122. return processedData;
  123. }
  124. }