Update service pelayanan pasien

Pembuatan split quantity dan simpan relasi pelayanan
This commit is contained in:
Salman Manoe 2023-08-24 17:54:30 +07:00
parent 2135d3b921
commit be5b921da4
2 changed files with 118 additions and 3 deletions

View File

@ -4,8 +4,8 @@ import com.jasamedika.medifirst2000.entities.PelayananPasien;
import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
import com.jasamedika.medifirst2000.entities.StrukPelayanan;
import com.jasamedika.medifirst2000.entities.StrukResep;
import org.springframework.data.jpa.repository.JpaRepository;
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;
@ -19,7 +19,7 @@ import java.util.Map;
* @author Generator
*/
@Repository("PelayananPasienDao")
public interface PelayananPasienDao extends PagingAndSortingRepository<PelayananPasien, String> {
public interface PelayananPasienDao extends JpaRepository<PelayananPasien, String> {
@Query("select p from PelayananPasien p where p.noRec=:noRec ")
PelayananPasien findByNoRec(@Param("noRec") String noRec);

View File

@ -2280,7 +2280,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
{
pelayananChecked.forEach(p -> {
Optional<TagihanPendaftaranDto> dtoChecked = dtoList.stream()
.filter(d -> d.getNoRec().equals(p.getNoRec())).findFirst();
.filter(d -> d.getNoRec().equals(p.getNoRec()))
.filter(d -> d.getJumlah().equals(p.getJumlah())).findFirst();
dtoChecked.ifPresent(d -> {
p.setHargaDiscount(d.getHargaDiskon());
p.setJasa(d.getHargaJasa());
@ -2290,6 +2291,30 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
});
pelayananPasienDao.save(pelayananChecked);
}
{
dtoList.forEach(dto -> {
Optional<PelayananPasien> pelayananSplitQty = 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)
.findFirst();
if (origin.isPresent()) {
origin.get().setJumlah(dto.getJumlah());
origin.get().setHargaDiscount(dto.getHargaDiskon());
origin.get().setJasa(dto.getHargaJasa());
origin.get().setIsPaket(dto.getIsPaket());
origin.get().setVoucherPaket(voucher);
}
Optional<PelayananPasien> duplicate = copyPelayanan.stream()
.filter(cp -> cp.getNoRec() == null)
.findFirst();
duplicate.ifPresent(d -> d.setJumlah(pelayananSplitQty.get().getJumlah() - dto.getJumlah()));
});
});
}
} else {
List<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
List<PelayananPasien> listPelayanan = pelayananPasienDao.findAll(listNoRec);
@ -2376,4 +2401,94 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
}
}
private List<PelayananPasien> copyPelayananSplitQty(PelayananPasien originPelayanan) {
List<PelayananPasien> result = new ArrayList<>();
PelayananPasien duplicatePelayanan;
duplicatePelayanan = originPelayanan;
{
AntrianPasienDiPeriksa antrian = originPelayanan.getPasien();
if (CommonUtil.isNotNullOrEmpty(antrian))
duplicatePelayanan.setPasien(antrian);
}
{
JenisKemasan jenisKemasan = originPelayanan.getJenisKemasan();
if (CommonUtil.isNotNullOrEmpty(jenisKemasan))
duplicatePelayanan.setJenisKemasan(jenisKemasan);
}
{
Kelas kelas = originPelayanan.getKelas();
if (CommonUtil.isNotNullOrEmpty(kelas))
duplicatePelayanan.setKelas(kelas);
}
{
KelompokTransaksi kelompokTransaksi = originPelayanan.getKelompokTransaksi();
if (CommonUtil.isNotNullOrEmpty(kelompokTransaksi))
duplicatePelayanan.setKelompokTransaksi(kelompokTransaksi);
}
{
Produk produk = originPelayanan.getProduk();
if (CommonUtil.isNotNullOrEmpty(produk))
duplicatePelayanan.setProduk(produk);
}
{
Generik generik = originPelayanan.getGenerik();
if (CommonUtil.isNotNullOrEmpty(generik))
duplicatePelayanan.setGenerik(generik);
}
{
JenisObat jenisObat = originPelayanan.getJenisObat();
if (CommonUtil.isNotNullOrEmpty(jenisObat))
duplicatePelayanan.setJenisObat(jenisObat);
}
{
RouteFarmasi route = originPelayanan.getRoute();
if (CommonUtil.isNotNullOrEmpty(route))
duplicatePelayanan.setRoute(route);
}
{
SatuanStandar satuanView = originPelayanan.getSatuanView();
if (CommonUtil.isNotNullOrEmpty(satuanView))
duplicatePelayanan.setSatuanView(satuanView);
}
{
Stigma keteranganPakai = originPelayanan.getKeteranganPakai();
if (CommonUtil.isNotNullOrEmpty(keteranganPakai))
duplicatePelayanan.setKeteranganPakai(keteranganPakai);
}
{
StrukOrder strukOrder = originPelayanan.getStrukOrder();
if (CommonUtil.isNotNullOrEmpty(strukOrder))
duplicatePelayanan.setStrukOrder(strukOrder);
}
{
StrukPelayanan strukPelayanan = originPelayanan.getStrukPelayanan();
if (CommonUtil.isNotNullOrEmpty(strukPelayanan))
duplicatePelayanan.setStrukPelayanan(strukPelayanan);
}
{
StrukPelayanan strukTerima = originPelayanan.getStrukTerima();
if (CommonUtil.isNotNullOrEmpty(strukTerima))
duplicatePelayanan.setStrukTerima(strukTerima);
}
{
StrukPelayananDNoBatch noBatch = originPelayanan.getNoBatch();
if (CommonUtil.isNotNullOrEmpty(noBatch))
duplicatePelayanan.setNoBatch(noBatch);
}
{
StrukResep strukResep = originPelayanan.getStrukResep();
if (CommonUtil.isNotNullOrEmpty(strukResep))
duplicatePelayanan.setStrukResep(strukResep);
}
{
VoucherPaket voucherPaket = originPelayanan.getVoucherPaket();
if (CommonUtil.isNotNullOrEmpty(voucherPaket))
duplicatePelayanan.setVoucherPaket(voucherPaket);
}
duplicatePelayanan.setNoRec(null);
result.add(duplicatePelayanan);
result.add(originPelayanan);
return result;
}
}