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")
|
@Repository("PelayananPasienDetailDao")
|
||||||
public interface PelayananPasienDetailDao extends PagingAndSortingRepository<PelayananPasienDetail, String> {
|
public interface PelayananPasienDetailDao extends PagingAndSortingRepository<PelayananPasienDetail, String> {
|
||||||
@Query("select model from PelayananPasienDetail model left join model.pelayananPasien a where a.noRec=:noRec")
|
@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 "
|
@Query("select sum(ppd.hargaDiscount) " + "from PelayananPasienDetail ppd "
|
||||||
+ "where ppd.pelayananPasienId = :noRec " + "and ppd.komponenHargaId = 35")
|
+ "where ppd.pelayananPasienId = :noRec " + "and ppd.komponenHargaId = 35")
|
||||||
|
|||||||
@ -2265,7 +2265,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
pelayananPaket.forEach(p -> {
|
pelayananPaket.forEach(p -> {
|
||||||
if (p.getHargaDiscount() > 0.0) {
|
if (p.getHargaDiscount() > 0.0) {
|
||||||
List<PelayananPasienDetail> detailPelayanan = pelayananPasienDetailDao
|
List<PelayananPasienDetail> detailPelayanan = pelayananPasienDetailDao
|
||||||
.getPelayananPasienDetail(p.getNoRec());
|
.findByPelayananPasien(p.getNoRec());
|
||||||
List<PelayananPasienDetail> detailDiscount = detailPelayanan.stream()
|
List<PelayananPasienDetail> detailDiscount = detailPelayanan.stream()
|
||||||
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
|
.filter(d -> d.getHargaDiscount() > 0.0).collect(Collectors.toList());
|
||||||
if (CommonUtil.isNotNullOrEmpty(detailDiscount) && !detailDiscount.isEmpty()) {
|
if (CommonUtil.isNotNullOrEmpty(detailDiscount) && !detailDiscount.isEmpty()) {
|
||||||
@ -2292,14 +2292,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
pelayananPasienDao.save(pelayananChecked);
|
pelayananPasienDao.save(pelayananChecked);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
List<PelayananPasien> pelayanan = new ArrayList<>();
|
||||||
|
List<PelayananPasienDetail> detailPelayanan = new ArrayList<>();
|
||||||
dtoList.forEach(dto -> {
|
dtoList.forEach(dto -> {
|
||||||
Optional<PelayananPasien> pelayananSplitQty = pelayananChecked.stream()
|
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
|
||||||
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
|
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
|
||||||
.filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst();
|
.filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst();
|
||||||
pelayananSplitQty.ifPresent(p -> {
|
pelayananReducedQty.ifPresent(p -> {
|
||||||
List<PelayananPasien> copyPelayanan = copyPelayananSplitQty(p);
|
List<PelayananPasienDetail> splitDetailPelayanan = new ArrayList<>();
|
||||||
Optional<PelayananPasien> origin = copyPelayanan.stream()
|
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
|
||||||
.filter(cp -> cp.getNoRec() != null)
|
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
|
||||||
.findFirst();
|
.findFirst();
|
||||||
if (origin.isPresent()) {
|
if (origin.isPresent()) {
|
||||||
origin.get().setJumlah(dto.getJumlah());
|
origin.get().setJumlah(dto.getJumlah());
|
||||||
@ -2307,13 +2309,36 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
origin.get().setJasa(dto.getHargaJasa());
|
origin.get().setJasa(dto.getHargaJasa());
|
||||||
origin.get().setIsPaket(dto.getIsPaket());
|
origin.get().setIsPaket(dto.getIsPaket());
|
||||||
origin.get().setVoucherPaket(voucher);
|
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()
|
Optional<PelayananPasien> duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null)
|
||||||
.filter(cp -> cp.getNoRec() == null)
|
|
||||||
.findFirst();
|
.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 {
|
} else {
|
||||||
List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
|
List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
|
||||||
@ -2491,4 +2516,55 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
return result;
|
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