From 6f7e5a838725e0b2f6a53e381e634a00e6798367 Mon Sep 17 00:00:00 2001 From: ridwan Date: Tue, 26 May 2026 14:42:25 +0700 Subject: [PATCH] update laporan rekap wtrj,visit,resum,kualiatas mutu --- .../controller/ReportingController.java | 240 ++++++++++++++++++ .../java/com/reporting/dao/ReportingDao.java | 90 +++++++ .../reporting/service/ReportingService.java | 65 +++++ src/main/resources/application.properties | 2 +- 4 files changed, 396 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/reporting/controller/ReportingController.java b/src/main/java/com/reporting/controller/ReportingController.java index c73756b..448913d 100644 --- a/src/main/java/com/reporting/controller/ReportingController.java +++ b/src/main/java/com/reporting/controller/ReportingController.java @@ -2346,4 +2346,244 @@ public class ReportingController { } } + @RequestMapping(value = {"/laporan-rekap-wtrj"}, method = {RequestMethod.GET}) + public void handleLpRekapWTRJ( + @RequestParam("tglAwal") String tglAwal, + @RequestParam("tglAkhir") String tglAkhir, + @RequestParam(value = "idUnit", required = false, defaultValue = "") Integer idUnit, + @RequestParam(value = "idDokter", required = false, defaultValue = "") Integer idDokter, + @RequestParam(value = "format", required = false, defaultValue = "pdf") String format, + @RequestParam(value = "mode", required = false, defaultValue = "download") String mode, + @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, + HttpServletResponse response) throws Exception { + + JasperPrint jasperPrint = null; + try { + // Generate report (common for both PDF/Excel) + jasperPrint = this.reportingService.exportLpRekapWTRJ(tglAwal, tglAkhir, idUnit, idDokter, printBy); + + if ("excel".equalsIgnoreCase(format)) { + // Handle Excel export + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=Laporan_Rekap_Waktu_Tunggu_Rawat_Jalan.xlsx"); + + JRXlsxExporter exporter = new JRXlsxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsxReportConfiguration config = new SimpleXlsxReportConfiguration(); + config.setOnePagePerSheet(false); + config.setDetectCellType(true); + config.setCollapseRowSpan(false); + config.setRemoveEmptySpaceBetweenRows(true); + config.setWhitePageBackground(false); + exporter.setConfiguration(config); + exporter.exportReport(); + + } else { + // Handle PDF preview + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=Laporan_Rekap_Waktu_Tunggu_Rawat_Jalan.pdf"); + + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + exporter.exportReport(); + } + } finally { + jasperPrint = null; + } + } + + @RequestMapping(value = {"/laporan-rekap-visit"}, method = {RequestMethod.GET}) + public void handleLpRekapVisit( + @RequestParam("tglAwal") String tglAwal, + @RequestParam("tglAkhir") String tglAkhir, + @RequestParam(value = "idUnit", required = false, defaultValue = "") Integer idUnit, + @RequestParam(value = "idDokter", required = false, defaultValue = "") Integer idDokter, + @RequestParam(value = "format", required = false, defaultValue = "pdf") String format, + @RequestParam(value = "mode", required = false, defaultValue = "download") String mode, + @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, + HttpServletResponse response) throws Exception { + + JasperPrint jasperPrint = null; + try { + // Generate report (common for both PDF/Excel) + jasperPrint = this.reportingService.exportLpRekapVisit(tglAwal, tglAkhir, idUnit, idDokter, printBy); + + if ("excel".equalsIgnoreCase(format)) { + // Handle Excel export + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=Laporan_Rekap_Ketepatan_Waktu_Visit.xlsx"); + + JRXlsxExporter exporter = new JRXlsxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsxReportConfiguration config = new SimpleXlsxReportConfiguration(); + config.setOnePagePerSheet(false); + config.setDetectCellType(true); + config.setCollapseRowSpan(false); + config.setRemoveEmptySpaceBetweenRows(true); + config.setWhitePageBackground(false); + exporter.setConfiguration(config); + exporter.exportReport(); + + } else { + // Handle PDF preview + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=Laporan_Rekap_Ketepatan_Waktu_Visit.pdf"); + + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + exporter.exportReport(); + } + } finally { + jasperPrint = null; + } + } + + @RequestMapping(value = {"/laporan-rekap-resume-medis"}, method = {RequestMethod.GET}) + public void handleLpRekapResumeMedis( + @RequestParam("tglAwal") String tglAwal, + @RequestParam("tglAkhir") String tglAkhir, + @RequestParam(value = "idUnit", required = false, defaultValue = "") Integer idUnit, + @RequestParam(value = "idDokter", required = false, defaultValue = "") Integer idDokter, + @RequestParam(value = "format", required = false, defaultValue = "pdf") String format, + @RequestParam(value = "mode", required = false, defaultValue = "download") String mode, + @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, + HttpServletResponse response) throws Exception { + + JasperPrint jasperPrint = null; + try { + // Generate report (common for both PDF/Excel) + jasperPrint = this.reportingService.exportLpRekapResumeMedis(tglAwal, tglAkhir, idUnit, idDokter, printBy); + + if ("excel".equalsIgnoreCase(format)) { + // Handle Excel export + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=Laporan_Rekap_Resume_Medis.xlsx"); + + JRXlsxExporter exporter = new JRXlsxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsxReportConfiguration config = new SimpleXlsxReportConfiguration(); + config.setOnePagePerSheet(false); + config.setDetectCellType(true); + config.setCollapseRowSpan(false); + config.setRemoveEmptySpaceBetweenRows(true); + config.setWhitePageBackground(false); + exporter.setConfiguration(config); + exporter.exportReport(); + + } else { + // Handle PDF preview + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=Laporan_Rekap_Resume_Medis.pdf"); + + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + exporter.exportReport(); + } + } finally { + jasperPrint = null; + } + } + + @RequestMapping(value = {"/laporan-rekap-resume-medis-sdm"}, method = {RequestMethod.GET}) + public void handleLpRekapResumeMedisSDM( + @RequestParam("tglAwal") String tglAwal, + @RequestParam("tglAkhir") String tglAkhir, + @RequestParam(value = "idUnit", required = false, defaultValue = "") Integer idUnit, + @RequestParam(value = "idDokter", required = false, defaultValue = "") Integer idDokter, + @RequestParam(value = "format", required = false, defaultValue = "pdf") String format, + @RequestParam(value = "mode", required = false, defaultValue = "download") String mode, + @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, + HttpServletResponse response) throws Exception { + + JasperPrint jasperPrint = null; + try { + // Generate report (common for both PDF/Excel) + jasperPrint = this.reportingService.exportLpRekapResumMedisSDM(tglAwal, tglAkhir, idUnit, idDokter, printBy); + + if ("excel".equalsIgnoreCase(format)) { + // Handle Excel export + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=Laporan_Rekap_Resume_Medis_SDM.xlsx"); + + JRXlsxExporter exporter = new JRXlsxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsxReportConfiguration config = new SimpleXlsxReportConfiguration(); + config.setOnePagePerSheet(false); + config.setDetectCellType(true); + config.setCollapseRowSpan(false); + config.setRemoveEmptySpaceBetweenRows(true); + config.setWhitePageBackground(false); + exporter.setConfiguration(config); + exporter.exportReport(); + + } else { + // Handle PDF preview + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=Laporan_Rekap_Resume_Medis_SDM.pdf"); + + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + exporter.exportReport(); + } + } finally { + jasperPrint = null; + } + } + + @RequestMapping(value = {"/laporan-rekap-kualitas-mutu-dokter"}, method = {RequestMethod.GET}) + public void handleLpRekapKualitasMutuDokter( + @RequestParam("tglAwal") String tglAwal, + @RequestParam("tglAkhir") String tglAkhir, + @RequestParam(value = "idUnit", required = false, defaultValue = "") Integer idUnit, + @RequestParam(value = "idDokter", required = false, defaultValue = "") Integer idDokter, + @RequestParam(value = "format", required = false, defaultValue = "pdf") String format, + @RequestParam(value = "mode", required = false, defaultValue = "download") String mode, + @RequestParam(value = "printBy", required = false, defaultValue = "") String printBy, + HttpServletResponse response) throws Exception { + + JasperPrint jasperPrint = null; + try { + // Generate report (common for both PDF/Excel) + jasperPrint = this.reportingService.exportLpRekapKualitasMutuDokter(tglAwal, tglAkhir, idUnit, idDokter, printBy); + + if ("excel".equalsIgnoreCase(format)) { + // Handle Excel export + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=Laporan_Rekap_Kualitas_Mutu_Dokter.xlsx"); + + JRXlsxExporter exporter = new JRXlsxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsxReportConfiguration config = new SimpleXlsxReportConfiguration(); + config.setOnePagePerSheet(false); + config.setDetectCellType(true); + config.setCollapseRowSpan(false); + config.setRemoveEmptySpaceBetweenRows(true); + config.setWhitePageBackground(false); + exporter.setConfiguration(config); + exporter.exportReport(); + + } else { + // Handle PDF preview + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline; filename=Laporan_Rekap_Kualitas_Mutu_Dokter.pdf"); + + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + exporter.exportReport(); + } + } finally { + jasperPrint = null; + } + } + } diff --git a/src/main/java/com/reporting/dao/ReportingDao.java b/src/main/java/com/reporting/dao/ReportingDao.java index 20d5ab8..b1d5e80 100644 --- a/src/main/java/com/reporting/dao/ReportingDao.java +++ b/src/main/java/com/reporting/dao/ReportingDao.java @@ -1652,4 +1652,94 @@ public class ReportingDao { return null; } + public JasperPrint exportLpRekapWTRJ(Timestamp tglAwal, Timestamp tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + try (Connection conn = this.jdbcTemplate1.getDataSource().getConnection()) { + String path = jaspersim2DirPath + "rekap_wtrj.jrxml"; + JasperReport jasperReport = JasperCompileManager.compileReport(path); + Map parameters = new HashMap<>(); + parameters.put("tglAwal", tglAwal); + parameters.put("tglAkhir", tglAkhir); + parameters.put("idUnit", idUnit); + parameters.put("idDokter", idDokter); + parameters.put("printBy", printBy); + return JasperFillManager.fillReport(jasperReport, parameters, conn); + } catch (Exception var15) { + LOG.error("Exception at exportLpRekapWTRJ"); + LOG.error(ReportingDao.class, var15); + } + return null; + } + + public JasperPrint exportLpRekapVisit(Timestamp tglAwal, Timestamp tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + try (Connection conn = this.jdbcTemplate1.getDataSource().getConnection()) { + String path = jaspersim2DirPath + "rekap_visit.jrxml"; + JasperReport jasperReport = JasperCompileManager.compileReport(path); + Map parameters = new HashMap<>(); + parameters.put("tglAwal", tglAwal); + parameters.put("tglAkhir", tglAkhir); + parameters.put("idUnit", idUnit); + parameters.put("idDokter", idDokter); + parameters.put("printBy", printBy); + return JasperFillManager.fillReport(jasperReport, parameters, conn); + } catch (Exception var15) { + LOG.error("Exception at exportLpRekapVisit"); + LOG.error(ReportingDao.class, var15); + } + return null; + } + + public JasperPrint exportLpRekapResumeMedis(Timestamp tglAwal, Timestamp tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + try (Connection conn = this.jdbcTemplate1.getDataSource().getConnection()) { + String path = jaspersim2DirPath + "Laporan_rekap_resume.jrxml"; + JasperReport jasperReport = JasperCompileManager.compileReport(path); + Map parameters = new HashMap<>(); + parameters.put("tglAwal", tglAwal); + parameters.put("tglAkhir", tglAkhir); + parameters.put("idUnit", idUnit); + parameters.put("idDokter", idDokter); + parameters.put("printBy", printBy); + return JasperFillManager.fillReport(jasperReport, parameters, conn); + } catch (Exception var15) { + LOG.error("Exception at exportLpRekapResumeMedis"); + LOG.error(ReportingDao.class, var15); + } + return null; + } + + public JasperPrint exportLpRekapResumMedisSDM(Timestamp tglAwal, Timestamp tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + try (Connection conn = this.jdbcTemplate1.getDataSource().getConnection()) { + String path = jaspersim2DirPath + "Laporan_rekap_resume_sdm.jrxml"; + JasperReport jasperReport = JasperCompileManager.compileReport(path); + Map parameters = new HashMap<>(); + parameters.put("tglAwal", tglAwal); + parameters.put("tglAkhir", tglAkhir); + parameters.put("idUnit", idUnit); + parameters.put("idDokter", idDokter); + parameters.put("printBy", printBy); + return JasperFillManager.fillReport(jasperReport, parameters, conn); + } catch (Exception var15) { + LOG.error("Exception at exportLpRekapResumMedisSDM"); + LOG.error(ReportingDao.class, var15); + } + return null; + } + + public JasperPrint exportLpRekapKualitasMutuDokter(Timestamp tglAwal, Timestamp tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + try (Connection conn = this.jdbcTemplate1.getDataSource().getConnection()) { + String path = jaspersim2DirPath + "rekap_kualitas_mutu_dokter.jrxml"; + JasperReport jasperReport = JasperCompileManager.compileReport(path); + Map parameters = new HashMap<>(); + parameters.put("tglAwal", tglAwal); + parameters.put("tglAkhir", tglAkhir); + parameters.put("idUnit", idUnit); + parameters.put("idDokter", idDokter); + parameters.put("printBy", printBy); + return JasperFillManager.fillReport(jasperReport, parameters, conn); + } catch (Exception var15) { + LOG.error("Exception at exportLpRekapKualitasMutuDokter"); + LOG.error(ReportingDao.class, var15); + } + return null; + } + } diff --git a/src/main/java/com/reporting/service/ReportingService.java b/src/main/java/com/reporting/service/ReportingService.java index 39ba8bd..c9d96b8 100644 --- a/src/main/java/com/reporting/service/ReportingService.java +++ b/src/main/java/com/reporting/service/ReportingService.java @@ -597,4 +597,69 @@ public class ReportingService { } } + public JasperPrint exportLpRekapWTRJ(String tglAwal, String tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + log.info("Starting exportLpRekapWTRJ with tglAwal: {}, tglAkhir: {}, idUnit: {}, idDokter: {}, printBy: {}", tglAwal, tglAkhir, idUnit, idDokter, printBy); + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Timestamp parse = new Timestamp(formatter.parse(tglAwal).getTime()); + Timestamp parse2 = new Timestamp(formatter.parse(tglAkhir).getTime()); + return this.reportingDao.exportLpRekapWTRJ(parse, parse2, idUnit, idDokter, printBy); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public JasperPrint exportLpRekapVisit(String tglAwal, String tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + log.info("Starting exportLpRekapVisit with tglAwal: {}, tglAkhir: {}, idUnit: {}, idDokter: {}, printBy: {}", tglAwal, tglAkhir, idUnit, idDokter, printBy); + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Timestamp parse = new Timestamp(formatter.parse(tglAwal).getTime()); + Timestamp parse2 = new Timestamp(formatter.parse(tglAkhir).getTime()); + return this.reportingDao.exportLpRekapVisit(parse, parse2, idUnit, idDokter, printBy); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public JasperPrint exportLpRekapResumeMedis(String tglAwal, String tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + log.info("Starting exportLpRekapResumeMedis with tglAwal: {}, tglAkhir: {}, idUnit: {}, idDokter: {}, printBy: {}", tglAwal, tglAkhir, idUnit, idDokter, printBy); + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Timestamp parse = new Timestamp(formatter.parse(tglAwal).getTime()); + Timestamp parse2 = new Timestamp(formatter.parse(tglAkhir).getTime()); + return this.reportingDao.exportLpRekapResumeMedis(parse, parse2, idUnit, idDokter, printBy); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public JasperPrint exportLpRekapResumMedisSDM(String tglAwal, String tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + log.info("Starting exportLpRekapResumMedisSDM with tglAwal: {}, tglAkhir: {}, idUnit: {}, idDokter: {}, printBy: {}", tglAwal, tglAkhir, idUnit, idDokter, printBy); + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Timestamp parse = new Timestamp(formatter.parse(tglAwal).getTime()); + Timestamp parse2 = new Timestamp(formatter.parse(tglAkhir).getTime()); + return this.reportingDao.exportLpRekapResumMedisSDM(parse, parse2, idUnit, idDokter, printBy); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + + public JasperPrint exportLpRekapKualitasMutuDokter(String tglAwal, String tglAkhir, Integer idUnit, Integer idDokter, String printBy) { + log.info("Starting exportLpRekapKualitasMutuDokter with tglAwal: {}, tglAkhir: {}, idUnit: {}, idDokter: {}, printBy: {}", tglAwal, tglAkhir, idUnit, idDokter, printBy); + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Timestamp parse = new Timestamp(formatter.parse(tglAwal).getTime()); + Timestamp parse2 = new Timestamp(formatter.parse(tglAkhir).getTime()); + return this.reportingDao.exportLpRekapKualitasMutuDokter(parse, parse2, idUnit, idDokter, printBy); + } catch (ParseException e) { + log.error(e.getMessage()); + return null; + } + } + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 856c689..d7edb2f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -32,6 +32,6 @@ spring.mvc.dispatch-trace-request=true spring.main.banner-mode=off application.jasper-xml.dir-path=/mnt/files/jasper-xml/ application.jasper-xml.dir-bintaro-path=/mnt/files/jasper-xml-bintaro/ -application.jasper-xml.dir-sim2-path=/mnt/files/jasper-xml-sim2/ +application.jasper-xml.dir-sim2-path=D:\\UP\\ application.pdf.dir-sep=/mnt/files/sep/ application.pdf.dir-lis=/mnt/lis/ \ No newline at end of file