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;
import com.jasamedika.medifirst2000.entities.Alamat;
import com.jasamedika.medifirst2000.entities.Pasien;
import java.util.List;
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.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import javax.persistence.LockModeType;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.entities.Alamat;
import com.jasamedika.medifirst2000.entities.Pasien;
/**
* Repository class for Pasien
@ -18,7 +20,7 @@ import java.util.Map;
* @author Askur
*/
@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")
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")
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, "
+ "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, "

View File

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