Update service pelayanan pasien

Pembuatan fitur duplikasi relasi mapping petugas pegawai karena split jumlah pelayanan di diskon paket dan dampaknya pada catatan petugas pelayanan
This commit is contained in:
Salman Manoe 2023-08-26 12:35:56 +07:00
parent a9624ed220
commit c39750c6b4
2 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,23 @@
package com.jasamedika.medifirst2000.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.jasamedika.medifirst2000.entities.MapPelayananPasienPetugasToPegawai;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author Salman
* @version 1.0.0
* @since 26 Aug 2023
*/
@Repository
public interface MapPelayananPasienPetugasToPegawaiDao
extends JpaRepository<MapPelayananPasienPetugasToPegawai, String> {
@Query("select mptp from MapPelayananPasienPetugasToPegawai mptp " + "left join mptp.pelayananPasienPetugas ppp "
+ "where ppp.norec in (:norecs)")
List<MapPelayananPasienPetugasToPegawai> findByPelayananPasienPetugas(@Param("norecs") List<String> norecs);
}

View File

@ -1,5 +1,6 @@
package com.jasamedika.medifirst2000.service.impl;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.*;
@ -114,6 +115,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
@Autowired
private RacikanDetailDao racikanDetailDao;
@Autowired
private MapPelayananPasienPetugasToPegawaiDao mapPelayananPasienPetugasToPegawaiDao;
@Override
public Map<String, Object> savePelayananPasien(PelayananPasienVO vo) {
Map<String, Object> result = new HashMap<>();
@ -2330,6 +2334,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> petugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> pelayananPasienTidakTerklaim = new ArrayList<>();
List<RacikanDetail> racikanDetail = new ArrayList<>();
List<MapPelayananPasienPetugasToPegawai> mapPetugasPegawai = new ArrayList<>();
dtoList.forEach(dto -> {
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
@ -2339,6 +2344,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> splitPetugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> splitPelayananTidakTerklaim = new ArrayList<>();
List<RacikanDetail> splitRacikanDetail = new ArrayList<>();
List<MapPelayananPasienPetugasToPegawai> splitMapPetugasPegawai = new ArrayList<>();
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
.findFirst();
@ -2363,6 +2369,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> originPetugas = splitPetugasPelayanan.stream()
.filter(pt -> pt.getNoRec() != null).collect(Collectors.toList());
petugasPelayanan.addAll(originPetugas);
{
List<String> norecs = petugasOrigin.stream().map(BaseTransaction::getNoRec)
.collect(Collectors.toList());
List<MapPelayananPasienPetugasToPegawai> mapPetugasPegawaiOrigin = mapPelayananPasienPetugasToPegawaiDao
.findByPelayananPasienPetugas(norecs);
splitMapPetugasPegawai = copyMapPetugasPegawaiSplitQty(mapPetugasPegawaiOrigin);
List<MapPelayananPasienPetugasToPegawai> originMapPetugasPegawai = splitMapPetugasPegawai
.stream().filter(mpp -> mpp.getNoRec() != null).collect(Collectors.toList());
mapPetugasPegawai.addAll(originMapPetugasPegawai);
}
}
{
List<PelayananPasienTidakTerklaim> pelayananTidakTerklaimOrigin = pelayananPasienTidakTerklaimDao
@ -2398,7 +2414,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
{
List<PelayananPasienPetugas> duplicatePetugas = splitPetugasPelayanan.stream()
.filter(pt -> pt.getNoRec() == null).collect(Collectors.toList());
duplicatePetugas.forEach(dp -> dp.setPelayananPasien(duplicate.get()));
List<MapPelayananPasienPetugasToPegawai> finalSplitMapPetugasPegawai = splitMapPetugasPegawai;
duplicatePetugas.forEach(dp -> {
dp.setPelayananPasien(duplicate.get());
{
List<MapPelayananPasienPetugasToPegawai> duplicateMapPetugasPegawai = finalSplitMapPetugasPegawai
.stream().filter(mpp -> mpp.getNoRec() == null)
.collect(Collectors.toList());
duplicateMapPetugasPegawai.forEach(dm -> dm.setPelayananPasienPetugas(dp));
mapPetugasPegawai.addAll(duplicateMapPetugasPegawai);
}
});
petugasPelayanan.addAll(duplicatePetugas);
}
{
@ -2423,6 +2449,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pelayananPasienPetugasDao.save(petugasPelayanan);
pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim);
racikanDetailDao.save(racikanDetail);
mapPelayananPasienPetugasToPegawaiDao.save(mapPetugasPegawai);
}
}
}
@ -2797,4 +2824,22 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
});
return duplicateRacikanDetail;
}
List<MapPelayananPasienPetugasToPegawai> copyMapPetugasPegawaiSplitQty(
List<MapPelayananPasienPetugasToPegawai> originMapPetugasPegawai) {
List<MapPelayananPasienPetugasToPegawai> duplicateMapPetugasPegawai = new ArrayList<>();
originMapPetugasPegawai.forEach(origin -> {
MapPelayananPasienPetugasToPegawai duplicate;
duplicate = origin;
{
Pegawai pegawai = origin.getPegawai();
if (CommonUtil.isNotNullOrEmpty(pegawai))
duplicate.setPegawai(pegawai);
}
duplicate.setNoRec(null);
duplicateMapPetugasPegawai.add(duplicate);
duplicateMapPetugasPegawai.add(origin);
});
return duplicateMapPetugasPegawai;
}
}