IndexController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package org.example.mybatisplus.Controller;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import io.swagger.annotations.ApiOperation;
  4. import io.swagger.annotations.ApiParam;
  5. import org.example.mybatisplus.model.auto.CmsEnterpriseRiskInfoCheckBO;
  6. import org.example.mybatisplus.model.auto.CmsEnterpriseRiskInfoDeclaration;
  7. import org.example.mybatisplus.model.auto.CmsEnterpriseRiskQxbInfoBO;
  8. import org.example.mybatisplus.module.AuditResult;
  9. import org.example.mybatisplus.module.BasicInfo;
  10. import org.example.mybatisplus.module.ServiceProviderAuditReport;
  11. import org.example.mybatisplus.module.vo.ServiceProviderInfo;
  12. import org.example.mybatisplus.tools.WordPoiExporter;
  13. import org.springframework.core.io.FileSystemResource;
  14. import org.springframework.core.io.Resource;
  15. import org.springframework.http.HttpHeaders;
  16. import org.springframework.http.MediaType;
  17. import org.springframework.http.ResponseEntity;
  18. import org.springframework.web.bind.annotation.GetMapping;
  19. import org.springframework.web.bind.annotation.RestController;
  20. import java.io.*;
  21. import java.util.Collections;
  22. import java.util.List;
  23. import java.util.Map;
  24. @ApiOperation("控制类")
  25. @RestController
  26. public class IndexController {
  27. public static void main(String[] args) {
  28. String wordFilePath = System.getProperty("user.dir")+File.separator+ "jijinhui.docx";
  29. String wordExportpath = System.getProperty("user.dir")+File.separator+ "jijinhui1.docx";
  30. String pdfFilePath =System.getProperty("user.dir")+File.separator+ "download.pdf";
  31. // todo:
  32. ServiceProviderInfo serviceProviderInfo=new ServiceProviderInfo();
  33. serviceProviderInfo.setName("海潮基金会");
  34. serviceProviderInfo.setReportDate("2025-03-11");
  35. AuditResult auditResult=new AuditResult();
  36. auditResult.setAuditDate("2025-03-11");
  37. auditResult.setScore("222");
  38. auditResult.setOpinion("test");
  39. auditResult.setMocaRating("test");
  40. auditResult.setDonationIncomeScale("test");
  41. auditResult.setManagementExpense("test");
  42. auditResult.setOperationYears("2025");
  43. auditResult.setPublicExpenseGrowth("test");
  44. BasicInfo basicInfo = new BasicInfo();
  45. // ...
  46. // 最后把所有片段合成一个完整报告
  47. ServiceProviderAuditReport report=new ServiceProviderAuditReport();
  48. report.setServiceProviderInfo(serviceProviderInfo);
  49. report.setAuditResult(auditResult);
  50. report.setBasicInfo(basicInfo);
  51. try {
  52. JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(report));
  53. // 生成Word文档
  54. WordPoiExporter.init(wordFilePath,wordExportpath,jsonObject);
  55. // 将Word文档转换为PDF
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. //只要接口中,返回值存在实体类,就会被扫描到swagger中
  61. @GetMapping("/export")
  62. public ResponseEntity<Resource> export(@ApiParam("param")String param /* todo: 参数:服务商ID,校验ID,报告类型*/){
  63. String wordFilePath = System.getProperty("user.dir")+File.separator+ "jijinhui.docx";
  64. String wordExportpath = System.getProperty("user.dir")+File.separator+ "jijinhui1.docx";
  65. String pdfFilePath =System.getProperty("user.dir")+File.separator+ "download.pdf";
  66. // todo:
  67. ServiceProviderInfo serviceProviderInfo=new ServiceProviderInfo();
  68. serviceProviderInfo.setName("海潮基金会");
  69. serviceProviderInfo.setReportDate("2025-03-24");
  70. // 1. getWordTemplate for BasicInfo
  71. // 2. retrieve data
  72. // 2.1 get CmsEnterpriseRiskQxbInfoBO
  73. CmsEnterpriseRiskQxbInfoBO cmsEnterpriseRiskQxbInfoBO = org.example.mybatisplus.model.auto.CmsEnterpriseRiskQxbInfoBO.builder().build(); // mock
  74. CmsEnterpriseRiskInfoDeclaration cmsEnterpriseRiskInfoDeclaration = new CmsEnterpriseRiskInfoDeclaration(); // mock
  75. CmsEnterpriseRiskInfoCheckBO cmsEnterpriseRiskInfoCheckBO = new CmsEnterpriseRiskInfoCheckBO();
  76. // 3. fill BasicInfo
  77. BasicInfo basicInfo = new BasicInfo();
  78. cmsEnterpriseRiskQxbInfoBO.fillBasicInfoVO(basicInfo);
  79. cmsEnterpriseRiskInfoDeclaration.fillBasicInfoVO(basicInfo);
  80. cmsEnterpriseRiskInfoCheckBO.fillBasicInfoVO(basicInfo);
  81. // 4. render WordTemplate with BasicInfo
  82. // ...
  83. // 最后把所有片段合成一个完整报告
  84. ServiceProviderAuditReport report=new ServiceProviderAuditReport();
  85. report.setServiceProviderInfo(serviceProviderInfo);
  86. report.setBasicInfo(basicInfo);
  87. try {
  88. JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(report));
  89. // 生成Word文档
  90. WordPoiExporter.init(wordFilePath,wordExportpath,jsonObject);
  91. // 将Word文档转换为PDF
  92. WordPoiExporter.convert(wordExportpath, pdfFilePath);
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. }
  96. File file = new File(wordExportpath);
  97. Resource resource = new FileSystemResource(file);
  98. HttpHeaders headers = new HttpHeaders();
  99. headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName());
  100. return ResponseEntity.ok()
  101. .headers(headers)
  102. .contentLength(file.length())
  103. .contentType(MediaType.APPLICATION_PDF)
  104. .body(resource);
  105. }
  106. }