diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPelayananPasienPetugasToPegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPelayananPasienPetugasToPegawaiDao.java new file mode 100644 index 00000000..83e7b64d --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPelayananPasienPetugasToPegawaiDao.java @@ -0,0 +1,23 @@ +package com.jasamedika.medifirst2000.dao; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.jasamedika.medifirst2000.entities.MapPelayananPasienPetugasToPegawai; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author Salman + * @version 1.0.0 + * @since 26 Aug 2023 + */ +@Repository +public interface MapPelayananPasienPetugasToPegawaiDao + extends JpaRepository { + @Query("select mptp from MapPelayananPasienPetugasToPegawai mptp " + "left join mptp.pelayananPasienPetugas ppp " + + "where ppp.norec in (:norecs)") + List findByPelayananPasienPetugas(@Param("norecs") List norecs); +} 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 1eadc41a..b1793078 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 @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.service.impl; +import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.*; @@ -114,6 +115,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private RacikanDetailDao racikanDetailDao; + @Autowired + private MapPelayananPasienPetugasToPegawaiDao mapPelayananPasienPetugasToPegawaiDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -2330,6 +2334,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List petugasPelayanan = new ArrayList<>(); List pelayananPasienTidakTerklaim = new ArrayList<>(); List racikanDetail = new ArrayList<>(); + List mapPetugasPegawai = new ArrayList<>(); dtoList.forEach(dto -> { Optional pelayananReducedQty = pelayananChecked.stream() .filter(p -> p.getNoRec().equals(dto.getNoRec())) @@ -2339,6 +2344,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List splitPetugasPelayanan = new ArrayList<>(); List splitPelayananTidakTerklaim = new ArrayList<>(); List splitRacikanDetail = new ArrayList<>(); + List splitMapPetugasPegawai = new ArrayList<>(); List splitPelayanan = copyPelayananSplitQty(p); Optional origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null) .findFirst(); @@ -2363,6 +2369,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel List originPetugas = splitPetugasPelayanan.stream() .filter(pt -> pt.getNoRec() != null).collect(Collectors.toList()); petugasPelayanan.addAll(originPetugas); + { + List norecs = petugasOrigin.stream().map(BaseTransaction::getNoRec) + .collect(Collectors.toList()); + List mapPetugasPegawaiOrigin = mapPelayananPasienPetugasToPegawaiDao + .findByPelayananPasienPetugas(norecs); + splitMapPetugasPegawai = copyMapPetugasPegawaiSplitQty(mapPetugasPegawaiOrigin); + List originMapPetugasPegawai = splitMapPetugasPegawai + .stream().filter(mpp -> mpp.getNoRec() != null).collect(Collectors.toList()); + mapPetugasPegawai.addAll(originMapPetugasPegawai); + } } { List pelayananTidakTerklaimOrigin = pelayananPasienTidakTerklaimDao @@ -2398,7 +2414,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel { List duplicatePetugas = splitPetugasPelayanan.stream() .filter(pt -> pt.getNoRec() == null).collect(Collectors.toList()); - duplicatePetugas.forEach(dp -> dp.setPelayananPasien(duplicate.get())); + List finalSplitMapPetugasPegawai = splitMapPetugasPegawai; + duplicatePetugas.forEach(dp -> { + dp.setPelayananPasien(duplicate.get()); + { + List duplicateMapPetugasPegawai = finalSplitMapPetugasPegawai + .stream().filter(mpp -> mpp.getNoRec() == null) + .collect(Collectors.toList()); + duplicateMapPetugasPegawai.forEach(dm -> dm.setPelayananPasienPetugas(dp)); + mapPetugasPegawai.addAll(duplicateMapPetugasPegawai); + } + }); petugasPelayanan.addAll(duplicatePetugas); } { @@ -2423,6 +2449,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel pelayananPasienPetugasDao.save(petugasPelayanan); pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim); racikanDetailDao.save(racikanDetail); + mapPelayananPasienPetugasToPegawaiDao.save(mapPetugasPegawai); } } } @@ -2797,4 +2824,22 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); return duplicateRacikanDetail; } + + List copyMapPetugasPegawaiSplitQty( + List originMapPetugasPegawai) { + List duplicateMapPetugasPegawai = new ArrayList<>(); + originMapPetugasPegawai.forEach(origin -> { + MapPelayananPasienPetugasToPegawai duplicate; + duplicate = origin; + { + Pegawai pegawai = origin.getPegawai(); + if (CommonUtil.isNotNullOrEmpty(pegawai)) + duplicate.setPegawai(pegawai); + } + duplicate.setNoRec(null); + duplicateMapPetugasPegawai.add(duplicate); + duplicateMapPetugasPegawai.add(origin); + }); + return duplicateMapPetugasPegawai; + } } \ No newline at end of file