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 ec18e273..129445fc 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 @@ -133,6 +133,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel @Autowired private MapPelayananPasienPetugasToPegawaiDao mapPelayananPasienPetugasToPegawaiDao; + @Autowired + private PasienDao pasienDao; + @Override public Map savePelayananPasien(PelayananPasienVO vo) { Map result = new HashMap<>(); @@ -2276,8 +2279,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .findFirst(); pendaftaran.ifPresent(p -> { Integer pasienId = p.getPasien().getId(); - if (!voucher.getPasienId().equals(pasienId)) + String ibuNoCm = p.getPasien().getReportDisplay(); + if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { + List 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"); + } else if (!voucher.getPasienId().equals(pasienId)) { throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + } p.setVoucherPaket(voucher); pasienDaftarDao.save(p); }); @@ -2288,8 +2297,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .findFirst(); pendaftaran.ifPresent(p -> { Integer pasienId = p.getPasien().getId(); - if (!voucher.getPasienId().equals(pasienId)) + String ibuNoCm = p.getPasien().getReportDisplay(); + if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { + List 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"); + } else if (!voucher.getPasienId().equals(pasienId)) { throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + } p.setVoucherPaket(voucher); pasienDaftarDao.save(p); }); @@ -2299,7 +2314,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .findAllByPaketId(voucher.getPaket().getId()); List idProdukMapping = mappingProdukPaket.stream().map(MapProdukPaketToProduk::getProdukId) .collect(Collectors.toList()); - Optional dtoPaket = dtoList.stream().filter(dto -> dto.getIsPaket()) + Optional dtoPaket = dtoList.stream().filter(TagihanPendaftaranDto::getIsPaket) .filter(dto -> !idProdukMapping.contains(dto.getIdProduk())) .filter(dto -> !dto.getIdProduk().equals(voucher.getPaketId())).findFirst(); if (dtoPaket.isPresent()) @@ -2490,8 +2505,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel VoucherPaket voucher = getVoucher(kodeVoucher, noRegistrasi, false); List listPendaftaranLain = pasienDaftarDao .findByPasienAndVoucherAndNoRegistrasiNot(voucher.getPasienId(), kodeVoucher, noRegistrasi); + listPendaftaranLain.forEach(p -> { + if (p.getIsBatalPaket() == null) + p.setIsBatalPaket(false); + }); Optional first = listPendaftaranLain.stream().filter(PasienDaftar::getIsBatalPaket).findFirst(); - if (first.isPresent()) + if (CommonUtil.isNotNullOrEmpty(first) && first.isPresent()) throw new ServiceVOException("Paket dengan menggunakan kode voucher ini sudah dibatalkan"); return !CommonUtil.isNullOrEmpty(voucher); } @@ -2529,8 +2548,15 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel throw new ServiceVOException("Nomor registrasi harus diisi"); VoucherPaket voucher = getVoucher(kodeVoucher, basicValidation); PasienDaftar pendaftaran = pasienDaftarDao.findByNoRegistrasi(noRegistrasi); - if (CommonUtil.isNotNullOrEmpty(pendaftaran) && !pendaftaran.getPasien().getId().equals(voucher.getPasienId())) + String ibuNoCm = pendaftaran.getPasien().getReportDisplay(); + if (CommonUtil.isNotNullOrEmpty(ibuNoCm)) { + List 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"); + } else if (CommonUtil.isNotNullOrEmpty(pendaftaran) + && !pendaftaran.getPasien().getId().equals(voucher.getPasienId())) { throw new ServiceVOException("Kode voucher tidak sesuai dengan pasien yang diperuntukkan"); + } return voucher; }