Update service pelayanan pasien
Perbaikan validasi voucher untuk pasien anak
This commit is contained in:
parent
bea9b0903e
commit
d10ec1fa10
@ -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, "
|
||||
|
||||
@ -2280,10 +2280,11 @@ 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()))
|
||||
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
|
||||
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,10 +2299,11 @@ 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()))
|
||||
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
|
||||
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,25 +2339,28 @@ 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());
|
||||
List<PelayananPasien> pelayananPaket = pelayananPasienDao.findAll(norecPelayananPaket);
|
||||
pelayananPaket.forEach(p -> {
|
||||
Double hargaDiscount = p.getHargaDiscount();
|
||||
if (CommonUtil.isNotNullOrEmpty(hargaDiscount) && hargaDiscount > 0.0) {
|
||||
// Cek Detail Diskon
|
||||
List<PelayananPasienDetail> detailPelayananPaket = pelayananPasienDetailDao
|
||||
.findByPelayananPasien(p.getNoRec());
|
||||
List<PelayananPasienDetail> detailDiskon = detailPelayananPaket.stream()
|
||||
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
|
||||
if (CommonUtil.isNotNullOrEmpty(detailDiskon) && !detailDiskon.isEmpty()) {
|
||||
// Reset Diskon
|
||||
detailDiskon.forEach(d -> d.setHargaDiscount(0.0));
|
||||
detailPelayanan.addAll(detailDiskon);
|
||||
if (CommonUtil.isNotNullOrEmpty(norecPelayananPaket)) {
|
||||
List<PelayananPasien> pelayananPaket = pelayananPasienDao.findAll(norecPelayananPaket);
|
||||
pelayananPaket.forEach(p -> {
|
||||
Double hargaDiscount = p.getHargaDiscount();
|
||||
if (CommonUtil.isNotNullOrEmpty(hargaDiscount) && hargaDiscount > 0.0) {
|
||||
// Cek Detail Diskon
|
||||
List<PelayananPasienDetail> detailPelayananPaket = pelayananPasienDetailDao
|
||||
.findByPelayananPasien(p.getNoRec());
|
||||
List<PelayananPasienDetail> detailDiskon = detailPelayananPaket.stream()
|
||||
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
|
||||
if (CommonUtil.isNotNullOrEmpty(detailDiskon) && !detailDiskon.isEmpty()) {
|
||||
// Reset Diskon
|
||||
detailDiskon.forEach(d -> d.setHargaDiscount(0.0));
|
||||
detailPelayanan.addAll(detailDiskon);
|
||||
}
|
||||
}
|
||||
}
|
||||
p.setVoucherPaket(voucher);
|
||||
p.setHargaDiscount(0.0);
|
||||
});
|
||||
pelayananPasienDetailDao.save(detailPelayanan);
|
||||
p.setVoucherPaket(voucher);
|
||||
p.setHargaDiscount(0.0);
|
||||
});
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(detailPelayanan))
|
||||
pelayananPasienDetailDao.save(detailPelayanan);
|
||||
}
|
||||
{
|
||||
List<PelayananPasien> pelayanan = new ArrayList<>();
|
||||
@ -2371,7 +2376,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
pelayanan.add(p);
|
||||
});
|
||||
});
|
||||
pelayananPasienDao.save(pelayanan);
|
||||
if (CommonUtil.isNotNullOrEmpty(pelayanan))
|
||||
pelayananPasienDao.save(pelayanan);
|
||||
}
|
||||
{
|
||||
List<PelayananPasien> pelayanan = new ArrayList<>();
|
||||
@ -2549,10 +2555,11 @@ 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()))
|
||||
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
|
||||
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())) {
|
||||
throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user