From 43467935a93fc9f1b1aa68078786a1362648a56f Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Sat, 26 Aug 2023 10:24:38 +0700 Subject: [PATCH] Update service pelayanan pasien Pembuatan fitur duplikasi relasi pelayanan pasien tidak terklaim karena split jumlah pelayanan di diskon paket --- .../dao/PelayananPasienTidakTerklaimDao.java | 7 +- .../impl/PelayananPasienServiceImpl.java | 109 ++++++++++++++++++ 2 files changed, 115 insertions(+), 1 deletion(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienTidakTerklaimDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienTidakTerklaimDao.java index 5187e5b7..5d2e7f07 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienTidakTerklaimDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienTidakTerklaimDao.java @@ -1,10 +1,14 @@ package com.jasamedika.medifirst2000.dao; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.PelayananPasienTidakTerklaim; +import java.util.List; + /** * Repository class for PelayananPasienTidakTerklaim * @@ -12,5 +16,6 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienTidakTerklaim; */ @Repository("pelayananPasienTidakTerklaimDao") public interface PelayananPasienTidakTerklaimDao extends JpaRepository { - + @Query("select pptt from PelayananPasienTidakTerklaim pptt left join pptt.pelayananPasien pp where pp.noRec = :norec") + List findByPelayananPasien(@Param("norec") String norec); } 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 442d30d4..fd862113 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 @@ -108,6 +108,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private PelayananPasienPetugasDao pelayananPasienPetugasDao; + @Autowired + private PelayananPasienTidakTerklaimDao pelayananPasienTidakTerklaimDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -2322,6 +2325,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List pelayanan = new ArrayList<>(); List detailPelayanan = new ArrayList<>(); List petugasPelayanan = new ArrayList<>(); + List pelayananPasienTidakTerklaim = new ArrayList<>(); dtoList.forEach(dto -> { Optional pelayananReducedQty = pelayananChecked.stream() .filter(p -> p.getNoRec().equals(dto.getNoRec())) @@ -2329,6 +2333,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel pelayananReducedQty.ifPresent(p -> { List splitDetailPelayanan = new ArrayList<>(); List splitPetugasPelayanan = new ArrayList<>(); + List splitPelayananTidakTerklaim = new ArrayList<>(); List splitPelayanan = copyPelayananSplitQty(p); Optional origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null) .findFirst(); @@ -2354,6 +2359,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .filter(pt -> pt.getNoRec() != null).collect(Collectors.toList()); petugasPelayanan.addAll(originPetugas); } + { + List pelayananTidakTerklaimOrigin = pelayananPasienTidakTerklaimDao + .findByPelayananPasien(origin.get().getNoRec()); + splitPelayananTidakTerklaim = copyPelayananTidakTerklaimSplitQty( + pelayananTidakTerklaimOrigin); + List originPelayananTidakTerklaim = splitPelayananTidakTerklaim + .stream().filter(ptt -> ptt.getNoRec() != null).collect(Collectors.toList()); + pelayananPasienTidakTerklaim.addAll(originPelayananTidakTerklaim); + } pelayanan.add(origin.get()); } Optional duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null) @@ -2374,6 +2388,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel duplicatePetugas.forEach(dp -> dp.setPelayananPasien(duplicate.get())); petugasPelayanan.addAll(duplicatePetugas); } + { + List duplicatePelayananTidakTerklaim = splitPelayananTidakTerklaim + .stream().filter(pt -> pt.getNoRec() == null).collect(Collectors.toList()); + duplicatePelayananTidakTerklaim.forEach(dp -> dp.setPelayananPasien(duplicate.get())); + pelayananPasienTidakTerklaim.addAll(duplicatePelayananTidakTerklaim); + } pelayanan.add(duplicate.get()); } }); @@ -2382,6 +2402,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel pelayananPasienDao.save(pelayanan); pelayananPasienDetailDao.save(detailPelayanan); pelayananPasienPetugasDao.save(petugasPelayanan); + pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim); } } } @@ -2641,4 +2662,92 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); return duplicatePetugas; } + + private List copyPelayananTidakTerklaimSplitQty( + List originPelayananTidakTerklaim) { + List duplicatePelayananTidakTerklaim = new ArrayList<>(); + originPelayananTidakTerklaim.forEach(origin -> { + PelayananPasienTidakTerklaim duplicate; + duplicate = origin; + { + AntrianPasienDiPeriksa antrian = origin.getPasien(); + if (CommonUtil.isNotNullOrEmpty(antrian)) + duplicate.setPasien(antrian); + } + { + JenisKemasan jenisKemasan = origin.getJenisKemasan(); + if (CommonUtil.isNotNullOrEmpty(jenisKemasan)) + duplicate.setJenisKemasan(jenisKemasan); + } + { + Kelas kelas = origin.getKelas(); + if (CommonUtil.isNotNullOrEmpty(kelas)) + duplicate.setKelas(kelas); + } + { + KelompokTransaksi kelompokTransaksi = origin.getKelompokTransaksi(); + if (CommonUtil.isNotNullOrEmpty(kelompokTransaksi)) + duplicate.setKelompokTransaksi(kelompokTransaksi); + } + { + Produk produk = origin.getProduk(); + if (CommonUtil.isNotNullOrEmpty(produk)) + duplicate.setProduk(produk); + } + { + Generik generik = origin.getGenerik(); + if (CommonUtil.isNotNullOrEmpty(generik)) + duplicate.setGenerik(generik); + } + { + JenisObat jenisObat = origin.getJenisObat(); + if (CommonUtil.isNotNullOrEmpty(jenisObat)) + duplicate.setJenisObat(jenisObat); + } + { + RouteFarmasi route = origin.getRoute(); + if (CommonUtil.isNotNullOrEmpty(route)) + duplicate.setRoute(route); + } + { + SatuanStandar satuanView = origin.getSatuanView(); + if (CommonUtil.isNotNullOrEmpty(satuanView)) + duplicate.setSatuanView(satuanView); + } + { + Stigma keteranganPakai = origin.getKeteranganPakai(); + if (CommonUtil.isNotNullOrEmpty(keteranganPakai)) + duplicate.setKeteranganPakai(keteranganPakai); + } + { + StrukOrder strukOrder = origin.getStrukOrder(); + if (CommonUtil.isNotNullOrEmpty(strukOrder)) + duplicate.setStrukOrder(strukOrder); + } + { + StrukPelayanan strukPelayanan = origin.getStrukPelayanan(); + if (CommonUtil.isNotNullOrEmpty(strukPelayanan)) + duplicate.setStrukPelayanan(strukPelayanan); + } + { + StrukPelayanan strukTerima = origin.getStrukTerima(); + if (CommonUtil.isNotNullOrEmpty(strukTerima)) + duplicate.setStrukTerima(strukTerima); + } + { + StrukPelayananDNoBatch noBatch = origin.getNoBatch(); + if (CommonUtil.isNotNullOrEmpty(noBatch)) + duplicate.setNoBatch(noBatch); + } + { + StrukResep strukResep = origin.getStrukResep(); + if (CommonUtil.isNotNullOrEmpty(strukResep)) + duplicate.setStrukResep(strukResep); + } + duplicate.setNoRec(null); + duplicatePelayananTidakTerklaim.add(duplicate); + duplicatePelayananTidakTerklaim.add(origin); + }); + return duplicatePelayananTidakTerklaim; + } } \ No newline at end of file