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; package com.jasamedika.medifirst2000.service.impl;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dao.*;
@ -114,6 +115,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
@Autowired @Autowired
private RacikanDetailDao racikanDetailDao; private RacikanDetailDao racikanDetailDao;
@Autowired
private MapPelayananPasienPetugasToPegawaiDao mapPelayananPasienPetugasToPegawaiDao;
@Override @Override
public Map<String, Object> savePelayananPasien(PelayananPasienVO vo) { public Map<String, Object> savePelayananPasien(PelayananPasienVO vo) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
@ -2330,6 +2334,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> petugasPelayanan = new ArrayList<>(); List<PelayananPasienPetugas> petugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> pelayananPasienTidakTerklaim = new ArrayList<>(); List<PelayananPasienTidakTerklaim> pelayananPasienTidakTerklaim = new ArrayList<>();
List<RacikanDetail> racikanDetail = new ArrayList<>(); List<RacikanDetail> racikanDetail = new ArrayList<>();
List<MapPelayananPasienPetugasToPegawai> mapPetugasPegawai = new ArrayList<>();
dtoList.forEach(dto -> { dtoList.forEach(dto -> {
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream() Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
.filter(p -> p.getNoRec().equals(dto.getNoRec())) .filter(p -> p.getNoRec().equals(dto.getNoRec()))
@ -2339,6 +2344,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> splitPetugasPelayanan = new ArrayList<>(); List<PelayananPasienPetugas> splitPetugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> splitPelayananTidakTerklaim = new ArrayList<>(); List<PelayananPasienTidakTerklaim> splitPelayananTidakTerklaim = new ArrayList<>();
List<RacikanDetail> splitRacikanDetail = new ArrayList<>(); List<RacikanDetail> splitRacikanDetail = new ArrayList<>();
List<MapPelayananPasienPetugasToPegawai> splitMapPetugasPegawai = new ArrayList<>();
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p); List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null) Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
.findFirst(); .findFirst();
@ -2363,6 +2369,16 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienPetugas> originPetugas = splitPetugasPelayanan.stream() List<PelayananPasienPetugas> originPetugas = splitPetugasPelayanan.stream()
.filter(pt -> pt.getNoRec() != null).collect(Collectors.toList()); .filter(pt -> pt.getNoRec() != null).collect(Collectors.toList());
petugasPelayanan.addAll(originPetugas); 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 List<PelayananPasienTidakTerklaim> pelayananTidakTerklaimOrigin = pelayananPasienTidakTerklaimDao
@ -2398,7 +2414,17 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
{ {
List<PelayananPasienPetugas> duplicatePetugas = splitPetugasPelayanan.stream() List<PelayananPasienPetugas> duplicatePetugas = splitPetugasPelayanan.stream()
.filter(pt -> pt.getNoRec() == null).collect(Collectors.toList()); .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); petugasPelayanan.addAll(duplicatePetugas);
} }
{ {
@ -2423,6 +2449,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pelayananPasienPetugasDao.save(petugasPelayanan); pelayananPasienPetugasDao.save(petugasPelayanan);
pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim); pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim);
racikanDetailDao.save(racikanDetail); racikanDetailDao.save(racikanDetail);
mapPelayananPasienPetugasToPegawaiDao.save(mapPetugasPegawai);
} }
} }
} }
@ -2797,4 +2824,22 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
}); });
return duplicateRacikanDetail; 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;
}
} }