Update service pelayanan pasien
Pembuatan split child relation : pelayanan pasien detail saat split jumlah produk paket saat diskon paket
This commit is contained in:
parent
f13ba6dcf6
commit
1e7ace5f42
@ -16,7 +16,7 @@ import java.util.List;
|
||||
@Repository("PelayananPasienDetailDao")
|
||||
public interface PelayananPasienDetailDao extends PagingAndSortingRepository<PelayananPasienDetail, String> {
|
||||
@Query("select model from PelayananPasienDetail model left join model.pelayananPasien a where a.noRec=:noRec")
|
||||
List<PelayananPasienDetail> getPelayananPasienDetail(@Param("noRec") String noRec);
|
||||
List<PelayananPasienDetail> findByPelayananPasien(@Param("noRec") String noRec);
|
||||
|
||||
@Query("select sum(ppd.hargaDiscount) " + "from PelayananPasienDetail ppd "
|
||||
+ "where ppd.pelayananPasienId = :noRec " + "and ppd.komponenHargaId = 35")
|
||||
|
||||
@ -2265,7 +2265,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
pelayananPaket.forEach(p -> {
|
||||
if (p.getHargaDiscount() > 0.0) {
|
||||
List<PelayananPasienDetail> detailPelayanan = pelayananPasienDetailDao
|
||||
.getPelayananPasienDetail(p.getNoRec());
|
||||
.findByPelayananPasien(p.getNoRec());
|
||||
List<PelayananPasienDetail> detailDiscount = detailPelayanan.stream()
|
||||
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
|
||||
if (CommonUtil.isNotNullOrEmpty(detailDiscount) && !detailDiscount.isEmpty()) {
|
||||
@ -2292,14 +2292,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
pelayananPasienDao.save(pelayananChecked);
|
||||
}
|
||||
{
|
||||
List<PelayananPasien> pelayanan = new ArrayList<>();
|
||||
List<PelayananPasienDetail> detailPelayanan = new ArrayList<>();
|
||||
dtoList.forEach(dto -> {
|
||||
Optional<PelayananPasien> pelayananSplitQty = pelayananChecked.stream()
|
||||
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
|
||||
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
|
||||
.filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst();
|
||||
pelayananSplitQty.ifPresent(p -> {
|
||||
List<PelayananPasien> copyPelayanan = copyPelayananSplitQty(p);
|
||||
Optional<PelayananPasien> origin = copyPelayanan.stream()
|
||||
.filter(cp -> cp.getNoRec() != null)
|
||||
pelayananReducedQty.ifPresent(p -> {
|
||||
List<PelayananPasienDetail> splitDetailPelayanan = new ArrayList<>();
|
||||
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
|
||||
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
|
||||
.findFirst();
|
||||
if (origin.isPresent()) {
|
||||
origin.get().setJumlah(dto.getJumlah());
|
||||
@ -2307,13 +2309,36 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
origin.get().setJasa(dto.getHargaJasa());
|
||||
origin.get().setIsPaket(dto.getIsPaket());
|
||||
origin.get().setVoucherPaket(voucher);
|
||||
{
|
||||
List<PelayananPasienDetail> detailOrigin = pelayananPasienDetailDao
|
||||
.findByPelayananPasien(origin.get().getNoRec());
|
||||
splitDetailPelayanan = copyPelayananDetailSplitQty(detailOrigin);
|
||||
List<PelayananPasienDetail> originDetail = splitDetailPelayanan.stream()
|
||||
.filter(d -> d.getNoRec() != null).collect(Collectors.toList());
|
||||
detailOrigin.addAll(originDetail);
|
||||
}
|
||||
pelayanan.add(origin.get());
|
||||
}
|
||||
Optional<PelayananPasien> duplicate = copyPelayanan.stream()
|
||||
.filter(cp -> cp.getNoRec() == null)
|
||||
Optional<PelayananPasien> duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null)
|
||||
.findFirst();
|
||||
duplicate.ifPresent(d -> d.setJumlah(pelayananSplitQty.get().getJumlah() - dto.getJumlah()));
|
||||
if (duplicate.isPresent()) {
|
||||
duplicate.get().setJumlah(pelayananReducedQty.get().getJumlah() - dto.getJumlah());
|
||||
duplicate.get().setIsPaket(false);
|
||||
duplicate.get().setVoucherPaket(voucher);
|
||||
{
|
||||
List<PelayananPasienDetail> duplicateDetail = splitDetailPelayanan.stream()
|
||||
.filter(d -> d.getNoRec() == null).collect(Collectors.toList());
|
||||
duplicateDetail.forEach(d -> d.setPelayananPasien(duplicate.get()));
|
||||
detailPelayanan.addAll(duplicateDetail);
|
||||
}
|
||||
pelayanan.add(duplicate.get());
|
||||
}
|
||||
});
|
||||
});
|
||||
if (CommonUtil.isNotNullOrEmpty(pelayanan)) {
|
||||
pelayananPasienDao.save(pelayanan);
|
||||
pelayananPasienDetailDao.save(detailPelayanan);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
|
||||
@ -2491,4 +2516,55 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<PelayananPasienDetail> copyPelayananDetailSplitQty(List<PelayananPasienDetail> originDetail) {
|
||||
List<PelayananPasienDetail> duplicateDetail = new ArrayList<>();
|
||||
originDetail.forEach(origin -> {
|
||||
PelayananPasienDetail duplicate;
|
||||
duplicate = origin;
|
||||
{
|
||||
AntrianPasienDiPeriksa pasien = origin.getPasien();
|
||||
if (CommonUtil.isNotNullOrEmpty(pasien))
|
||||
duplicate.setPasien(pasien);
|
||||
}
|
||||
{
|
||||
KomponenHarga komponenHarga = origin.getKomponenHarga();
|
||||
if (CommonUtil.isNotNullOrEmpty(komponenHarga))
|
||||
duplicate.setKomponenHarga(komponenHarga);
|
||||
}
|
||||
{
|
||||
Produk produk = origin.getProduk();
|
||||
if (CommonUtil.isNotNullOrEmpty(produk))
|
||||
duplicate.setProduk(produk);
|
||||
}
|
||||
{
|
||||
Generik generik = origin.getGenerik();
|
||||
if (CommonUtil.isNotNullOrEmpty(generik))
|
||||
duplicate.setGenerik(generik);
|
||||
}
|
||||
{
|
||||
JenisObat jenisObat = origin.getJenisObat();
|
||||
if (CommonUtil.isNotNullOrEmpty(jenisObat))
|
||||
duplicate.setJenisObat(jenisObat);
|
||||
}
|
||||
{
|
||||
RouteFarmasi route = origin.getRoute();
|
||||
if (CommonUtil.isNotNullOrEmpty(route))
|
||||
duplicate.setRoute(route);
|
||||
}
|
||||
{
|
||||
Stigma keteranganPakai = origin.getKeteranganPakai();
|
||||
if (CommonUtil.isNotNullOrEmpty(keteranganPakai))
|
||||
duplicate.setKeteranganPakai(keteranganPakai);
|
||||
}
|
||||
{
|
||||
StrukOrder strukOrder = origin.getStrukOrder();
|
||||
if (CommonUtil.isNotNullOrEmpty(strukOrder))
|
||||
duplicate.setStrukOrder(strukOrder);
|
||||
}
|
||||
duplicate.setNoRec(null);
|
||||
duplicateDetail.add(duplicate);
|
||||
duplicateDetail.add(origin);
|
||||
});
|
||||
return duplicateDetail;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user