From 54f6f9543d6b0912c35720ff61ab54bd1b72834c Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Sat, 26 Aug 2023 11:42:10 +0700 Subject: [PATCH] Update service pelayanan pasien Pembuatan fitur duplikasi relasi racikan detail karena split jumlah pelayanan di diskon paket --- .../medifirst2000/dao/RacikanDetailDao.java | 7 ++- .../impl/PelayananPasienServiceImpl.java | 47 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RacikanDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RacikanDetailDao.java index 6dcb2443..5cc073ef 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RacikanDetailDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RacikanDetailDao.java @@ -1,11 +1,16 @@ package com.jasamedika.medifirst2000.dao; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.RacikanDetail; +import java.util.List; + @Repository("RacikanDetailDao") public interface RacikanDetailDao extends PagingAndSortingRepository { - + @Query("select rd from RacikanDetail rd left join rd.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 fd862113..1eadc41a 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 @@ -111,6 +111,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private PelayananPasienTidakTerklaimDao pelayananPasienTidakTerklaimDao; + @Autowired + private RacikanDetailDao racikanDetailDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -2326,6 +2329,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List detailPelayanan = new ArrayList<>(); List petugasPelayanan = new ArrayList<>(); List pelayananPasienTidakTerklaim = new ArrayList<>(); + List racikanDetail = new ArrayList<>(); dtoList.forEach(dto -> { Optional pelayananReducedQty = pelayananChecked.stream() .filter(p -> p.getNoRec().equals(dto.getNoRec())) @@ -2334,6 +2338,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List splitDetailPelayanan = new ArrayList<>(); List splitPetugasPelayanan = new ArrayList<>(); List splitPelayananTidakTerklaim = new ArrayList<>(); + List splitRacikanDetail = new ArrayList<>(); List splitPelayanan = copyPelayananSplitQty(p); Optional origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null) .findFirst(); @@ -2368,6 +2373,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .stream().filter(ptt -> ptt.getNoRec() != null).collect(Collectors.toList()); pelayananPasienTidakTerklaim.addAll(originPelayananTidakTerklaim); } + { + List racikanDetailOrigin = racikanDetailDao + .findByPelayananPasien(origin.get().getNoRec()); + splitRacikanDetail = copyDetailRacikanSplitQty(racikanDetailOrigin); + List originRacikanDetail = splitRacikanDetail.stream() + .filter(rd -> rd.getNoRec() != null).collect(Collectors.toList()); + racikanDetail.addAll(originRacikanDetail); + } pelayanan.add(origin.get()); } Optional duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null) @@ -2394,6 +2407,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel duplicatePelayananTidakTerklaim.forEach(dp -> dp.setPelayananPasien(duplicate.get())); pelayananPasienTidakTerklaim.addAll(duplicatePelayananTidakTerklaim); } + { + List duplicateRacikanDetail = splitRacikanDetail.stream() + .filter(rd -> rd.getNoRec() == null).collect(Collectors.toList()); + duplicateRacikanDetail.forEach(drd -> drd.setPelayananPasien(duplicate.get())); + racikanDetail.addAll(duplicateRacikanDetail); + } pelayanan.add(duplicate.get()); } }); @@ -2403,6 +2422,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel pelayananPasienDetailDao.save(detailPelayanan); pelayananPasienPetugasDao.save(petugasPelayanan); pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim); + racikanDetailDao.save(racikanDetail); } } } @@ -2750,4 +2770,31 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); return duplicatePelayananTidakTerklaim; } + + List copyDetailRacikanSplitQty(List originRacikanDetail) { + List duplicateRacikanDetail = new ArrayList<>(); + originRacikanDetail.forEach(origin -> { + RacikanDetail duplicate; + duplicate = origin; + { + Produk produk = origin.getProduk(); + if (CommonUtil.isNotNullOrEmpty(produk)) + duplicate.setProduk(produk); + } + { + Generik generik = origin.getGenerik(); + if (CommonUtil.isNotNullOrEmpty(generik)) + duplicate.setGenerik(generik); + } + { + StrukRacikan strukRacikan = origin.getStrukRacikan(); + if (CommonUtil.isNotNullOrEmpty(strukRacikan)) + duplicate.setStrukRacikan(strukRacikan); + } + duplicate.setNoRec(null); + duplicateRacikanDetail.add(duplicate); + duplicateRacikanDetail.add(origin); + }); + return duplicateRacikanDetail; + } } \ No newline at end of file