From 2172342c6b6ec0620785b1564668f871b6475fbc Mon Sep 17 00:00:00 2001 From: HopeLi <1278288511@qq.com> Date: Fri, 6 Jun 2025 12:16:38 +0800 Subject: [PATCH] =?UTF-8?q?0605=20ljc=20=20=20=E6=8A=A5=E5=91=8A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/casic/ci/api/ReportController.java | 7 +++--- .../process/service/report/ReportService.java | 3 ++- .../report/impl/ReportServiceImpl.java | 24 +++++++++---------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ReportController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ReportController.java index 31152016..1baed63f 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ReportController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ReportController.java @@ -12,6 +12,7 @@ import jakarta.annotation.Resource; import jakarta.annotation.security.PermitAll; import jakarta.validation.Valid; import org.jetbrains.annotations.NotNull; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -53,11 +54,11 @@ public class ReportController { @PostMapping(path="/downLoadReport") - public CommonResult downLoadReport(@RequestBody @NotNull @Valid BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + public CommonResult> downLoadReport(@RequestBody @NotNull @Valid BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { - String xmTraceId = reportService.downLoadReport(req); + ResponseEntity fileInputStream = reportService.downLoadReport(req); - return CommonResult.success(xmTraceId); + return CommonResult.success(fileInputStream); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/ReportService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/ReportService.java index d090d6de..c4a51adf 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/ReportService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/ReportService.java @@ -6,6 +6,7 @@ import cd.casic.ci.process.process.dataObject.base.BaseIdPageReq; import cd.casic.ci.process.process.dataObject.base.BaseIdReq; import cd.casic.framework.commons.pojo.PageResult; import jakarta.validation.Valid; +import org.springframework.http.ResponseEntity; import java.security.KeyManagementException; import java.security.KeyStoreException; @@ -23,5 +24,5 @@ public interface ReportService{ ReportResp deleteReport(@Valid ReportDeleteReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException; - String downLoadReport(@Valid BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException; + ResponseEntity downLoadReport(@Valid BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException; } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/impl/ReportServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/impl/ReportServiceImpl.java index 1ab22047..a292fbc7 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/impl/ReportServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/report/impl/ReportServiceImpl.java @@ -12,9 +12,7 @@ import cd.casic.framework.commons.pojo.PageResult; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; +import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -97,7 +95,7 @@ public class ReportServiceImpl implements ReportService { @Override - public String downLoadReport(BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + public ResponseEntity downLoadReport(BaseIdReq req) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { RestTemplate restTemplate = getRestTemplateWithoutSANCheck(); String reportDeleteUrl = ConstantContextHolder.getScaIp() + PATH; String body = buildDownloadRequestBody(req); @@ -106,17 +104,19 @@ public class ReportServiceImpl implements ReportService { HttpEntity requestEntity = new HttpEntity<>(body, headers); log.info("报告下载接口:" + reportDeleteUrl); - JSONObject response = restTemplate.postForObject(reportDeleteUrl, requestEntity, JSONObject.class); - String message = response.getString("message"); - if (message.equals("success")) { - ReportResp reportResp = new ReportResp(); + ResponseEntity responseEntity = restTemplate.postForEntity(reportDeleteUrl, requestEntity, byte[].class); + + if (responseEntity.getStatusCode() == HttpStatus.OK && responseEntity.hasBody()) { log.info("===============报告下载接口成功================="); - return response.getString("xmTraceId"); - - } else { + // 构建返回给前端的 ResponseEntity + return ResponseEntity.ok() + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=report.bin") + .body(responseEntity.getBody()); + }else { log.error("===============报告下载接口失败================="); - throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"删除报告失败"); + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(), "删除报告失败"); } }