Update service pelayanan pasien

Perbaikan validasi voucher untuk pasien anak
This commit is contained in:
Salman Manoe 2023-08-30 11:01:17 +07:00
parent bea9b0903e
commit d10ec1fa10
2 changed files with 53 additions and 41 deletions

View File

@ -1,16 +1,18 @@
package com.jasamedika.medifirst2000.dao; package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.entities.Alamat; import java.util.List;
import com.jasamedika.medifirst2000.entities.Pasien; import java.util.Map;
import javax.persistence.LockModeType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Lock; import org.springframework.data.jpa.repository.Lock;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.persistence.LockModeType; import com.jasamedika.medifirst2000.entities.Alamat;
import java.util.List; import com.jasamedika.medifirst2000.entities.Pasien;
import java.util.Map;
/** /**
* Repository class for Pasien * Repository class for Pasien
@ -18,7 +20,7 @@ import java.util.Map;
* @author Askur * @author Askur
*/ */
@Repository("PasienDao") @Repository("PasienDao")
public interface PasienDao extends PagingAndSortingRepository<Pasien, Integer> { public interface PasienDao extends JpaRepository<Pasien, Integer> {
@Query("select model from Pasien model where model.noCm = :noCm") @Query("select model from Pasien model where model.noCm = :noCm")
List<Pasien> findPasienBynoCm(@Param("noCm") String noCm); List<Pasien> findPasienBynoCm(@Param("noCm") String noCm);
@ -47,6 +49,9 @@ public interface PasienDao extends PagingAndSortingRepository<Pasien, Integer> {
@Query("select model from Pasien model where model.noCm = :noCm") @Query("select model from Pasien model where model.noCm = :noCm")
Pasien findPasienByNoCm(@Param("noCm") String noCm); Pasien findPasienByNoCm(@Param("noCm") String noCm);
@Query(nativeQuery = true, value = "select ps.id from pasien_m ps where ps.nocm = :noCm")
Integer findIdByNoCm(@Param("noCm") String noCm);
@Query("select NEW Map (" + "a.id as id, " + "a.namaPasien as namaPasien, " + "a.tempatLahir as tempatLahir, " @Query("select NEW Map (" + "a.id as id, " + "a.namaPasien as namaPasien, " + "a.tempatLahir as tempatLahir, "
+ "a.tglLahir as tglLahir, " + "a.noBpjs as noBpjs, " + "a.noAsuransiLain as noAsuransiLain, " + "a.tglLahir as tglLahir, " + "a.noBpjs as noBpjs, " + "a.noAsuransiLain as noAsuransiLain, "
+ "a.noTelepon as noTelepon, " + "a.noHp as noHp, " + "a.namaIbu as namaIbu, " + "a.namaAyah as namaAyah, " + "a.noTelepon as noTelepon, " + "a.noHp as noHp, " + "a.namaIbu as namaIbu, " + "a.namaAyah as namaAyah, "

View File

@ -2280,10 +2280,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pendaftaran.ifPresent(p -> { pendaftaran.ifPresent(p -> {
Integer pasienId = p.getPasien().getId(); Integer pasienId = p.getPasien().getId();
String ibuNoCm = p.getPasien().getReportDisplay(); String ibuNoCm = p.getPasien().getReportDisplay();
if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { Integer ibuId = null;
List<Pasien> ibu = pasienDao.findByNoCm(ibuNoCm.trim()); if (CommonUtil.isNotNullOrEmpty(ibuNoCm))
if (CommonUtil.isNotNullOrEmpty(ibu) && !voucher.getPasienId().equals(ibu.get(0).getId())) ibuId = pasienDao.findIdByNoCm(ibuNoCm);
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); if (CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
} else if (!voucher.getPasienId().equals(pasienId)) { } else if (!voucher.getPasienId().equals(pasienId)) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
} }
@ -2298,10 +2299,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pendaftaran.ifPresent(p -> { pendaftaran.ifPresent(p -> {
Integer pasienId = p.getPasien().getId(); Integer pasienId = p.getPasien().getId();
String ibuNoCm = p.getPasien().getReportDisplay(); String ibuNoCm = p.getPasien().getReportDisplay();
if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { Integer ibuId = null;
List<Pasien> ibu = pasienDao.findByNoCm(ibuNoCm.trim()); if (CommonUtil.isNotNullOrEmpty(ibuNoCm))
if (CommonUtil.isNotNullOrEmpty(ibu) && !voucher.getPasienId().equals(ibu.get(0).getId())) ibuId = pasienDao.findIdByNoCm(ibuNoCm);
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); if (CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
} else if (!voucher.getPasienId().equals(pasienId)) { } else if (!voucher.getPasienId().equals(pasienId)) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
} }
@ -2318,9 +2320,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.filter(dto -> !idProdukMapping.contains(dto.getIdProduk())) .filter(dto -> !idProdukMapping.contains(dto.getIdProduk()))
.filter(dto -> !dto.getIdProduk().equals(voucher.getPaketId())).findFirst(); .filter(dto -> !dto.getIdProduk().equals(voucher.getPaketId())).findFirst();
if (dtoPaket.isPresent()) if (dtoPaket.isPresent())
throw new ServiceVOException("Produk " + dtoPaket.get().getNamaProduk() throw new ServiceVOException(
+ " tidak dapat didiskon karena belum dilakukan mapping /" "Produk: " + dtoPaket.get().getNamaProduk() + " - Paket: " + voucher.getPaket().getNamaProduk()
+ " tidak termasuk detail paket yang dapat diskon"); + " belum dilakukan mapping /" + " tidak dapat dilakukan diskon");
List<Integer> idProdukPaketDto = dtoList.stream().map(TagihanPendaftaranDto::getIdProduk) List<Integer> idProdukPaketDto = dtoList.stream().map(TagihanPendaftaranDto::getIdProduk)
.filter(dto -> !dto.equals(voucher.getPaketId())).collect(Collectors.toList()); .filter(dto -> !dto.equals(voucher.getPaketId())).collect(Collectors.toList());
mappingProdukPaket.stream().filter(d -> idProdukPaketDto.contains(d.getProdukId())).forEach(d -> { mappingProdukPaket.stream().filter(d -> idProdukPaketDto.contains(d.getProdukId())).forEach(d -> {
@ -2337,25 +2339,28 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<String> norecPelayananPaket = dtoList.stream() List<String> norecPelayananPaket = dtoList.stream()
.filter(d -> voucher.getPaketId().equals(d.getIdProduk())).map(TagihanPendaftaranDto::getNoRec) .filter(d -> voucher.getPaketId().equals(d.getIdProduk())).map(TagihanPendaftaranDto::getNoRec)
.collect(Collectors.toList()); .collect(Collectors.toList());
List<PelayananPasien> pelayananPaket = pelayananPasienDao.findAll(norecPelayananPaket); if (CommonUtil.isNotNullOrEmpty(norecPelayananPaket)) {
pelayananPaket.forEach(p -> { List<PelayananPasien> pelayananPaket = pelayananPasienDao.findAll(norecPelayananPaket);
Double hargaDiscount = p.getHargaDiscount(); pelayananPaket.forEach(p -> {
if (CommonUtil.isNotNullOrEmpty(hargaDiscount) && hargaDiscount > 0.0) { Double hargaDiscount = p.getHargaDiscount();
// Cek Detail Diskon if (CommonUtil.isNotNullOrEmpty(hargaDiscount) && hargaDiscount > 0.0) {
List<PelayananPasienDetail> detailPelayananPaket = pelayananPasienDetailDao // Cek Detail Diskon
.findByPelayananPasien(p.getNoRec()); List<PelayananPasienDetail> detailPelayananPaket = pelayananPasienDetailDao
List<PelayananPasienDetail> detailDiskon = detailPelayananPaket.stream() .findByPelayananPasien(p.getNoRec());
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList()); List<PelayananPasienDetail> detailDiskon = detailPelayananPaket.stream()
if (CommonUtil.isNotNullOrEmpty(detailDiskon) && !detailDiskon.isEmpty()) { .filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
// Reset Diskon if (CommonUtil.isNotNullOrEmpty(detailDiskon) && !detailDiskon.isEmpty()) {
detailDiskon.forEach(d -> d.setHargaDiscount(0.0)); // Reset Diskon
detailPelayanan.addAll(detailDiskon); detailDiskon.forEach(d -> d.setHargaDiscount(0.0));
detailPelayanan.addAll(detailDiskon);
}
} }
} p.setVoucherPaket(voucher);
p.setVoucherPaket(voucher); p.setHargaDiscount(0.0);
p.setHargaDiscount(0.0); });
}); }
pelayananPasienDetailDao.save(detailPelayanan); if (CommonUtil.isNotNullOrEmpty(detailPelayanan))
pelayananPasienDetailDao.save(detailPelayanan);
} }
{ {
List<PelayananPasien> pelayanan = new ArrayList<>(); List<PelayananPasien> pelayanan = new ArrayList<>();
@ -2371,7 +2376,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pelayanan.add(p); pelayanan.add(p);
}); });
}); });
pelayananPasienDao.save(pelayanan); if (CommonUtil.isNotNullOrEmpty(pelayanan))
pelayananPasienDao.save(pelayanan);
} }
{ {
List<PelayananPasien> pelayanan = new ArrayList<>(); List<PelayananPasien> pelayanan = new ArrayList<>();
@ -2549,10 +2555,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
VoucherPaket voucher = getVoucher(kodeVoucher, basicValidation); VoucherPaket voucher = getVoucher(kodeVoucher, basicValidation);
PasienDaftar pendaftaran = pasienDaftarDao.findByNoRegistrasi(noRegistrasi); PasienDaftar pendaftaran = pasienDaftarDao.findByNoRegistrasi(noRegistrasi);
String ibuNoCm = pendaftaran.getPasien().getReportDisplay(); String ibuNoCm = pendaftaran.getPasien().getReportDisplay();
if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { Integer ibuId = null;
List<Pasien> ibu = pasienDao.findByNoCm(ibuNoCm.trim()); if (CommonUtil.isNotNullOrEmpty(ibuNoCm))
if (CommonUtil.isNotNullOrEmpty(ibu) && !voucher.getPasienId().equals(ibu.get(0).getId())) ibuId = pasienDao.findIdByNoCm(ibuNoCm);
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); if (CommonUtil.isNotNullOrEmpty(ibuId) && !voucher.getPasienId().equals(ibuId)) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
} else if (CommonUtil.isNotNullOrEmpty(pendaftaran) } else if (CommonUtil.isNotNullOrEmpty(pendaftaran)
&& !pendaftaran.getPasien().getId().equals(voucher.getPasienId())) { && !pendaftaran.getPasien().getId().equals(voucher.getPasienId())) {
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");