ReportUpdateController.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.yaoyicloud.controller;
  2. import com.yaoyicloud.annotation.EasierLog;
  3. import com.yaoyicloud.config.CommonDataCache;
  4. import com.yaoyicloud.config.RelationCounterRedisUtil;
  5. import com.yaoyicloud.dto.ReportDTO;
  6. import com.yaoyicloud.entity.ReportGenerationResult;
  7. import com.yaoyicloud.service.ReportUpdateService;
  8. import com.yaoyicloud.tools.DocxUtil;
  9. import org.springframework.validation.annotation.Validated;
  10. import org.springframework.web.bind.annotation.PostMapping;
  11. import org.springframework.web.bind.annotation.RequestBody;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import lombok.RequiredArgsConstructor;
  14. import lombok.extern.slf4j.Slf4j;
  15. import javax.servlet.http.HttpServletRequest;
  16. import java.util.HashMap;
  17. import java.util.Map;
  18. import static com.yaoyicloud.config.SessionInterceptor.SESSION_MAP;
  19. /**
  20. * 报告控制器
  21. *
  22. * @author snows
  23. * @date 2024/10/14
  24. */
  25. @RestController
  26. @RequiredArgsConstructor
  27. @Slf4j
  28. public class ReportUpdateController {
  29. private final ReportUpdateService reportService;
  30. private final RelationCounterRedisUtil relationCounterRedisUtil;
  31. private final CommonDataCache commonDataCache;
  32. private final DocxUtil docxUtil;
  33. /**
  34. * 创建Plus版本审核报告
  35. *
  36. * @param resource 请求参数
  37. * @return {@link Boolean } 结果
  38. */
  39. @EasierLog("创建Plus版本审核报告")
  40. @PostMapping("/report/create-report-new")
  41. public Map<String, Object> createPlusVersionCheckReport(
  42. @Validated @RequestBody ReportDTO.OnCreatePlusVersionReport resource,
  43. HttpServletRequest request) throws Exception {
  44. // 1. 解码文件并生成报告
  45. String relationId = request.getHeader("relationId");
  46. ReportGenerationResult plusVersionCheckReport = reportService.createPlusVersionCheckReport(
  47. resource.getData(),
  48. Long.valueOf(relationId),
  49. resource.getModuleType());
  50. String sessionId = SESSION_MAP.get(relationId);
  51. // 3. 构建响应
  52. Map<String, Object> response = new HashMap<>();
  53. // 根据是否是最后一个模块决定返回哪个路径
  54. if (plusVersionCheckReport.isLastModule() && plusVersionCheckReport.getMergedReportPath() != null) {
  55. // word 转pdf
  56. commonDataCache.removeSessionData(relationId);
  57. relationCounterRedisUtil.delete(Long.valueOf(relationId));
  58. SESSION_MAP.remove(relationId.toString());
  59. String pdfDocumentPath = docxUtil.wordToPdf(plusVersionCheckReport.getMergedReportPath());
  60. response.put("reportResult", pdfDocumentPath);
  61. response.put("isFinalReport", true);
  62. } else {
  63. response.put("reportResult", plusVersionCheckReport.getModulePath());
  64. response.put("isFinalReport", false);
  65. }
  66. response.put("sessionId", sessionId);
  67. return response;
  68. }
  69. }