12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package com.yaoyicloud.controller;
- import com.yaoyicloud.annotation.EasierLog;
- import com.yaoyicloud.dto.ReportDTO;
- import com.yaoyicloud.service.ReportService;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RestController;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Base64;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 报告控制器
- *
- * @author snows
- * @date 2024/10/14
- */
- @RestController
- @RequiredArgsConstructor
- @Slf4j
- public class ReportController {
- private final ReportService reportService;
- /**
- * 创建Plus版本审核报告
- *
- * @param resource 请求参数
- * @return {@link Boolean } 结果
- */
- @EasierLog("创建Plus版本审核报告")
- @PostMapping("/report/create-report")
- public Map<String, Object>
- createPlusVersionCheckReport(@Validated @RequestBody ReportDTO.OnCreatePlusVersionReport resource,
- HttpServletRequest request) throws IOException {
- byte[] fileBytes = Base64.getDecoder().decode(resource.getReportTempFile());
- synchronized (this) {
- String reportPath = reportService.createPlusVersionCheckReport(
- resource.getReportType(),
- resource.getData(),
- fileBytes,
- resource.getReportBastPath(),
- resource.getRelationId()
- );
- //把结果保存到session中 一个relationId一个session 这样就把多个结果都保存到一个session中,可以获取路径做拼接
- //后续 session.removeAttribute清理数据。
- HttpSession session = request.getSession();
- String relationId = String.valueOf(resource.getRelationId());
- List<String> reportPaths = (List<String>) session.getAttribute(relationId);
- if (reportPaths == null) {
- reportPaths = new ArrayList<>();
- session.setAttribute(relationId, reportPaths);
- }
- Map<String, Object> response = new HashMap<>();
- response.put("reportResult", reportPath);
- response.put("sessionId", request.getSession().getId()); // Use the provided session ID
- return response;
- }
- }
- }
|