ReportController.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.yaoyicloud.controller;
  2. import com.yaoyicloud.annotation.EasierLog;
  3. import com.yaoyicloud.dto.ReportDTO;
  4. import com.yaoyicloud.service.ReportService;
  5. import org.springframework.validation.annotation.Validated;
  6. import org.springframework.web.bind.annotation.PostMapping;
  7. import org.springframework.web.bind.annotation.RequestBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import lombok.RequiredArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpSession;
  13. import java.util.ArrayList;
  14. import java.util.Base64;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. /**
  19. * 报告控制器
  20. *
  21. * @author snows
  22. * @date 2024/10/14
  23. */
  24. @RestController
  25. @RequiredArgsConstructor
  26. @Slf4j
  27. public class ReportController {
  28. private final ReportService reportService;
  29. /**
  30. * 创建Plus版本审核报告
  31. *
  32. * @param resource 请求参数
  33. * @return {@link Boolean } 结果
  34. */
  35. @EasierLog("创建Plus版本审核报告")
  36. @PostMapping("/report/create-report")
  37. public Map<String, Object>
  38. createPlusVersionCheckReport(@Validated @RequestBody ReportDTO.OnCreatePlusVersionReport resource,
  39. HttpServletRequest request) throws Exception {
  40. byte[] fileBytes = Base64.getDecoder().decode(resource.getReportTempFile());
  41. synchronized (this) {
  42. String reportPath = reportService.createPlusVersionCheckReport(
  43. resource.getReportType(),
  44. resource.getData(),
  45. fileBytes,
  46. resource.getReportBastPath(),
  47. resource.getRelationId()
  48. );
  49. //把结果保存到session中 一个relationId一个session 这样就把多个结果都保存到一个session中,可以获取路径做拼接
  50. //后续 session.removeAttribute清理数据。
  51. HttpSession session = request.getSession();
  52. String relationId = String.valueOf(resource.getRelationId());
  53. @SuppressWarnings("unchecked")
  54. List<String> reportPaths = (List<String>) session.getAttribute(relationId);
  55. if (reportPaths == null) {
  56. reportPaths = new ArrayList<>();
  57. session.setAttribute(relationId, reportPaths);
  58. }
  59. Map<String, Object> response = new HashMap<>();
  60. response.put("reportResult", reportPath);
  61. response.put("sessionId", request.getSession().getId()); // Use the provided session ID
  62. return response;
  63. }
  64. }
  65. }