diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java index 8a0b20d9..7a0cbdf7 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java @@ -206,6 +206,9 @@ public interface PelayananPasienDao extends JpaRepository idsMonitoringHemodinamikGagalOrgan = splitDataSettingDatafixed( "idMonitoringHemodinamikGagalOrgan"); List idProdukLabGenetikaLuarRuangan = splitDataSettingDatafixed("idProdukLabGenetikaLuarRuangan"); + List idProdukKecantikanFixedPay = splitDataSettingDatafixed("idProdukKecantikanFixedPay"); if (drKkPatologiAnatomiList.contains(idPegawai)) { listDetailJenisProduk = idsRegDJPPenunjangPA; } else if (pegawaiDao.getDokterByKelompokKerja(KK_PATOLOGI_KLINIK).contains(idPegawai)) { @@ -565,6 +566,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel */ List> listRatedPay = pelayananPasienDao.findPelayananPasienByPetugasAndTanggal(idPegawai, tglAwal, tglAkhir); + /* + * Pemisahan produk kecantikan untuk fixed pay + */ + List> listKecantikanFixedPay = listRatedPay.stream() + .filter(d -> idProdukKecantikanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); + listRatedPay = listRatedPay.stream() + .filter(d -> !idProdukKecantikanFixedPay.contains(Integer.parseInt(d.get("idProduk").toString()))) + .collect(Collectors.toList()); List allPaketId = mapProdukPaketDao.findProdukEntriId(); List> listFixedPay = listRatedPay.stream() .filter(d -> allPaketId.contains(Integer.parseInt(d.get("idProduk").toString()))) @@ -1522,23 +1532,23 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel { List> listPelayananFixedPay = new ArrayList<>(); if (CommonUtil.isNotNullOrEmpty(listFixedPay)) - listPelayananFixedPay = setPelayananPaket(idPegawai, bulan, listFixedPay); + listPelayananFixedPay = setPelayananPaket(idPegawai, listFixedPay); + if (CommonUtil.isNotNullOrEmpty(listKecantikanFixedPay)) + listPelayananFixedPay.addAll(setKecantikanFixedPay(listKecantikanFixedPay)); result.put("fixed-pay", listPelayananFixedPay); } return result; } - private List> setPelayananPaket(Integer idPegawai, String bulan, - List> listData) { + private List> setKecantikanFixedPay(List> listData) { /* - * Transformasi data paket menggunakan mapprodukpaket dan - * mapprodukpakettoproduk + * Transformasi data produk kecantikan */ - List> listFixedPay = transformPelayananPaket(idPegawai, bulan, listData); + List> listFixedPay = transformPelayananKecantikan(listData); /* * Populate data filter */ - List> dataTanggal = groupingTanggalPaket(listFixedPay); + List> dataTanggal = distinctGroupFixedPay(listFixedPay); /* * Pengelompokkan produk layanan */ @@ -1576,7 +1586,54 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return result; } - private List> groupingTanggalPaket(List> listFixedPay) { + private List> setPelayananPaket(Integer idPegawai, List> listData) { + /* + * Transformasi data paket menggunakan mapprodukpaket dan + * mapprodukpakettoproduk + */ + List> listFixedPay = transformPelayananPaket(idPegawai, listData); + /* + * Populate data filter + */ + List> dataTanggal = distinctGroupFixedPay(listFixedPay); + /* + * Pengelompokkan produk layanan + */ + List> result = groupingKategoriFixedPay(dataTanggal); + /* + * Final sorting + */ + result = result.stream() + .sorted(Comparator.comparing(o1 -> (Date) o1.get("tglPelayanan"), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o2 -> Integer.parseInt(o2.get("sortIdKelompokPasien").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o3 -> Integer.parseInt(o3.get("sortIdKelas").toString()), + Comparator.nullsLast(Comparator.naturalOrder()))) + .sorted(Comparator.comparing(o4 -> o4.get("namaProduk").toString())) + .sorted(Comparator.comparing(o5 -> o5.get("jenisRuangan").toString(), Comparator.reverseOrder())) + .sorted(Comparator.comparing(o4 -> o4.get("bulanPulangIbu").toString())).collect(Collectors.toList()); + result.forEach(r -> { + /* + * Hapus informasi tidak perlu + */ + r.remove("idDPJP"); + r.remove("tglPelayanan"); + r.remove("tanggal"); + r.remove("idKelas"); + r.remove("namaKelas"); + r.remove("idPelayananPasienPetugas"); + r.remove("idPelayananPasien"); + r.remove("norecs"); + r.remove("idDepartemen"); + r.remove("idPasienDaftar"); + r.remove("idPegawai"); + r.remove("idAntrianPasienDiperiksa"); + }); + return result; + } + + private List> distinctGroupFixedPay(List> listFixedPay) { List listIdProduk = new ArrayList<>(); List listHargaJasa = new ArrayList<>(); List listHargaJual = new ArrayList<>(); @@ -1606,8 +1663,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return groupingTanggalFixedPay(listFixedPay); } - private List> transformPelayananPaket(Integer idPegawai, String bulan, - List> listData) { + private List> transformPelayananPaket(Integer idPegawai, List> listData) { List drKsmObgyn = pegawaiDao.getDokterByKsm(KSM_OBGYN); SimpleDateFormat month = new SimpleDateFormat("MMM-yyyy", new Locale("in", "ID")); listData.forEach(d -> { @@ -1787,6 +1843,24 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return listData; } + private List> transformPelayananKecantikan(List> listData) { + listData.forEach(d -> { + if (CommonUtil.isNotNullOrEmpty(d.get("idSayatan"))) + d.put("keterangan", "Dari " + (100.0 - Double.parseDouble(d.get("persenSayatan").toString())) + + "% komponen tarif, sayatan ke-" + d.get("urutanSayatan").toString()); + }); + listData.forEach(d -> { + double hargaJasa = Double.parseDouble(d.get("hargaJasaD").toString()) + + Double.parseDouble(d.get("hargaJasaAs").toString()) + + Double.parseDouble(d.get("hargaJasaAn").toString()); + d.put("tglPulangIbu", null); + d.put("bulanPulangIbu", ""); + d.put("hargaJasa", hargaJasa); + d.put("isBatalPaket", false); + }); + return listData; + } + @Override public Map logbookRemunTarifDokter(Integer idPegawai, String bulan) { Map result = new HashMap<>();