From 3b629a2f133445ddf6f51cda4a7896e590c09f67 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Wed, 2 Nov 2022 20:04:15 +0700 Subject: [PATCH] Update ProdukService Pembuatan cetakan informasi tarif lama --- .../medifirst2000/dao/ProdukDao.java | 43 ++++++- .../medifirst2000/service/ProdukService.java | 2 + .../service/impl/ProdukServiceImpl.java | 106 ++++++++++++++++++ .../controller/ReportingController.java | 21 ++++ .../src/main/resources/views.properties | 6 +- 5 files changed, 172 insertions(+), 6 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukDao.java index 7b23b362..046027de 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukDao.java @@ -308,7 +308,7 @@ public interface ProdukDao extends PagingAndSortingRepository { @Query("select NEW Produk(p.kdProduk,p.namaProduk,p.id) from Produk p where lower(p.namaProduk) = lower (:name) and p.detailJenisProduk.jenisProduk.kelompokProduk.id='279' and p.statusEnabled=true") Produk findProdukByName(@Param("name") String name); - String strQueryTarifLayanan = "select distinct new Map(pd.id as idProduk,pd.namaProduk as namaProduk," + String strQueryTarifLayananBaru = "select distinct new Map(pd.id as idProduk,pd.namaProduk as namaProduk," + "kl.id as idKelas,kl.namaKelas as namaKelas," + "kh.id as idJasa,hp.hargaNetto1 as hargaLayanan,hd.hargaNetto1 as hargaJasa) " + "from MapRuanganToProduk mr, HargaNettoProdukByKelas hp, HargaNettoProdukByKelasD hd " @@ -324,6 +324,23 @@ public interface ProdukDao extends PagingAndSortingRepository { + "and jp.id not in (43,82,91,97,116,178,184,186,188,191,197,216) " + "and ru.id = :idRuangan " + "and hp.statusEnabled is true " + "and hd.statusEnabled is true " + "and pd.statusEnabled is true " + "and kh.statusEnabled is true "; + + String strQueryTarifLayananLama = "select distinct new Map(pd.id as idProduk,pd.namaProduk as namaProduk," + + "kl.id as idKelas,kl.namaKelas as namaKelas," + + "kh.id as idJasa,hp.hargaNetto1 as hargaLayanan,hd.hargaNetto1 as hargaJasa) " + + "from MapRuanganToProduk mr, HargaNettoProdukByKelas hp, HargaNettoProdukByKelasD hd " + + "inner join mr.produk pd " + "inner join mr.ruangan ru " + "inner join hp.kelas kl " + + "inner join hd.komponenHarga kh " + "inner join pd.detailJenisProduk dj " + "inner join ru.departemen dp " + + "inner join dj.jenisProduk jp " + "where mr.produkId = hp.produkId and mr.produkId = hd.produkId " + + "and hp.produkId = hd.produkId and hp.kelasId = hd.kelasId and hp.produkId = pd.id " + + "and hd.produkId = pd.id and hd.kelasId = kl.id " + + "and pd.id not in (402611,10011571,10011572,10014240,10014241,10014242,10014243) " + + "and ((kl.id in (1,2,3,5,6,8) and dp.id = 25 or (dp.id in (1,16) and ru.id in (42,45,75,76,79,80,328,463,464,466))) " + + "or (kl.id in (1,2,3,5,8) and dp.id = 16 and ru.id not in (45,75,76,79,80,328,463,464,466)) " + + "or (kl.id = 6 and dp.id in (3,18,24,27,28))) " + "and kh.id in (6,21,22,25,26,27,30,35,38) " + + "and jp.id not in (43,82,91,97,116,178,184,186,188,191,197,216) " + "and ru.id = :idRuangan " + + "and hp.statusEnabled is false " + "and pd.statusEnabled is true " + + "and kh.statusEnabled is true "; String produkTarifLayanan = "and pd.id = :idProduk "; @@ -331,20 +348,36 @@ public interface ProdukDao extends PagingAndSortingRepository { String sortTarifLayanan = " order by pd.namaProduk,kl.namaKelas"; - @Query(strQueryTarifLayanan + produkTarifLayanan + kelasTarifLayanan + sortTarifLayanan) + @Query(strQueryTarifLayananBaru + produkTarifLayanan + kelasTarifLayanan + sortTarifLayanan) public List> findTarifLayananKelasProduk(@Param("idRuangan") Integer idRuangan, @Param("idProduk") Integer idProduk, @Param("idKelas") Integer idKelas); - @Query(strQueryTarifLayanan + produkTarifLayanan + sortTarifLayanan) + @Query(strQueryTarifLayananBaru + produkTarifLayanan + sortTarifLayanan) public List> findTarifLayananProduk(@Param("idRuangan") Integer idRuangan, @Param("idProduk") Integer idProduk); - @Query(strQueryTarifLayanan + kelasTarifLayanan + sortTarifLayanan) + @Query(strQueryTarifLayananBaru + kelasTarifLayanan + sortTarifLayanan) public List> findTarifLayananKelas(@Param("idRuangan") Integer idRuangan, @Param("idKelas") Integer idKelas); - @Query(strQueryTarifLayanan + sortTarifLayanan) + @Query(strQueryTarifLayananBaru + sortTarifLayanan) public List> findTarifLayananRuangan(@Param("idRuangan") Integer idRuangan); + + + @Query(strQueryTarifLayananLama + produkTarifLayanan + kelasTarifLayanan + sortTarifLayanan) + public List> findTarifLayananLamaKelasProduk(@Param("idRuangan") Integer idRuangan, + @Param("idProduk") Integer idProduk, @Param("idKelas") Integer idKelas); + + @Query(strQueryTarifLayananLama + produkTarifLayanan + sortTarifLayanan) + public List> findTarifLayananLamaProduk(@Param("idRuangan") Integer idRuangan, + @Param("idProduk") Integer idProduk); + + @Query(strQueryTarifLayananLama + kelasTarifLayanan + sortTarifLayanan) + public List> findTarifLayananLamaKelas(@Param("idRuangan") Integer idRuangan, + @Param("idKelas") Integer idKelas); + + @Query(strQueryTarifLayananLama + sortTarifLayanan) + public List> findTarifLayananLamaRuangan(@Param("idRuangan") Integer idRuangan); String strQryCekNamaProduk = "select new Map(pd.id as id,pd.namaProduk as namaProduk) " + "from Produk pd where pd.statusEnabled is true " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukService.java index 4aa774ce..a0b74e2a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukService.java @@ -103,6 +103,8 @@ public interface ProdukService extends BaseVoService List findJenisProdukLaboratorium(); List> findTarifLayanan(Integer idRuangan, Integer idKelas, Integer idProduk); + + List> findTarifLayananLama(Integer idRuangan, Integer idKelas, Integer idProduk); Map validateNamaProduk(Integer idProduk, String namaProduk); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java index 8e636d47..6d6a49e1 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java @@ -1161,6 +1161,112 @@ public class ProdukServiceImpl extends BaseAngaranServiceImpl implements ProdukS return result; } + + @Override + public List> findTarifLayananLama(Integer idRuangan, Integer idKelas, Integer idProduk) { + List> result = new ArrayList<>(); + List> data = new ArrayList<>(); + + List listProduk = new ArrayList<>(); + List listKelas = new ArrayList<>(); + + DecimalFormatSymbols formatRp = new DecimalFormatSymbols(); + formatRp.setCurrencySymbol("Rp"); + formatRp.setMonetaryDecimalSeparator(','); + formatRp.setGroupingSeparator('.'); + + DecimalFormat kursINA = (DecimalFormat) DecimalFormat.getCurrencyInstance(); + kursINA.setDecimalFormatSymbols(formatRp); + + if (CommonUtil.isNotNullOrEmpty(idKelas) && CommonUtil.isNotNullOrEmpty(idProduk)) { + data = produkDao.findTarifLayananLamaKelasProduk(idRuangan, idProduk, idKelas); + } else if (CommonUtil.isNotNullOrEmpty(idKelas) && CommonUtil.isNullOrEmpty(idProduk)) { + data = produkDao.findTarifLayananLamaKelas(idRuangan, idKelas); + } else if (CommonUtil.isNullOrEmpty(idKelas) && CommonUtil.isNotNullOrEmpty(idProduk)) { + data = produkDao.findTarifLayananLamaProduk(idRuangan, idProduk); + } else if (CommonUtil.isNullOrEmpty(idKelas) && CommonUtil.isNullOrEmpty(idProduk)) { + data = produkDao.findTarifLayananLamaRuangan(idRuangan); + } + + for (Map map : data) { + if (!listProduk.contains(map.get("idProduk"))) { + listProduk.add(Integer.parseInt(map.get("idProduk").toString())); + } + if (!listKelas.contains(map.get("idKelas"))) { + listKelas.add(Integer.parseInt(map.get("idKelas").toString())); + } + } + + for (Integer produkId : listProduk) { + for (Integer kelasId : listKelas) { + Map mapRs = new HashMap<>(); + Double jasaMedis = 0.0; + Double jasaParamedis = 0.0; + Double jasaSarana = 0.0; + Double jasaUmum = 0.0; + for (Map map : data) { + if (map.get("idProduk").equals(produkId) && map.get("idKelas").equals(kelasId)) { + if (Arrays.asList(Master.KomponenHarga.JASA_MEDIS).contains(map.get("idJasa"))) { + if (CommonUtil.isNotNullOrEmpty(map.get("hargaJasa"))) { + jasaMedis += Double.parseDouble(map.get("hargaJasa").toString()); + } else { + jasaMedis += 0.0; + } + } else if (Arrays.asList(Master.KomponenHarga.JASA_PARAMEDIS).contains(map.get("idJasa"))) { + if (CommonUtil.isNotNullOrEmpty(map.get("hargaJasa"))) { + jasaParamedis += Double.parseDouble(map.get("hargaJasa").toString()); + } else { + jasaParamedis += 0.0; + } + } else if (Arrays.asList(Master.KomponenHarga.JASA_SARANA).contains(map.get("idJasa"))) { + if (CommonUtil.isNotNullOrEmpty(map.get("hargaJasa"))) { + jasaSarana += Double.parseDouble(map.get("hargaJasa").toString()); + } else { + jasaSarana += 0.0; + } + } else { + if (CommonUtil.isNotNullOrEmpty(map.get("hargaJasa"))) { + jasaUmum += Double.parseDouble(map.get("hargaJasa").toString()); + } else { + jasaUmum += 0.0; + } + } + mapRs.putAll(map); + mapRs.put("hargaLayanan", + kursINA.format(Double.parseDouble(map.get("hargaLayanan").toString())).toString()); + if (!jasaMedis.equals(0.0)) { + mapRs.put("jasaMedis", kursINA.format(jasaMedis).toString()); + } else { + mapRs.put("jasaMedis", "-"); + } + if (!jasaParamedis.equals(0.0)) { + mapRs.put("jasaParamedis", kursINA.format(jasaParamedis).toString()); + } else { + mapRs.put("jasaParamedis", "-"); + } + if (!jasaSarana.equals(0.0)) { + mapRs.put("jasaSarana", kursINA.format(jasaSarana).toString()); + } else { + mapRs.put("jasaSarana", "-"); + } + if (!jasaUmum.equals(0.0)) { + mapRs.put("jasaUmum", kursINA.format(jasaUmum).toString()); + } else { + mapRs.put("jasaUmum", "-"); + } + + mapRs.remove("idJasa"); + mapRs.remove("hargaJasa"); + } + } + if (CommonUtil.isNotNullOrEmpty(mapRs)) { + result.add(mapRs); + } + } + } + + return result; + } @Override public Map validateNamaProduk(Integer idProduk, String namaProduk) { diff --git a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java index a3147dde..6d71c139 100644 --- a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java +++ b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java @@ -7812,6 +7812,27 @@ public class ReportingController extends LocaleController return m; } + + @SuppressWarnings("unchecked") + @RequestMapping("/tarifLayananLamaRuangan") + public ModelAndView getTarifLayananLama(ModelAndView m, @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "idRuangan", required = true) Integer idRuangan, + @RequestParam(value = "idKelas", required = false) Integer idKelas, + @RequestParam(value = "idProduk", required = false) Integer idProduk) { + List> result = produkService.findTarifLayananLama(idRuangan, idKelas, idProduk); + + Map ruangan = ruanganService.getRuanganById(idRuangan); + + m.addObject("dataSource", result); + m.addObject("namaRuangan", ruangan.get("namaRuangan").toString().replace("/", "-")); + m.addObject("format", "xls"); + + if (format != null && !format.isEmpty()) { + m.addObject("format", format); + } + + return m; + } @RequestMapping(value = "/master-bed", method = RequestMethod.GET) public ResponseEntity>> getMasterBed(HttpServletRequest request) { diff --git a/jasamedika-reporting/src/main/resources/views.properties b/jasamedika-reporting/src/main/resources/views.properties index 46cbb6c3..276ad12b 100644 --- a/jasamedika-reporting/src/main/resources/views.properties +++ b/jasamedika-reporting/src/main/resources/views.properties @@ -572,4 +572,8 @@ reporting/lapGrafikSuhuMesin.url=/WEB-INF/templates/jrxml/lapGrafikSuhuMesin.jrx #tarifLayananRuangan reporting/tarifLayananRuangan.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView -reporting/tarifLayananRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.jrxml \ No newline at end of file +reporting/tarifLayananRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.jrxml + +#tarifLayananLamaRuangan +reporting/tarifLayananLamaRuangan.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView +reporting/tarifLayananLamaRuangan.url=/WEB-INF/templates/jrxml/tarifLayananRuangan.jrxml \ No newline at end of file