From 41c2ef5974d7f8555ad08ce9741480377c4277d5 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 26 Sep 2023 20:22:36 +0700 Subject: [PATCH] Update service pelayanan pasien Penerapan detail tarif untuk transformasi data entri list paket --- .../medifirst2000/dao/PelayananPasienDao.java | 7 ++ .../impl/PelayananPasienServiceImpl.java | 70 ++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) 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 f8cbe417..fd589d79 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 @@ -300,4 +300,11 @@ public interface PelayananPasienDao extends JpaRepository> findJumlahLayananByVoucherIn(@Param("listIdVoucher") Set listIdVoucher); + + @Query("select new Map(pp.noRec as noRec," + "vp.paketId as paketId," + "mpaket.produkPaketId as produkPaketId," + + "mproduk.produkId as produkId) " + "from PelayananPasien pp, " + "MapProdukPaketToProduk mproduk " + + "inner join pp.pasienDaftar apd " + "inner join pp.voucherPaket vp " + "inner join apd.pasienDaftar pd " + + "inner join mproduk.mapProdukPaket mpaket " + "where vp.paketId = mpaket.paketId " + + "and pp.produkId = mproduk.produkId " + "and pp.noRec in (:listNorec)") + List> findByNorecs(@Param("listNorec") Set listNorec); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 593996b8..806ceeb4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -41,7 +41,7 @@ import static com.jasamedika.medifirst2000.constants.Master.KONSUL_VISIT; import static com.jasamedika.medifirst2000.constants.Master.KategoryPegawai.DOKTER_LUAR; import static com.jasamedika.medifirst2000.constants.Master.KelompokPasien.KELOMPOK_BPJS; import static com.jasamedika.medifirst2000.constants.Master.KelompokUser.TATA_REKENING; -import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.JASA_DOKTER_OBGYN; +import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*; import static com.jasamedika.medifirst2000.constants.Master.Ruangan.*; import static com.jasamedika.medifirst2000.constants.Master.SubUnitKerja.*; import static com.jasamedika.medifirst2000.constants.Master.TipePegawai.PURNA_WAKTU; @@ -1719,7 +1719,73 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List> layananBadanPaket = dataExcludeUndone.stream() .filter(d -> !setIdPelayananUtama.contains(d.get("idPelayananPasien").toString())) .collect(Collectors.toList()); - layananBadanPaket.forEach(l -> l.put("hargaJasa", 0.0)); + List concatIdProdukKelas = layananBadanPaket.stream() + .map(l -> l.get("idProduk").toString() + l.get("idKelas").toString()).collect(Collectors.toList()); + List listDetailTarif = hargaNettoProdukByKelasDDao + .findByConcateProdukKelas(concatIdProdukKelas); + Set setNorecs = layananBadanPaket.stream().map(l -> l.get("idPelayananPasien").toString()) + .collect(Collectors.toSet()); + if (CommonUtil.isNotNullOrEmpty(setNorecs)) { + List> mappingBadanPaket = pelayananPasienDao.findByNorecs(setNorecs); + layananBadanPaket.forEach(l -> { + Optional> firstMap = mappingBadanPaket.stream() + .filter(m -> l.get("idPelayananPasien").toString().equals(m.get("norec"))).findFirst(); + if (firstMap.isPresent()) { + if (DOKTER_PEMERIKSA.equals(l.get("idJenisPelaksana"))) { + Optional first = listDetailTarif.stream() + .filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId")) + && t.getKelasId().equals(l.get("idKelas")) + && JASA_DOKTER.equals(t.getKomponenHargaId())) + .findFirst(); + if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1()) + && first.get().getHargaNetto1() > 0.0) { + l.put("hargaJasa", first.get().getHargaNetto1()); + } else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan()) + && first.get().getHargaSatuan() > 0.0) { + l.put("hargaJasa", first.get().getHargaSatuan()); + } else { + l.put("hargaJasa", 0.0); + } + } else if (ASISTEN_SPESIALIS.equals(l.get("idJenisPelaksana"))) { + Optional first = listDetailTarif.stream() + .filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId")) + && t.getKelasId().equals(l.get("idKelas")) + && JASA_ASISTEN_SPESIALIS.equals(t.getKomponenHargaId())) + .findFirst(); + if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1()) + && first.get().getHargaNetto1() > 0.0) { + l.put("hargaJasa", first.get().getHargaNetto1()); + } else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan()) + && first.get().getHargaSatuan() > 0.0) { + l.put("hargaJasa", first.get().getHargaSatuan()); + } else { + l.put("hargaJasa", 0.0); + } + } else if (DOKTER_ANASTESI.equals(l.get("idJenisPelaksana"))) { + Optional first = listDetailTarif.stream() + .filter(t -> t.getProdukId().equals(firstMap.get().get("produkPaketId")) + && t.getKelasId().equals(l.get("idKelas")) + && JASA_DOKTER_ANASTESI.equals(t.getKomponenHargaId())) + .findFirst(); + if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaNetto1()) + && first.get().getHargaNetto1() > 0.0) { + l.put("hargaJasa", first.get().getHargaNetto1()); + } else if (first.isPresent() && CommonUtil.isNotNullOrEmpty(first.get().getHargaSatuan()) + && first.get().getHargaSatuan() > 0.0) { + l.put("hargaJasa", first.get().getHargaSatuan()); + } else { + l.put("hargaJasa", 0.0); + } + } + } else { + l.put("hargaJasa", 0.0); + } + }); + } else { + layananBadanPaket.forEach(l -> { + l.put("hargaJasa", 0.0); + }); + } result.addAll(layananBadanPaket); } return result;