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 9a588e3d..5921dd1f 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 @@ -4,8 +4,8 @@ import com.jasamedika.medifirst2000.entities.PelayananPasien; import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; import com.jasamedika.medifirst2000.entities.StrukPelayanan; import com.jasamedika.medifirst2000.entities.StrukResep; +import org.springframework.data.jpa.repository.JpaRepository; 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; @@ -19,7 +19,7 @@ import java.util.Map; * @author Generator */ @Repository("PelayananPasienDao") -public interface PelayananPasienDao extends PagingAndSortingRepository { +public interface PelayananPasienDao extends JpaRepository { @Query("select p from PelayananPasien p where p.noRec=:noRec ") PelayananPasien findByNoRec(@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 3f141271..acf03fdf 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 @@ -2280,7 +2280,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel { pelayananChecked.forEach(p -> { Optional dtoChecked = dtoList.stream() - .filter(d -> d.getNoRec().equals(p.getNoRec())).findFirst(); + .filter(d -> d.getNoRec().equals(p.getNoRec())) + .filter(d -> d.getJumlah().equals(p.getJumlah())).findFirst(); dtoChecked.ifPresent(d -> { p.setHargaDiscount(d.getHargaDiskon()); p.setJasa(d.getHargaJasa()); @@ -2290,6 +2291,30 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel }); pelayananPasienDao.save(pelayananChecked); } + { + dtoList.forEach(dto -> { + Optional pelayananSplitQty = pelayananChecked.stream() + .filter(p -> p.getNoRec().equals(dto.getNoRec())) + .filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst(); + pelayananSplitQty.ifPresent(p -> { + List copyPelayanan = copyPelayananSplitQty(p); + Optional origin = copyPelayanan.stream() + .filter(cp -> cp.getNoRec() != null) + .findFirst(); + if (origin.isPresent()) { + origin.get().setJumlah(dto.getJumlah()); + origin.get().setHargaDiscount(dto.getHargaDiskon()); + origin.get().setJasa(dto.getHargaJasa()); + origin.get().setIsPaket(dto.getIsPaket()); + origin.get().setVoucherPaket(voucher); + } + Optional duplicate = copyPelayanan.stream() + .filter(cp -> cp.getNoRec() == null) + .findFirst(); + duplicate.ifPresent(d -> d.setJumlah(pelayananSplitQty.get().getJumlah() - dto.getJumlah())); + }); + }); + } } else { List listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList()); List listPelayanan = pelayananPasienDao.findAll(listNoRec); @@ -2376,4 +2401,94 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } } + private List copyPelayananSplitQty(PelayananPasien originPelayanan) { + List result = new ArrayList<>(); + PelayananPasien duplicatePelayanan; + duplicatePelayanan = originPelayanan; + { + AntrianPasienDiPeriksa antrian = originPelayanan.getPasien(); + if (CommonUtil.isNotNullOrEmpty(antrian)) + duplicatePelayanan.setPasien(antrian); + } + { + JenisKemasan jenisKemasan = originPelayanan.getJenisKemasan(); + if (CommonUtil.isNotNullOrEmpty(jenisKemasan)) + duplicatePelayanan.setJenisKemasan(jenisKemasan); + } + { + Kelas kelas = originPelayanan.getKelas(); + if (CommonUtil.isNotNullOrEmpty(kelas)) + duplicatePelayanan.setKelas(kelas); + } + { + KelompokTransaksi kelompokTransaksi = originPelayanan.getKelompokTransaksi(); + if (CommonUtil.isNotNullOrEmpty(kelompokTransaksi)) + duplicatePelayanan.setKelompokTransaksi(kelompokTransaksi); + } + { + Produk produk = originPelayanan.getProduk(); + if (CommonUtil.isNotNullOrEmpty(produk)) + duplicatePelayanan.setProduk(produk); + } + { + Generik generik = originPelayanan.getGenerik(); + if (CommonUtil.isNotNullOrEmpty(generik)) + duplicatePelayanan.setGenerik(generik); + } + { + JenisObat jenisObat = originPelayanan.getJenisObat(); + if (CommonUtil.isNotNullOrEmpty(jenisObat)) + duplicatePelayanan.setJenisObat(jenisObat); + } + { + RouteFarmasi route = originPelayanan.getRoute(); + if (CommonUtil.isNotNullOrEmpty(route)) + duplicatePelayanan.setRoute(route); + } + { + SatuanStandar satuanView = originPelayanan.getSatuanView(); + if (CommonUtil.isNotNullOrEmpty(satuanView)) + duplicatePelayanan.setSatuanView(satuanView); + } + { + Stigma keteranganPakai = originPelayanan.getKeteranganPakai(); + if (CommonUtil.isNotNullOrEmpty(keteranganPakai)) + duplicatePelayanan.setKeteranganPakai(keteranganPakai); + } + { + StrukOrder strukOrder = originPelayanan.getStrukOrder(); + if (CommonUtil.isNotNullOrEmpty(strukOrder)) + duplicatePelayanan.setStrukOrder(strukOrder); + } + { + StrukPelayanan strukPelayanan = originPelayanan.getStrukPelayanan(); + if (CommonUtil.isNotNullOrEmpty(strukPelayanan)) + duplicatePelayanan.setStrukPelayanan(strukPelayanan); + } + { + StrukPelayanan strukTerima = originPelayanan.getStrukTerima(); + if (CommonUtil.isNotNullOrEmpty(strukTerima)) + duplicatePelayanan.setStrukTerima(strukTerima); + } + { + StrukPelayananDNoBatch noBatch = originPelayanan.getNoBatch(); + if (CommonUtil.isNotNullOrEmpty(noBatch)) + duplicatePelayanan.setNoBatch(noBatch); + } + { + StrukResep strukResep = originPelayanan.getStrukResep(); + if (CommonUtil.isNotNullOrEmpty(strukResep)) + duplicatePelayanan.setStrukResep(strukResep); + } + { + VoucherPaket voucherPaket = originPelayanan.getVoucherPaket(); + if (CommonUtil.isNotNullOrEmpty(voucherPaket)) + duplicatePelayanan.setVoucherPaket(voucherPaket); + } + duplicatePelayanan.setNoRec(null); + result.add(duplicatePelayanan); + result.add(originPelayanan); + return result; + } + } \ No newline at end of file