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.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.Base64;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * 报告控制器
  21. *
  22. * @author snows
  23. * @date 2024/10/14
  24. */
  25. @RestController
  26. @RequiredArgsConstructor
  27. @Slf4j
  28. public class ReportController {
  29. private final ReportService reportService;
  30. /**
  31. * 创建Plus版本审核报告
  32. *
  33. * @param resource 请求参数
  34. * @return {@link Boolean } 结果
  35. */
  36. @EasierLog("创建Plus版本审核报告")
  37. @PostMapping("/report/create-report")
  38. public Map<String, Object>
  39. createPlusVersionCheckReport(@Validated @RequestBody ReportDTO.OnCreatePlusVersionReport resource,
  40. HttpServletRequest request) throws IOException {
  41. byte[] fileBytes = Base64.getDecoder().decode(resource.getReportTempFile());
  42. synchronized (this) {
  43. String reportPath = reportService.createPlusVersionCheckReport(
  44. resource.getReportType(),
  45. resource.getData(),
  46. fileBytes,
  47. resource.getReportBastPath(),
  48. resource.getRelationId()
  49. );
  50. //把结果保存到session中 一个relationId一个session 这样就把多个结果都保存到一个session中,可以获取路径做拼接
  51. //后续 session.removeAttribute清理数据。
  52. HttpSession session = request.getSession();
  53. String relationId = String.valueOf(resource.getRelationId());
  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. }