ReportController.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 java.util.Base64;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. import static com.yaoyicloud.config.SessionInterceptor.SESSION_MAP;
  16. /**
  17. * 报告控制器
  18. *
  19. * @author snows
  20. * @date 2024/10/14
  21. */
  22. @RestController
  23. @RequiredArgsConstructor
  24. @Slf4j
  25. public class ReportController {
  26. private final ReportService reportService;
  27. /**
  28. * 创建Plus版本审核报告
  29. *
  30. * @param resource 请求参数
  31. * @return {@link Boolean } 结果
  32. */
  33. @EasierLog("创建Plus版本审核报告")
  34. @PostMapping("/report/create-report")
  35. public Map<String, Object> createPlusVersionCheckReport(
  36. @Validated @RequestBody ReportDTO.OnCreatePlusVersionReport resource,
  37. HttpServletRequest request
  38. ) throws Exception {
  39. // 1. 解码文件并生成报告
  40. byte[] fileBytes = Base64.getDecoder().decode(resource.getReportTempFile());
  41. String relationId = request.getHeader("relationId");
  42. String reportPath = reportService.createPlusVersionCheckReport(
  43. resource.getReportType(),
  44. resource.getData(),
  45. fileBytes,
  46. resource.getReportBastPath(),
  47. Long.valueOf(relationId),
  48. request,
  49. resource.getModuleType(),
  50. resource.getName(),
  51. resource.getLevelCount(),
  52. resource.getTenantName()
  53. );
  54. String sessionId = SESSION_MAP.get(relationId);
  55. // 2. 线程安全地更新 Session 中的报告路径列表
  56. // 3. 返回响应
  57. Map<String, Object> response = new HashMap<>();
  58. response.put("reportResult", reportPath);
  59. response.put("sessionId", sessionId);
  60. response.put("reportResult", reportPath);
  61. return response;
  62. }
  63. }