Update service pelayanan pasien
Pembuatan fitur duplikasi relasi petugas pelayanan karena split jumlah pelayanan di diskon paket
This commit is contained in:
parent
3c93817c32
commit
56160b11a3
@ -1,15 +1,14 @@
|
||||
package com.jasamedika.medifirst2000.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.jasamedika.medifirst2000.entities.PelayananPasienPetugas;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
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;
|
||||
|
||||
import com.jasamedika.medifirst2000.entities.PelayananPasienPetugas;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Repository class for PelayananPasien
|
||||
@ -18,7 +17,6 @@ import com.jasamedika.medifirst2000.entities.PelayananPasienPetugas;
|
||||
*/
|
||||
@Repository("PelayananPasienPetugasDao")
|
||||
public interface PelayananPasienPetugasDao extends PagingAndSortingRepository<PelayananPasienPetugas, String> {
|
||||
|
||||
@Query("select new Map(ppp.pelayananPasienId as pelayananId, count(ppp.pelayananPasienId) as sumPelayananId) "
|
||||
+ "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp "
|
||||
+ "where ppp.statusEnabled is true " + "and pp.statusEnabled is true "
|
||||
@ -48,4 +46,6 @@ public interface PelayananPasienPetugasDao extends PagingAndSortingRepository<Pe
|
||||
List<Map<String, Object>> findDokterByTindakan(@Param("produkId") Integer idProduk,
|
||||
@Param("kelompokKerjaId") Integer idKelompokKerja, Pageable pageable);
|
||||
|
||||
@Query("select ppp from PelayananPasienPetugas ppp left join ppp.pelayananPasien pp where pp.noRec = :noRec")
|
||||
List<PelayananPasienPetugas> findByPelayananPasien(@Param("noRec") String noRec);
|
||||
}
|
||||
|
||||
@ -105,6 +105,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
@Autowired
|
||||
private HargaNettoProdukByKelasDao hargaNettoProdukByKelasDao;
|
||||
|
||||
@Autowired
|
||||
private PelayananPasienPetugasDao pelayananPasienPetugasDao;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> savePelayananPasien(PelayananPasienVO vo) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
@ -2270,8 +2273,8 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
.checkExisting(voucher.getKelasId(), d.getProdukPaketId());
|
||||
if (CommonUtil.isNullOrEmpty(tarifProdukPaket) && tarifProdukPaket.isEmpty())
|
||||
throw new ServiceVOException("Harga tarif tidak ditemukan untuk produk "
|
||||
+ d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk()
|
||||
+ ") dan kelas " + voucher.getKelas().getNamaKelas());
|
||||
+ d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk() + ") dan kelas "
|
||||
+ voucher.getKelas().getNamaKelas());
|
||||
});
|
||||
}
|
||||
{
|
||||
@ -2318,12 +2321,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
{
|
||||
List<PelayananPasien> pelayanan = new ArrayList<>();
|
||||
List<PelayananPasienDetail> detailPelayanan = new ArrayList<>();
|
||||
List<PelayananPasienPetugas> petugasPelayanan = new ArrayList<>();
|
||||
dtoList.forEach(dto -> {
|
||||
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
|
||||
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
|
||||
.filter(p -> !p.getJumlah().equals(dto.getJumlah())).findFirst();
|
||||
pelayananReducedQty.ifPresent(p -> {
|
||||
List<PelayananPasienDetail> splitDetailPelayanan = new ArrayList<>();
|
||||
List<PelayananPasienPetugas> splitPetugasPelayanan = new ArrayList<>();
|
||||
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
|
||||
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
|
||||
.findFirst();
|
||||
@ -2341,10 +2346,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
.filter(d -> d.getNoRec() != null).collect(Collectors.toList());
|
||||
detailPelayanan.addAll(originDetail);
|
||||
}
|
||||
{
|
||||
List<PelayananPasienPetugas> petugasOrigin = pelayananPasienPetugasDao
|
||||
.findByPelayananPasien(origin.get().getNoRec());
|
||||
splitPetugasPelayanan = copyPelayananPasienPetugasSplitQty(petugasOrigin);
|
||||
List<PelayananPasienPetugas> originPetugas = splitPetugasPelayanan.stream()
|
||||
.filter(pt -> pt.getNoRec() != null).collect(Collectors.toList());
|
||||
petugasPelayanan.addAll(originPetugas);
|
||||
}
|
||||
pelayanan.add(origin.get());
|
||||
}
|
||||
Optional<PelayananPasien> duplicate = splitPelayanan.stream()
|
||||
.filter(cp -> cp.getNoRec() == null).findFirst();
|
||||
Optional<PelayananPasien> duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null)
|
||||
.findFirst();
|
||||
if (duplicate.isPresent()) {
|
||||
duplicate.get().setJumlah(pelayananReducedQty.get().getJumlah() - dto.getJumlah());
|
||||
duplicate.get().setIsPaket(false);
|
||||
@ -2355,6 +2368,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
duplicateDetail.forEach(d -> d.setPelayananPasien(duplicate.get()));
|
||||
detailPelayanan.addAll(duplicateDetail);
|
||||
}
|
||||
{
|
||||
List<PelayananPasienPetugas> duplicatePetugas = splitPetugasPelayanan.stream()
|
||||
.filter(pt -> pt.getNoRec() == null).collect(Collectors.toList());
|
||||
duplicatePetugas.forEach(dp -> dp.setPelayananPasien(duplicate.get()));
|
||||
petugasPelayanan.addAll(duplicatePetugas);
|
||||
}
|
||||
pelayanan.add(duplicate.get());
|
||||
}
|
||||
});
|
||||
@ -2362,6 +2381,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
if (CommonUtil.isNotNullOrEmpty(pelayanan)) {
|
||||
pelayananPasienDao.save(pelayanan);
|
||||
pelayananPasienDetailDao.save(detailPelayanan);
|
||||
pelayananPasienPetugasDao.save(petugasPelayanan);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2578,4 +2598,47 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
||||
});
|
||||
return duplicateDetail;
|
||||
}
|
||||
|
||||
private List<PelayananPasienPetugas> copyPelayananPasienPetugasSplitQty(
|
||||
List<PelayananPasienPetugas> originPetugas) {
|
||||
List<PelayananPasienPetugas> duplicatePetugas = new ArrayList<>();
|
||||
originPetugas.forEach(origin -> {
|
||||
PelayananPasienPetugas duplicate;
|
||||
duplicate = origin;
|
||||
{
|
||||
AntrianPasienDiPeriksa nomasuk = origin.getNomasuk();
|
||||
if (CommonUtil.isNotNullOrEmpty(nomasuk))
|
||||
duplicate.setNomasuk(nomasuk);
|
||||
}
|
||||
{
|
||||
AsalProduk kdasalproduk = origin.getKdasalproduk();
|
||||
if (CommonUtil.isNotNullOrEmpty(kdasalproduk))
|
||||
duplicate.setKdasalproduk(kdasalproduk);
|
||||
}
|
||||
{
|
||||
JenisPetugasPelaksana kdjenispetugaspe = origin.getKdjenispetugaspe();
|
||||
if (CommonUtil.isNotNullOrEmpty(kdjenispetugaspe))
|
||||
duplicate.setKdjenispetugaspe(kdjenispetugaspe);
|
||||
}
|
||||
{
|
||||
Pegawai kdpegawai = origin.getKdpegawai();
|
||||
if (CommonUtil.isNotNullOrEmpty(kdpegawai))
|
||||
duplicate.setKdpegawai(kdpegawai);
|
||||
}
|
||||
{
|
||||
Produk kdproduk = origin.getKdproduk();
|
||||
if (CommonUtil.isNotNullOrEmpty(kdproduk))
|
||||
duplicate.setKdproduk(kdproduk);
|
||||
}
|
||||
{
|
||||
Ruangan kdruangan = origin.getKdruangan();
|
||||
if (CommonUtil.isNotNullOrEmpty(kdruangan))
|
||||
duplicate.setKdruangan(kdruangan);
|
||||
}
|
||||
duplicate.setNoRec(null);
|
||||
duplicatePetugas.add(duplicate);
|
||||
duplicatePetugas.add(origin);
|
||||
});
|
||||
return duplicatePetugas;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user