Update service pelayanan pasien

Pembuatan fitur duplikasi relasi racikan detail karena split jumlah pelayanan di diskon paket
This commit is contained in:
Salman Manoe 2023-08-26 11:42:10 +07:00
parent c3d5c67ba7
commit 54f6f9543d
2 changed files with 53 additions and 1 deletions

View File

@ -1,11 +1,16 @@
package com.jasamedika.medifirst2000.dao;
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.RacikanDetail;
import java.util.List;
@Repository("RacikanDetailDao")
public interface RacikanDetailDao extends PagingAndSortingRepository<RacikanDetail, String> {
@Query("select rd from RacikanDetail rd left join rd.pelayananPasien pp where pp.noRec = :norec")
List<RacikanDetail> findByPelayananPasien(@Param("norec") String norec);
}

View File

@ -111,6 +111,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
@Autowired
private PelayananPasienTidakTerklaimDao pelayananPasienTidakTerklaimDao;
@Autowired
private RacikanDetailDao racikanDetailDao;
@Override
public Map<String, Object> savePelayananPasien(PelayananPasienVO vo) {
Map<String, Object> result = new HashMap<>();
@ -2326,6 +2329,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienDetail> detailPelayanan = new ArrayList<>();
List<PelayananPasienPetugas> petugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> pelayananPasienTidakTerklaim = new ArrayList<>();
List<RacikanDetail> racikanDetail = new ArrayList<>();
dtoList.forEach(dto -> {
Optional<PelayananPasien> pelayananReducedQty = pelayananChecked.stream()
.filter(p -> p.getNoRec().equals(dto.getNoRec()))
@ -2334,6 +2338,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<PelayananPasienDetail> splitDetailPelayanan = new ArrayList<>();
List<PelayananPasienPetugas> splitPetugasPelayanan = new ArrayList<>();
List<PelayananPasienTidakTerklaim> splitPelayananTidakTerklaim = new ArrayList<>();
List<RacikanDetail> splitRacikanDetail = new ArrayList<>();
List<PelayananPasien> splitPelayanan = copyPelayananSplitQty(p);
Optional<PelayananPasien> origin = splitPelayanan.stream().filter(cp -> cp.getNoRec() != null)
.findFirst();
@ -2368,6 +2373,14 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.stream().filter(ptt -> ptt.getNoRec() != null).collect(Collectors.toList());
pelayananPasienTidakTerklaim.addAll(originPelayananTidakTerklaim);
}
{
List<RacikanDetail> racikanDetailOrigin = racikanDetailDao
.findByPelayananPasien(origin.get().getNoRec());
splitRacikanDetail = copyDetailRacikanSplitQty(racikanDetailOrigin);
List<RacikanDetail> originRacikanDetail = splitRacikanDetail.stream()
.filter(rd -> rd.getNoRec() != null).collect(Collectors.toList());
racikanDetail.addAll(originRacikanDetail);
}
pelayanan.add(origin.get());
}
Optional<PelayananPasien> duplicate = splitPelayanan.stream().filter(cp -> cp.getNoRec() == null)
@ -2394,6 +2407,12 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
duplicatePelayananTidakTerklaim.forEach(dp -> dp.setPelayananPasien(duplicate.get()));
pelayananPasienTidakTerklaim.addAll(duplicatePelayananTidakTerklaim);
}
{
List<RacikanDetail> duplicateRacikanDetail = splitRacikanDetail.stream()
.filter(rd -> rd.getNoRec() == null).collect(Collectors.toList());
duplicateRacikanDetail.forEach(drd -> drd.setPelayananPasien(duplicate.get()));
racikanDetail.addAll(duplicateRacikanDetail);
}
pelayanan.add(duplicate.get());
}
});
@ -2403,6 +2422,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
pelayananPasienDetailDao.save(detailPelayanan);
pelayananPasienPetugasDao.save(petugasPelayanan);
pelayananPasienTidakTerklaimDao.save(pelayananPasienTidakTerklaim);
racikanDetailDao.save(racikanDetail);
}
}
}
@ -2750,4 +2770,31 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
});
return duplicatePelayananTidakTerklaim;
}
List<RacikanDetail> copyDetailRacikanSplitQty(List<RacikanDetail> originRacikanDetail) {
List<RacikanDetail> duplicateRacikanDetail = new ArrayList<>();
originRacikanDetail.forEach(origin -> {
RacikanDetail duplicate;
duplicate = origin;
{
Produk produk = origin.getProduk();
if (CommonUtil.isNotNullOrEmpty(produk))
duplicate.setProduk(produk);
}
{
Generik generik = origin.getGenerik();
if (CommonUtil.isNotNullOrEmpty(generik))
duplicate.setGenerik(generik);
}
{
StrukRacikan strukRacikan = origin.getStrukRacikan();
if (CommonUtil.isNotNullOrEmpty(strukRacikan))
duplicate.setStrukRacikan(strukRacikan);
}
duplicate.setNoRec(null);
duplicateRacikanDetail.add(duplicate);
duplicateRacikanDetail.add(origin);
});
return duplicateRacikanDetail;
}
}