IndexController.java 5.9 KB

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