From 1395da944183e804f6549372a473568d03cbd53f Mon Sep 17 00:00:00 2001 From: ridwan Date: Wed, 3 Dec 2025 13:38:32 +0700 Subject: [PATCH] update buktipengeluaranbarang --- .../controller/ReportingController.java | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/reporting/controller/ReportingController.java b/src/main/java/com/reporting/controller/ReportingController.java index dbfeec0..81cd57b 100644 --- a/src/main/java/com/reporting/controller/ReportingController.java +++ b/src/main/java/com/reporting/controller/ReportingController.java @@ -820,7 +820,7 @@ public class ReportingController { jasperPrint = this.reportingService.exportPdfKwitansiCollectingPiutang(norec, PrintBy); response.setContentType("application/pdf"); JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream()); - }finally { + } finally { jasperPrint = null; } } @@ -848,9 +848,21 @@ public class ReportingController { @RequestParam(value = "jabatanMenerima", required = false, defaultValue = "") String jabatanMenerima, @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, ModelAndView mv, HttpServletResponse response) throws Exception { - JasperPrint jasperPrint = this.reportingService.exportPdfdaftarPenerimaBarangFarmasi(norec, idMenyerahkan, idMengetahui, idMenerima, jabatanMenyerahkan, jabatanMengetahui, jabatanMenerima, printBy); - response.setContentType("application/pdf"); - JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream()); + JasperPrint jasperPrint = null; + try { + jasperPrint = this.reportingService.exportPdfdaftarPenerimaBarangFarmasi(norec, idMenyerahkan, idMengetahui, idMenerima, jabatanMenyerahkan, jabatanMengetahui, jabatanMenerima, printBy); + response.setContentType("application/pdf"); + // Gunakan try-with-resources untuk memastikan OutputStream ditutup otomatis, mencegah kebocoran memori + try (OutputStream outputStream = response.getOutputStream()) { + // Ekspor PDF ke stream + JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); + + // Panggil garbage collection secara eksplisit setelah pemrosesan untuk membantu mengelola memori (khususnya saat memproses gambar besar) + System.gc(); + } + } finally { + jasperPrint = null; + } } @RequestMapping(value = {"/bukti-pengeluaran-barang/{norec}"}, method = {RequestMethod.GET}) @@ -863,19 +875,20 @@ public class ReportingController { @RequestParam(value = "jabatanMenerima", required = false, defaultValue = "") String jabatanMenerima, @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, ModelAndView mv, HttpServletResponse response) throws Exception { - JasperPrint jasperPrint = this.reportingService.exportPdfBuktiPengeluaranBarang(norec, idMenyerahkan, idMengetahui, idMenerima, jabatanMenyerahkan, jabatanMengetahui, jabatanMenerima, printBy); - response.setContentType("application/pdf"); - // Gunakan try-with-resources untuk memastikan OutputStream ditutup otomatis, mencegah kebocoran memori - try (OutputStream outputStream = response.getOutputStream()) { - // Ekspor PDF ke stream - JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); + JasperPrint jasperPrint = null; + try { + jasperPrint = this.reportingService.exportPdfBuktiPengeluaranBarang(norec, idMenyerahkan, idMengetahui, idMenerima, jabatanMenyerahkan, jabatanMengetahui, jabatanMenerima, printBy); + response.setContentType("application/pdf"); + // Gunakan try-with-resources untuk memastikan OutputStream ditutup otomatis, mencegah kebocoran memori + try (OutputStream outputStream = response.getOutputStream()) { + // Ekspor PDF ke stream + JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); - // Panggil garbage collection secara eksplisit setelah pemrosesan untuk membantu mengelola memori (khususnya saat memproses gambar besar) - // Catatan: Ini bukan jaminan, tetapi bisa mengurangi risiko OutOfMemoryError - System.gc(); - } catch (Exception e) { - // Log error jika diperlukan (opsional, tambahkan logging sesuai kebutuhan aplikasi) - throw e; // Rethrow untuk menjaga perilaku asli + // Panggil garbage collection secara eksplisit setelah pemrosesan untuk membantu mengelola memori (khususnya saat memproses gambar besar) + System.gc(); + } + } finally { + jasperPrint = null; } }