Update PelayananPasienServiceImpl.java

Perbaikan set harga diskon kepala paket dan entri relasi voucher saat batal paket
This commit is contained in:
Salman Manoe 2023-08-23 10:26:44 +07:00
parent e467876858
commit 514b89c9cd

View File

@ -2222,10 +2222,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} }
if (CommonUtil.isNotNullOrEmpty(kodeVoucher)) { if (CommonUtil.isNotNullOrEmpty(kodeVoucher)) {
VoucherPaket voucher = getVoucher(kodeVoucher, false); VoucherPaket voucher = getVoucher(kodeVoucher, false);
List<String> listNoRec = dtoList.stream().filter(TagihanPendaftaranDto::getIsPaket) List<String> norecPelayananChecked = dtoList.stream().filter(TagihanPendaftaranDto::getIsPaket)
.map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList()); .map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
List<PelayananPasien> listPelayanan = pelayananPasienDao.findAll(listNoRec); List<PelayananPasien> pelayananChecked = pelayananPasienDao.findAll(norecPelayananChecked);
Optional<PasienDaftar> pendaftaran = listPelayanan.stream().map(p -> p.getPasien().getPasienDaftar()) Optional<PasienDaftar> pendaftaran = pelayananChecked.stream().map(p -> p.getPasien().getPasienDaftar())
.findFirst(); .findFirst();
pendaftaran.ifPresent(p -> { pendaftaran.ifPresent(p -> {
Integer pasienId = p.getPasien().getId(); Integer pasienId = p.getPasien().getId();
@ -2235,38 +2235,34 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pasienDaftarDao.save(p); pasienDaftarDao.save(p);
}); });
{ {
List<MapProdukPaketToProduk> detail = mapProdukPaketToProdukDao List<MapProdukPaketToProduk> mappingProdukPaket = mapProdukPaketToProdukDao
.findAllByPaketId(voucher.getPaket().getId()); .findAllByPaketId(voucher.getPaket().getId());
List<Integer> listIdDetail = detail.stream().map(MapProdukPaketToProduk::getProdukId) List<Integer> idProdukMapping = mappingProdukPaket.stream().map(MapProdukPaketToProduk::getProdukId)
.collect(Collectors.toList()); .collect(Collectors.toList());
Optional<TagihanPendaftaranDto> byProduk = dtoList.stream() Optional<TagihanPendaftaranDto> dtoPaket = dtoList.stream()
.filter(dto -> !listIdDetail.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 (byProduk.isPresent()) if (dtoPaket.isPresent())
throw new ServiceVOException("Produk " + byProduk.get().getNamaProduk() throw new ServiceVOException("Produk " + dtoPaket.get().getNamaProduk()
+ " tidak dapat didiskon karena belum dilakukan mapping /" + " tidak dapat didiskon karena belum dilakukan mapping /"
+ " tidak termasuk detail paket yang dapat diskon"); + " tidak termasuk detail paket yang dapat diskon");
List<Integer> listIdDto = 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());
detail.stream().filter(d -> listIdDto.contains(d.getProdukId())).forEach(d -> { mappingProdukPaket.stream().filter(d -> idProdukPaketDto.contains(d.getProdukId())).forEach(d -> {
List<Map<String, Object>> maps = hargaNettoProdukByKelasDao.checkExisting(voucher.getKelasId(), List<Map<String, Object>> tarifProdukPaket = hargaNettoProdukByKelasDao
d.getProdukPaketId()); .checkExisting(voucher.getKelasId(), d.getProdukPaketId());
if (CommonUtil.isNullOrEmpty(maps) && maps.isEmpty()) if (CommonUtil.isNullOrEmpty(tarifProdukPaket) && tarifProdukPaket.isEmpty())
throw new ServiceVOException("Harga tarif tidak ditemukan untuk produk " throw new ServiceVOException("Harga tarif tidak ditemukan untuk produk "
+ d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk() + d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk()
+ ") dan kelas " + voucher.getKelas().getNamaKelas()); + ") dan kelas " + voucher.getKelas().getNamaKelas());
}); });
} }
listPelayanan.forEach(p -> { {
Optional<TagihanPendaftaranDto> dto = dtoList.stream().filter(d -> d.getNoRec().equals(p.getNoRec())) List<String> norecPelayananPaket = dtoList.stream()
.findFirst(); .filter(d -> voucher.getPaketId().equals(d.getIdProduk())).map(TagihanPendaftaranDto::getNoRec)
dto.ifPresent(tagihanPendaftaranDto -> { .collect(Collectors.toList());
p.setHargaDiscount(tagihanPendaftaranDto.getHargaDiskon()); List<PelayananPasien> pelayananPaket = pelayananPasienDao.findAll(norecPelayananPaket);
p.setJasa(tagihanPendaftaranDto.getHargaJasa()); pelayananPaket.forEach(p -> {
p.setIsPaket(tagihanPendaftaranDto.getIsPaket());
p.setVoucherPaket(voucher);
});
if (p.getProdukId().equals(voucher.getPaketId())) {
if (p.getHargaDiscount() > 0.0) { if (p.getHargaDiscount() > 0.0) {
List<PelayananPasienDetail> detailPelayanan = pelayananPasienDetailDao List<PelayananPasienDetail> detailPelayanan = pelayananPasienDetailDao
.getPelayananPasienDetail(p.getNoRec()); .getPelayananPasienDetail(p.getNoRec());
@ -2277,10 +2273,23 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pelayananPasienDetailDao.save(detailDiscount); pelayananPasienDetailDao.save(detailDiscount);
} }
} }
p.setVoucherPaket(voucher);
p.setHargaDiscount(0.0); p.setHargaDiscount(0.0);
} });
}); }
pelayananPasienDao.save(listPelayanan); {
pelayananChecked.forEach(p -> {
Optional<TagihanPendaftaranDto> dtoChecked = dtoList.stream()
.filter(d -> d.getNoRec().equals(p.getNoRec())).findFirst();
dtoChecked.ifPresent(d -> {
p.setHargaDiscount(d.getHargaDiskon());
p.setJasa(d.getHargaJasa());
p.setIsPaket(d.getIsPaket());
p.setVoucherPaket(voucher);
});
});
pelayananPasienDao.save(pelayananChecked);
}
} else { } else {
List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList()); List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
List<PelayananPasien> listPelayanan = pelayananPasienDao.findAll(listNoRec); List<PelayananPasien> listPelayanan = pelayananPasienDao.findAll(listNoRec);