diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java index 42528b465..490947d22 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java @@ -3,6 +3,7 @@ package au.com.royalpay.payment.manage.management.clearing.core; import au.com.royalpay.payment.manage.support.abafile.ABAFile; import au.com.royalpay.payment.manage.tradelog.beans.ClearingLogQuery; import com.alibaba.fastjson.JSONObject; +import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.InputStreamResource; import org.springframework.transaction.annotation.Transactional; @@ -96,5 +97,5 @@ public interface CleanService { void undoSettle(Date date, int clearingId); - InputStreamResource downloadBatchSettleReportXlsx(int batchId); + ByteArrayResource downloadBatchSettleReportXlsx(int batchId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java index a342da2d3..cbc2b3a51 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java @@ -1363,7 +1363,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public InputStreamResource downloadBatchSettleReportXlsx(int batchId) { + public ByteArrayResource downloadBatchSettleReportXlsx(int batchId) { List mchList = clearingDetailMapper.batchReport(batchId); if (mchList.isEmpty()) { throw new NotFoundException("No batch found"); @@ -1385,7 +1385,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { builder.build(bout); bout.flush(); - return new InputStreamResource(new ByteArrayInputStream(bout.toByteArray())) { + return new ByteArrayResource(bout.toByteArray()) { @Override public String getFilename() { return "settle_report_" + DateFormatUtils.format(mchList.get(0).getDate("report_date"), "yyyyMMdd") + "_" + batchId + ".xlsx"; diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java index 27df64f7f..21cb5da8b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java @@ -8,6 +8,7 @@ import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import com.alibaba.fastjson.JSONObject; +import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.InputStreamResource; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -167,7 +168,7 @@ public class SettlementDevController { } @GetMapping("/settle_batches/{batchId}/settle_report_xlsx") - public ResponseEntity getSettlementReportForBatch(@PathVariable int batchId) { + public ResponseEntity getSettlementReportForBatch(@PathVariable int batchId) { return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM) .body(cleanService.downloadBatchSettleReportXlsx(batchId)); }