123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package com.yaoyicloud.template;
- import java.io.File;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.springframework.stereotype.Component;
- import com.deepoove.poi.XWPFTemplate;
- import com.deepoove.poi.config.Configure;
- import com.deepoove.poi.config.ConfigureBuilder;
- import com.deepoove.poi.data.Texts;
- import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
- import com.deepoove.poi.policy.RenderPolicy;
- import com.yaoyicloud.config.FilerepoProperties;
- import com.yaoyicloud.constant.enums.ReportType;
- import cn.hutool.core.util.StrUtil;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- @Slf4j
- @Component
- @RequiredArgsConstructor
- public class AcademicAssociationReport extends AbstractReportExporter {
- private final FilerepoProperties filerepoProperties;
- @Override
- protected String getReportImagePath() {
- return filerepoProperties.getReportImagePath();
- }
- @Override
- protected String getTemplate(ReportType reportType, String basePath) {
- String reportTemplateFileName = getReportTemplateFileName(reportType);
- return basePath + File.separator + reportTemplateFileName;
- }
- @Override
- protected void bindConfigure(ConfigureBuilder builder, Map<String, Object> data) {
- LoopRowTableRenderPolicy hackLoopTableRenderPolicy = new LoopRowTableRenderPolicy();
- Object checkItemScores = data.get("checkItemScores");
- if (checkItemScores != null) {
- RenderPolicy scoreRenderPolicy = this.getScoreRenderPolicy();
- builder.bind("checkItemScores", scoreRenderPolicy).bind("basicInfoChecks", hackLoopTableRenderPolicy)
- .bind("businessAbnormals", hackLoopTableRenderPolicy).bind("dishonestPersons", hackLoopTableRenderPolicy)
- .bind("penaltyRecords", hackLoopTableRenderPolicy).bind("taxPenalties", hackLoopTableRenderPolicy)
- .bind("severeViolations", hackLoopTableRenderPolicy).bind("questionnaireItems", hackLoopTableRenderPolicy)
- .bind("indicators", hackLoopTableRenderPolicy).bind("superiorAuthority", hackLoopTableRenderPolicy);
- }
- builder.bind("basicInfoChecks", hackLoopTableRenderPolicy)
- .bind("businessAbnormals", hackLoopTableRenderPolicy).bind("dishonestPersons", hackLoopTableRenderPolicy)
- .bind("penaltyRecords", hackLoopTableRenderPolicy).bind("taxPenalties", hackLoopTableRenderPolicy)
- .bind("severeViolations", hackLoopTableRenderPolicy).bind("questionnaireItems", hackLoopTableRenderPolicy)
- .bind("indicators", hackLoopTableRenderPolicy).bind("superiorAuthority", hackLoopTableRenderPolicy);
- }
- @Override
- protected String imagePath() {
- return filerepoProperties.getReportImagePath();
- }
- @Override
- protected void renderTemplate(String reportTempWordFile, String templatePath, ConfigureBuilder builder,
- Map<String, Object> data) throws IOException {
- Configure config = builder.build();
- XWPFTemplate template = XWPFTemplate.compile(templatePath, config).render(data);
- template.writeToFile(reportTempWordFile);
- template.close();
- }
- @Override
- protected String getBasicPath() throws IOException {
- return filerepoProperties.getBasePath();
- }
- /**
- * 获取模板文件路径
- *
- * @param reportType
- * @return
- */
- public String getReportTemplateFileName(ReportType reportType) {
- return reportType.getType().toLowerCase() + "_template.docx";
- }
- @Override
- protected List<String> getFontPaths() {
- return Arrays.asList(filerepoProperties.getSourceHanSansCnFontMediumPath());
- }
- @Override
- public Map<String, Object> processData(Map<String, Object> rawData) throws Exception {
- Map<String, Object> processedData = new HashMap<>(rawData);
- String docurl1 = (String) processedData.get("docurl1");
- if (StrUtil.isNotBlank(docurl1)) {
- processedData.put("docurl1", Texts.of(docurl1).link(docurl1).create());
- }
- if (processedData.containsKey("docurl1Text")) {
- int i = 2;
- while (processedData.containsKey("docurl" + i)) {
- String url = (String) processedData.get("docurl" + i);
- if (StrUtil.isNotBlank(url)) {
- processedData.put("docurl" + i, Texts.of(url).link(url).create());
- }
- i++;
- }
- }
- // Process other specific links
- processLink(processedData, "socialSecurityDetailsLink");
- processLink(processedData, "taxDeclarationImage");
- processLink(processedData, "financialInfoLink");
- // Process image lists
- processImageListToNumberedRenderData("files", processedData);
- processImageListToNumberedRenderData("relatedEntitiesImage", processedData);
- processImageListToNumberedRenderData("interestConflict", processedData);
- processImageListToNumberedRenderData("businessLicenseImage", processedData);
- processImageListToNumberedRenderData("legalRegistrationCertImages", processedData);
- processImageListToNumberedRenderData("annualInspectionResultImage", processedData);
- processImageListToNumberedRenderData("bankCertificationImages", processedData);
- processImageListToNumberedRenderData("assessmentLevelCertImage", processedData);
- processImageListToNumberedRenderData("fullCharterImage", processedData);
- processImageListToNumberedRenderData("topDonorsListImage", processedData);
- processImageListToNumberedRenderData("topExpenditureListImage", processedData);
- processImageListToNumberedRenderData("managementFilingFormImage", processedData);
- processImageListToNumberedRenderData("jigoupinggu", processedData);
- processImageListToNumberedRenderData("nianjianjieguo", processedData);
- processImageListToNumberedRenderData("branchInfoImage", processedData);
- processImageListToNumberedRenderData("principalInfoImage", processedData);
- processImageListToNumberedRenderData("projectInfoImage", processedData);
- processImageListToNumberedRenderData("otherInfoImage", processedData);
- processImageListToNumberedRenderData("zongti", processedData);
- return processedData;
- }
- }
|