diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPetugasDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPetugasDao.java index 7955ed23..3e9491b2 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPetugasDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienPetugasDao.java @@ -1,15 +1,14 @@ package com.jasamedika.medifirst2000.dao; -import java.util.List; -import java.util.Map; - +import com.jasamedika.medifirst2000.entities.PelayananPasienPetugas; import org.springframework.data.domain.Pageable; 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.PelayananPasienPetugas; +import java.util.List; +import java.util.Map; /** * Repository class for PelayananPasien @@ -18,7 +17,6 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienPetugas; */ @Repository("PelayananPasienPetugasDao") public interface PelayananPasienPetugasDao extends PagingAndSortingRepository { - @Query("select new Map(ppp.pelayananPasienId as pelayananId, count(ppp.pelayananPasienId) as sumPelayananId) " + "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp " + "where ppp.statusEnabled is true " + "and pp.statusEnabled is true " @@ -48,4 +46,6 @@ public interface PelayananPasienPetugasDao extends PagingAndSortingRepository> findDokterByTindakan(@Param("produkId") Integer idProduk, @Param("kelompokKerjaId") Integer idKelompokKerja, Pageable pageable); + @Query("select ppp from PelayananPasienPetugas ppp left join ppp.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 670b24e0..442d30d4 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 @@ -105,6 +105,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private HargaNettoProdukByKelasDao hargaNettoProdukByKelasDao; + @Autowired + private PelayananPasienPetugasDao pelayananPasienPetugasDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -2270,8 +2273,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .checkExisting(voucher.getKelasId(), d.getProdukPaketId()); if (CommonUtil.isNullOrEmpty(tarifProdukPaket) && tarifProdukPaket.isEmpty()) throw new ServiceVOException("Harga tarif tidak ditemukan untuk produk " - + d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk() - + ") dan kelas " + voucher.getKelas().getNamaKelas()); + + d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk() + ") dan kelas " + + voucher.getKelas().getNamaKelas()); }); } { @@ -2318,12 +2321,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel { List pelayanan = new ArrayList<>(); List detailPelayanan = new ArrayList<>(); + List petugasPelayanan = new ArrayList<>(); dtoList.forEach(dto -> { Optional pelayananReducedQty = pelayananChecked.stream() .filter(p -> p.getNoRec().equals(dto.getNoRec())) .filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst(); pelayananReducedQty.ifPresent(p -> { List splitDetailPelayanan = new ArrayList<>(); + List splitPetugasPelayanan = new ArrayList<>(); List splitPelayanan = copyPelayananSplitQty(p); Optional origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null) .findFirst(); @@ -2341,10 +2346,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .filter(d -> d.getNoRec() != null).collect(Collectors.toList()); detailPelayanan.addAll(originDetail); } + { + List petugasOrigin = pelayananPasienPetugasDao + .findByPelayananPasien(origin.get().getNoRec()); + splitPetugasPelayanan = copyPelayananPasienPetugasSplitQty(petugasOrigin); + List originPetugas = splitPetugasPelayanan.stream() + .filter(pt -> pt.getNoRec() != null).collect(Collectors.toList()); + petugasPelayanan.addAll(originPetugas); + } pelayanan.add(origin.get()); } - Optional duplicate = splitPelayanan.stream() - .filter(cp -> cp.getNoRec() == null).findFirst(); + Optional duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null) + .findFirst(); if (duplicate.isPresent()) { duplicate.get().setJumlah(pelayananReducedQty.get().getJumlah() - dto.getJumlah()); duplicate.get().setIsPaket(false); @@ -2355,6 +2368,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel duplicateDetail.forEach(d -> d.setPelayananPasien(duplicate.get())); detailPelayanan.addAll(duplicateDetail); } + { + List duplicatePetugas = splitPetugasPelayanan.stream() + .filter(pt -> pt.getNoRec() == null).collect(Collectors.toList()); + duplicatePetugas.forEach(dp -> dp.setPelayananPasien(duplicate.get())); + petugasPelayanan.addAll(duplicatePetugas); + } pelayanan.add(duplicate.get()); } }); @@ -2362,6 +2381,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel if (CommonUtil.isNotNullOrEmpty(pelayanan)) { pelayananPasienDao.save(pelayanan); pelayananPasienDetailDao.save(detailPelayanan); + pelayananPasienPetugasDao.save(petugasPelayanan); } } } @@ -2578,4 +2598,47 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); return duplicateDetail; } + + private List copyPelayananPasienPetugasSplitQty( + List originPetugas) { + List duplicatePetugas = new ArrayList<>(); + originPetugas.forEach(origin -> { + PelayananPasienPetugas duplicate; + duplicate = origin; + { + AntrianPasienDiPeriksa nomasuk = origin.getNomasuk(); + if (CommonUtil.isNotNullOrEmpty(nomasuk)) + duplicate.setNomasuk(nomasuk); + } + { + AsalProduk kdasalproduk = origin.getKdasalproduk(); + if (CommonUtil.isNotNullOrEmpty(kdasalproduk)) + duplicate.setKdasalproduk(kdasalproduk); + } + { + JenisPetugasPelaksana kdjenispetugaspe = origin.getKdjenispetugaspe(); + if (CommonUtil.isNotNullOrEmpty(kdjenispetugaspe)) + duplicate.setKdjenispetugaspe(kdjenispetugaspe); + } + { + Pegawai kdpegawai = origin.getKdpegawai(); + if (CommonUtil.isNotNullOrEmpty(kdpegawai)) + duplicate.setKdpegawai(kdpegawai); + } + { + Produk kdproduk = origin.getKdproduk(); + if (CommonUtil.isNotNullOrEmpty(kdproduk)) + duplicate.setKdproduk(kdproduk); + } + { + Ruangan kdruangan = origin.getKdruangan(); + if (CommonUtil.isNotNullOrEmpty(kdruangan)) + duplicate.setKdruangan(kdruangan); + } + duplicate.setNoRec(null); + duplicatePetugas.add(duplicate); + duplicatePetugas.add(origin); + }); + return duplicatePetugas; + } } \ No newline at end of file