diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index a0fc2213..e663364e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -501,4 +501,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository findKelompokKerjaByDokter(@Param("pegawaiId") Integer idPegawai); + + @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + + "and mj.pegawaiId = :idPegawai " + "and pg.jenisPegawaiId = 1") + Set findDokterByPegawaiId(@Param("idPegawai") Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookRemunService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookRemunService.java index f562bd21..7f2128ea 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookRemunService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookRemunService.java @@ -6,6 +6,6 @@ package com.jasamedika.medifirst2000.service; * @since 25/04/2024 */ public interface LogbookRemunService { - - void generateRecap(); + /* Service ini digunakan untuk mendapatkan data rekap loggbook seluruh pegawai dengan data bulan now - 1 */ + void generateRecap(Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java index 50825d60..1a8cccd4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookRemunServiceImpl.java @@ -9,6 +9,8 @@ import com.jasamedika.medifirst2000.service.LogbookRemunService; import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.service.RemunerasiService; import com.jasamedika.medifirst2000.util.DateUtil; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -62,21 +64,28 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo private MapJabatanProfesiDao mapJabatanProfesiDao; @Override - public void generateRecap() { + public void generateRecap(Integer idPegawai) { LOGGER.info("Start simpan rekapitulasi detail logbook dokter"); - LocalDate localDate = LocalDate.now().minusMonths(1); - Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); - Date tglAwal = DateUtil.startMonth(date); - Date tglAkhir = DateUtil.endMonth(date); - Set listIdDokter = mapPegawaiJabatanToUnitKerjaDao - .findDokterByUnitKerja(splitDataSettingDatafixed("listIdUnitKerjaKsm")); - List listTerapis = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); - listIdDokter.addAll(listTerapis); - if (!listIdDokter.isEmpty()) { - // Delete untuk pembaharuan data - deleteByPeriod(listIdDokter, tglAwal, tglAkhir); + Set listIdDokter = new HashSet<>(); + LocalDate localDate = LocalDate.now().minusMonths(1); + Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + Date tglAwal = DateUtil.startMonth(date); + Date tglAkhir = DateUtil.endMonth(date); + + if (CommonUtil.isNotNullOrEmpty(idPegawai)) { + Set getListIdDokter = mapPegawaiJabatanToUnitKerjaDao.findDokterByPegawaiId(idPegawai); + listIdDokter.addAll(getListIdDokter); + }else{ + Set getListIdDokter = mapPegawaiJabatanToUnitKerjaDao.findDokterByUnitKerja(splitDataSettingDatafixed("listIdUnitKerjaKsm")); + listIdDokter.addAll(getListIdDokter); + List listTerapis = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); + listIdDokter.addAll(listTerapis); } + + if (CommonUtil.isNotNullOrEmpty(listIdDokter)) { + deleteByPeriod(listIdDokter, tglAwal, tglAkhir); + } saveRekapDetailLogbookDokter(listIdDokter, date); } @@ -120,60 +129,65 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo } else { kinerjaDokter = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null); } - List> remun = (List>) kinerjaDokter.get("data"); - for (Map map : remun) { - List listNorecPelayananPasienPetugas = new ArrayList<>(); - { - List> detail = (List>) map.get("detail"); - for (Map d : detail) - listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); - } - LogbookDokter logbookDokter = new LogbookDokter(); - logbookDokter.setKdProfile((short) 0); - logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("JKN"); - logbookDokter.setKelompokPasien( - getKelompokPasien(Integer.parseInt(map.get("idKelompokPasien").toString()))); - logbookDokter.setKeterangan(map.get("keterangan").toString()); - logbookDokter.setPersenJasa( - Double.parseDouble(map.get("persenJasa").toString().replace("%", ""))); - logbookDokter.setProduk(map.get("namaProduk").toString()); - logbookDokter.setProdukId(Integer.parseInt(map.get("idProduk").toString())); - double hargaJasa = Double.parseDouble(map.get("hargaJasa").toString()); - logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); - logbookDokter - .setTarif(BigDecimal.valueOf(Double.parseDouble(map.get("hargaJual").toString()))); - int jumlah = Double.valueOf(map.get("jumlah").toString()).intValue(); - logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); - logbookDokter.setTotalTindakan(jumlah); - logbookDokter.setLogbookRemun(savedRemun); - LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); - { - List> detailLogbook = pelayananPasienService - .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); - List listDetailLogbookDokter = new ArrayList<>(); - for (Map detail : detailLogbook) { - DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); - detailLogbookDokter.setKdProfile((short) 0); - detailLogbookDokter.setStatusEnabled(true); - detailLogbookDokter.setDiskon( - BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); - detailLogbookDokter.setJumlahTindakan( - Double.valueOf(detail.get("jumlah").toString()).intValue()); - detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); - detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); - detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); - detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); - detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); - detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); - detailLogbookDokter - .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); - detailLogbookDokter.setTarif( - BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); - detailLogbookDokter.setLogbookDokter(savedLogbookDokter); - listDetailLogbookDokter.add(detailLogbookDokter); + + if(!kinerjaDokter.isEmpty()){ + List> remun = (List>) kinerjaDokter.get("data"); + if(!remun.isEmpty()){ + for (Map map : remun) { + List listNorecPelayananPasienPetugas = new ArrayList<>(); + { + List> detail = (List>) map.get("detail"); + for (Map d : detail) + listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); + } + LogbookDokter logbookDokter = new LogbookDokter(); + logbookDokter.setKdProfile((short) 0); + logbookDokter.setStatusEnabled(true); + logbookDokter.setJenisLogbook("JKN"); + logbookDokter.setKelompokPasien( + getKelompokPasien(Integer.parseInt(map.get("idKelompokPasien").toString()))); + logbookDokter.setKeterangan(map.get("keterangan").toString()); + logbookDokter.setPersenJasa( + Double.parseDouble(map.get("persenJasa").toString().replace("%", ""))); + logbookDokter.setProduk(map.get("namaProduk").toString()); + logbookDokter.setProdukId(Integer.parseInt(map.get("idProduk").toString())); + double hargaJasa = Double.parseDouble(map.get("hargaJasa").toString()); + logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); + logbookDokter + .setTarif(BigDecimal.valueOf(Double.parseDouble(map.get("hargaJual").toString()))); + int jumlah = Double.valueOf(map.get("jumlah").toString()).intValue(); + logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); + logbookDokter.setTotalTindakan(jumlah); + logbookDokter.setLogbookRemun(savedRemun); + LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); + { + List> detailLogbook = pelayananPasienService + .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); + List listDetailLogbookDokter = new ArrayList<>(); + for (Map detail : detailLogbook) { + DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); + detailLogbookDokter.setKdProfile((short) 0); + detailLogbookDokter.setStatusEnabled(true); + detailLogbookDokter.setDiskon( + BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); + detailLogbookDokter.setJumlahTindakan( + Double.valueOf(detail.get("jumlah").toString()).intValue()); + detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); + detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); + detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); + detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); + detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); + detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); + detailLogbookDokter + .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); + detailLogbookDokter.setTarif( + BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); + detailLogbookDokter.setLogbookDokter(savedLogbookDokter); + listDetailLogbookDokter.add(detailLogbookDokter); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); + } } - detailLogbookDokterDao.save(listDetailLogbookDokter); } } } @@ -184,60 +198,63 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo } else { ffs = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null); } - for (Map fee : ffs) { - List listNorecPelayananPasienPetugas = new ArrayList<>(); - { - List> detail = (List>) fee.get("detail"); - for (Map d : detail) - listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); - } - LogbookDokter logbookDokter = new LogbookDokter(); - logbookDokter.setKdProfile((short) 0); - logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("DALAM_JAM_KERJA"); - logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); - logbookDokter.setKelompokPasien( - getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); - logbookDokter.setKeterangan(fee.get("keterangan").toString()); - logbookDokter.setPersenJasa( - Double.parseDouble(fee.get("persenJasa").toString().replace("%", ""))); - logbookDokter.setProduk(fee.get("namaProduk").toString()); - logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString())); - double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString()); - logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); - logbookDokter - .setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString()))); - int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue(); - logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); - logbookDokter.setTotalTindakan(jumlah); - logbookDokter.setLogbookRemun(savedRemun); - LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); - { - List> detailLogbook = pelayananPasienService - .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); - List listDetailLogbookDokter = new ArrayList<>(); - for (Map detail : detailLogbook) { - DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); - detailLogbookDokter.setKdProfile((short) 0); - detailLogbookDokter.setStatusEnabled(true); - detailLogbookDokter.setDiskon( - BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); - detailLogbookDokter.setJumlahTindakan( - Double.valueOf(detail.get("jumlah").toString()).intValue()); - detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); - detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); - detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); - detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); - detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); - detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); - detailLogbookDokter - .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); - detailLogbookDokter.setTarif( - BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); - detailLogbookDokter.setLogbookDokter(savedLogbookDokter); - listDetailLogbookDokter.add(detailLogbookDokter); + + if(!ffs.isEmpty()){ + for (Map fee : ffs) { + List listNorecPelayananPasienPetugas = new ArrayList<>(); + { + List> detail = (List>) fee.get("detail"); + for (Map d : detail) + listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); + } + LogbookDokter logbookDokter = new LogbookDokter(); + logbookDokter.setKdProfile((short) 0); + logbookDokter.setStatusEnabled(true); + logbookDokter.setJenisLogbook("DALAM_JAM_KERJA"); + logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); + logbookDokter.setKelompokPasien( + getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); + logbookDokter.setKeterangan(fee.get("keterangan").toString()); + logbookDokter.setPersenJasa( + Double.parseDouble(fee.get("persenJasa").toString().replace("%", ""))); + logbookDokter.setProduk(fee.get("namaProduk").toString()); + logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString())); + double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString()); + logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); + logbookDokter + .setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString()))); + int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue(); + logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); + logbookDokter.setTotalTindakan(jumlah); + logbookDokter.setLogbookRemun(savedRemun); + LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); + { + List> detailLogbook = pelayananPasienService + .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); + List listDetailLogbookDokter = new ArrayList<>(); + for (Map detail : detailLogbook) { + DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); + detailLogbookDokter.setKdProfile((short) 0); + detailLogbookDokter.setStatusEnabled(true); + detailLogbookDokter.setDiskon( + BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); + detailLogbookDokter.setJumlahTindakan( + Double.valueOf(detail.get("jumlah").toString()).intValue()); + detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); + detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); + detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); + detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); + detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); + detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); + detailLogbookDokter + .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); + detailLogbookDokter.setTarif( + BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); + detailLogbookDokter.setLogbookDokter(savedLogbookDokter); + listDetailLogbookDokter.add(detailLogbookDokter); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); } - detailLogbookDokterDao.save(listDetailLogbookDokter); } } } @@ -248,60 +265,63 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo } else { ffs = remunerasiService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); } - for (Map fee : ffs) { - List listNorecPelayananPasienPetugas = new ArrayList<>(); - { - List> detail = (List>) fee.get("detail"); - for (Map d : detail) - listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); - } - LogbookDokter logbookDokter = new LogbookDokter(); - logbookDokter.setKdProfile((short) 0); - logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("LUAR_JAM_KERJA"); - logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); - logbookDokter.setKelompokPasien( - getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); - logbookDokter.setKeterangan(fee.get("keterangan").toString()); - logbookDokter.setPersenJasa( - Double.parseDouble(fee.get("persenJasa").toString().replace("%", ""))); - logbookDokter.setProduk(fee.get("namaProduk").toString()); - logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString())); - double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString()); - logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); - logbookDokter - .setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString()))); - int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue(); - logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); - logbookDokter.setTotalTindakan(jumlah); - logbookDokter.setLogbookRemun(savedRemun); - LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); - { - List> detailLogbook = pelayananPasienService - .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); - List listDetailLogbookDokter = new ArrayList<>(); - for (Map detail : detailLogbook) { - DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); - detailLogbookDokter.setKdProfile((short) 0); - detailLogbookDokter.setStatusEnabled(true); - detailLogbookDokter.setDiskon( - BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); - detailLogbookDokter.setJumlahTindakan( - Double.valueOf(detail.get("jumlah").toString()).intValue()); - detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); - detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); - detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); - detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); - detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); - detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); - detailLogbookDokter - .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); - detailLogbookDokter.setTarif( - BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); - detailLogbookDokter.setLogbookDokter(savedLogbookDokter); - listDetailLogbookDokter.add(detailLogbookDokter); + + if(!ffs.isEmpty()){ + for (Map fee : ffs) { + List listNorecPelayananPasienPetugas = new ArrayList<>(); + { + List> detail = (List>) fee.get("detail"); + for (Map d : detail) + listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); + } + LogbookDokter logbookDokter = new LogbookDokter(); + logbookDokter.setKdProfile((short) 0); + logbookDokter.setStatusEnabled(true); + logbookDokter.setJenisLogbook("LUAR_JAM_KERJA"); + logbookDokter.setJenisRuangan(fee.get("jenisRuangan").toString().toUpperCase()); + logbookDokter.setKelompokPasien( + getKelompokPasien(Integer.parseInt(fee.get("idKelompokPasien").toString()))); + logbookDokter.setKeterangan(fee.get("keterangan").toString()); + logbookDokter.setPersenJasa( + Double.parseDouble(fee.get("persenJasa").toString().replace("%", ""))); + logbookDokter.setProduk(fee.get("namaProduk").toString()); + logbookDokter.setProdukId(Integer.parseInt(fee.get("idProduk").toString())); + double hargaJasa = Double.parseDouble(fee.get("hargaJasa").toString()); + logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); + logbookDokter + .setTarif(BigDecimal.valueOf(Double.parseDouble(fee.get("hargaJual").toString()))); + int jumlah = Double.valueOf(fee.get("jumlah").toString()).intValue(); + logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); + logbookDokter.setTotalTindakan(jumlah); + logbookDokter.setLogbookRemun(savedRemun); + LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); + { + List> detailLogbook = pelayananPasienService + .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); + List listDetailLogbookDokter = new ArrayList<>(); + for (Map detail : detailLogbook) { + DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); + detailLogbookDokter.setKdProfile((short) 0); + detailLogbookDokter.setStatusEnabled(true); + detailLogbookDokter.setDiskon( + BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); + detailLogbookDokter.setJumlahTindakan( + Double.valueOf(detail.get("jumlah").toString()).intValue()); + detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); + detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); + detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); + detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); + detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); + detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); + detailLogbookDokter + .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); + detailLogbookDokter.setTarif( + BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); + detailLogbookDokter.setLogbookDokter(savedLogbookDokter); + listDetailLogbookDokter.add(detailLogbookDokter); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); } - detailLogbookDokterDao.save(listDetailLogbookDokter); } } } @@ -312,58 +332,61 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo } else { fixedPay = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null); } - for (Map pay : fixedPay) { - List listNorecPelayananPasienPetugas = new ArrayList<>(); - { - List> detail = (List>) pay.get("detail"); - for (Map d : detail) - listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); - } - LogbookDokter logbookDokter = new LogbookDokter(); - logbookDokter.setKdProfile((short) 0); - logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("FIXED_PAY"); - logbookDokter.setJenisRuangan(pay.get("jenisRuangan").toString().toUpperCase()); - logbookDokter.setKelompokPasien( - getKelompokPasien(Integer.parseInt(pay.get("idKelompokPasien").toString()))); - logbookDokter.setKeterangan(pay.get("keterangan").toString()); - logbookDokter.setProduk(pay.get("namaProduk").toString()); - logbookDokter.setProdukId(Integer.parseInt(pay.get("idProduk").toString())); - double hargaJasa = Double.parseDouble(pay.get("hargaJasa").toString()); - logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); - logbookDokter - .setTarif(BigDecimal.valueOf(Double.parseDouble(pay.get("hargaJual").toString()))); - int jumlah = Double.valueOf(pay.get("jumlah").toString()).intValue(); - logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); - logbookDokter.setTotalTindakan(jumlah); - logbookDokter.setLogbookRemun(savedRemun); - LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); - { - List> detailLogbook = pelayananPasienService - .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); - List listDetailLogbookDokter = new ArrayList<>(); - for (Map detail : detailLogbook) { - DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); - detailLogbookDokter.setKdProfile((short) 0); - detailLogbookDokter.setStatusEnabled(true); - detailLogbookDokter.setDiskon( - BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); - detailLogbookDokter.setJumlahTindakan( - Double.valueOf(detail.get("jumlah").toString()).intValue()); - detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); - detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); - detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); - detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); - detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); - detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); - detailLogbookDokter - .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); - detailLogbookDokter.setTarif( - BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); - detailLogbookDokter.setLogbookDokter(savedLogbookDokter); - listDetailLogbookDokter.add(detailLogbookDokter); + + if(!fixedPay.isEmpty()){ + for (Map pay : fixedPay) { + List listNorecPelayananPasienPetugas = new ArrayList<>(); + { + List> detail = (List>) pay.get("detail"); + for (Map d : detail) + listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); + } + LogbookDokter logbookDokter = new LogbookDokter(); + logbookDokter.setKdProfile((short) 0); + logbookDokter.setStatusEnabled(true); + logbookDokter.setJenisLogbook("FIXED_PAY"); + logbookDokter.setJenisRuangan(pay.get("jenisRuangan").toString().toUpperCase()); + logbookDokter.setKelompokPasien( + getKelompokPasien(Integer.parseInt(pay.get("idKelompokPasien").toString()))); + logbookDokter.setKeterangan(pay.get("keterangan").toString()); + logbookDokter.setProduk(pay.get("namaProduk").toString()); + logbookDokter.setProdukId(Integer.parseInt(pay.get("idProduk").toString())); + double hargaJasa = Double.parseDouble(pay.get("hargaJasa").toString()); + logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); + logbookDokter + .setTarif(BigDecimal.valueOf(Double.parseDouble(pay.get("hargaJual").toString()))); + int jumlah = Double.valueOf(pay.get("jumlah").toString()).intValue(); + logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); + logbookDokter.setTotalTindakan(jumlah); + logbookDokter.setLogbookRemun(savedRemun); + LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); + { + List> detailLogbook = pelayananPasienService + .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); + List listDetailLogbookDokter = new ArrayList<>(); + for (Map detail : detailLogbook) { + DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); + detailLogbookDokter.setKdProfile((short) 0); + detailLogbookDokter.setStatusEnabled(true); + detailLogbookDokter.setDiskon( + BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); + detailLogbookDokter.setJumlahTindakan( + Double.valueOf(detail.get("jumlah").toString()).intValue()); + detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); + detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); + detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); + detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); + detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); + detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); + detailLogbookDokter + .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); + detailLogbookDokter.setTarif( + BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); + detailLogbookDokter.setLogbookDokter(savedLogbookDokter); + listDetailLogbookDokter.add(detailLogbookDokter); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); } - detailLogbookDokterDao.save(listDetailLogbookDokter); } } } @@ -374,58 +397,61 @@ public class LogbookRemunServiceImpl extends BaseVoServiceImpl implements Logboo } else { klaimMpp = remunerasiService.logbookKlaimMppDokter(idPegawai, bulan); } - for (Map mpp : klaimMpp) { - List listNorecPelayananPasienPetugas = new ArrayList<>(); - { - List> detail = (List>) mpp.get("detail"); - for (Map d : detail) - listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); - } - LogbookDokter logbookDokter = new LogbookDokter(); - logbookDokter.setKdProfile((short) 0); - logbookDokter.setStatusEnabled(true); - logbookDokter.setJenisLogbook("KLAIM_MPP"); - logbookDokter.setJenisRuangan(mpp.get("jenisRuangan").toString().toUpperCase()); - logbookDokter.setKelompokPasien( - getKelompokPasien(Integer.parseInt(mpp.get("idKelompokPasien").toString()))); - logbookDokter.setKeterangan(mpp.get("keterangan").toString()); - logbookDokter.setProduk(mpp.get("namaProduk").toString()); - logbookDokter.setProdukId(Integer.parseInt(mpp.get("idProduk").toString())); - double hargaJasa = Double.parseDouble(mpp.get("hargaJasa").toString()); - logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); - logbookDokter - .setTarif(BigDecimal.valueOf(Double.parseDouble(mpp.get("hargaJual").toString()))); - int jumlah = Double.valueOf(mpp.get("jumlah").toString()).intValue(); - logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); - logbookDokter.setTotalTindakan(jumlah); - logbookDokter.setLogbookRemun(savedRemun); - LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); - { - List> detailLogbook = pelayananPasienService - .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); - List listDetailLogbookDokter = new ArrayList<>(); - for (Map detail : detailLogbook) { - DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); - detailLogbookDokter.setKdProfile((short) 0); - detailLogbookDokter.setStatusEnabled(true); - detailLogbookDokter.setDiskon( - BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); - detailLogbookDokter.setJumlahTindakan( - Double.valueOf(detail.get("jumlah").toString()).intValue()); - detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); - detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); - detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); - detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); - detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); - detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); - detailLogbookDokter - .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); - detailLogbookDokter.setTarif( - BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); - detailLogbookDokter.setLogbookDokter(savedLogbookDokter); - listDetailLogbookDokter.add(detailLogbookDokter); + + if(!klaimMpp.isEmpty()){ + for (Map mpp : klaimMpp) { + List listNorecPelayananPasienPetugas = new ArrayList<>(); + { + List> detail = (List>) mpp.get("detail"); + for (Map d : detail) + listNorecPelayananPasienPetugas.addAll((List) d.get("norecs")); + } + LogbookDokter logbookDokter = new LogbookDokter(); + logbookDokter.setKdProfile((short) 0); + logbookDokter.setStatusEnabled(true); + logbookDokter.setJenisLogbook("KLAIM_MPP"); + logbookDokter.setJenisRuangan(mpp.get("jenisRuangan").toString().toUpperCase()); + logbookDokter.setKelompokPasien( + getKelompokPasien(Integer.parseInt(mpp.get("idKelompokPasien").toString()))); + logbookDokter.setKeterangan(mpp.get("keterangan").toString()); + logbookDokter.setProduk(mpp.get("namaProduk").toString()); + logbookDokter.setProdukId(Integer.parseInt(mpp.get("idProduk").toString())); + double hargaJasa = Double.parseDouble(mpp.get("hargaJasa").toString()); + logbookDokter.setRemunTindakan(BigDecimal.valueOf(hargaJasa)); + logbookDokter + .setTarif(BigDecimal.valueOf(Double.parseDouble(mpp.get("hargaJual").toString()))); + int jumlah = Double.valueOf(mpp.get("jumlah").toString()).intValue(); + logbookDokter.setTotalRemunTindakan(BigDecimal.valueOf(hargaJasa * jumlah)); + logbookDokter.setTotalTindakan(jumlah); + logbookDokter.setLogbookRemun(savedRemun); + LogbookDokter savedLogbookDokter = logbookDokterDao.save(logbookDokter); + { + List> detailLogbook = pelayananPasienService + .detailLogbookTarifDokter(idPegawai, listNorecPelayananPasienPetugas); + List listDetailLogbookDokter = new ArrayList<>(); + for (Map detail : detailLogbook) { + DetailLogbookDokter detailLogbookDokter = new DetailLogbookDokter(); + detailLogbookDokter.setKdProfile((short) 0); + detailLogbookDokter.setStatusEnabled(true); + detailLogbookDokter.setDiskon( + BigDecimal.valueOf(Double.parseDouble(detail.get("diskon").toString()))); + detailLogbookDokter.setJumlahTindakan( + Double.valueOf(detail.get("jumlah").toString()).intValue()); + detailLogbookDokter.setJenisPelaksana(detail.get("jenisPelaksana").toString()); + detailLogbookDokter.setKelas(detail.get("namaKelas").toString()); + detailLogbookDokter.setNamaPasien(detail.get("namaPasien").toString()); + detailLogbookDokter.setNoRegistrasi(detail.get("noRegistrasi").toString()); + detailLogbookDokter.setNoRekamMedis(detail.get("noCm").toString()); + detailLogbookDokter.setRuangan(detail.get("namaRuangan").toString()); + detailLogbookDokter + .setTanggalPelayanan(DateUtil.toDate(detail.get("tanggal").toString())); + detailLogbookDokter.setTarif( + BigDecimal.valueOf(Double.parseDouble(detail.get("hargaJual").toString()))); + detailLogbookDokter.setLogbookDokter(savedLogbookDokter); + listDetailLogbookDokter.add(detailLogbookDokter); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); } - detailLogbookDokterDao.save(listDetailLogbookDokter); } } } diff --git a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java index 4558bf1f..5f2a4fe2 100644 --- a/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java +++ b/jasamedika-pelayanan/src/main/java/com/jasamedika/medifirst2000/task/schedule/LogbookTask.java @@ -199,9 +199,16 @@ public class LogbookTask { LOGGER.info("Simpan rekapitulasi logbook dokter berhasil...!"); } + /* @Scheduled(cron = "0 0 0 1-6 * ?") public void saveRekapDetailLogbookDokter() { logbookRemunService.generateRecap(); } + */ + + @Scheduled(cron = "0 15 0 4-5 * ?") + public void saveRekapDetailLogbookDokter() { + logbookRemunService.generateRecap(null); + } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/LogbookRemunController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/LogbookRemunController.java index 93c3747b..71ccd952 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/LogbookRemunController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/LogbookRemunController.java @@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.PathVariable; import javax.servlet.http.HttpServletRequest; @@ -23,6 +24,7 @@ import static org.springframework.http.HttpStatus.ACCEPTED; import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import static org.springframework.web.bind.annotation.RequestMethod.POST; +import static org.springframework.web.bind.annotation.RequestMethod.GET; /** * @author Salman @@ -41,7 +43,21 @@ public class LogbookRemunController extends LocaleController { @RequestMapping(value = "/rekap", method = POST, produces = APPLICATION_JSON_VALUE) public ResponseEntity patchingRecapLogbook(HttpServletRequest request) { try { - logbookRemunService.generateRecap(); + logbookRemunService.generateRecap(null); + mapHeaderMessage.put(LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); + return getJsonResponse("The recap has been successfully generated", ACCEPTED, mapHeaderMessage); + } catch (ServiceVOException | JpaSystemException e) { + LOGGER.error("Got Exception {} when generateRecap", e.getMessage()); + mapHeaderMessage.put(ERROR_MESSAGE, e.getMessage()); + return getJsonHttptatus(INTERNAL_SERVER_ERROR, mapHeaderMessage); + } + } + + @RequestMapping(value = "/rekap/by-pegawai/{idPegawai}", method = GET, produces = APPLICATION_JSON_VALUE) + public ResponseEntity patchingRecapLogbook1(HttpServletRequest request, @PathVariable("idPegawai") Integer idPegawai) { + try { + //System.out.println(idPegawai); + logbookRemunService.generateRecap(idPegawai); mapHeaderMessage.put(LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return getJsonResponse("The recap has been successfully generated", ACCEPTED, mapHeaderMessage); } catch (ServiceVOException | JpaSystemException e) { @@ -50,5 +66,4 @@ public class LogbookRemunController extends LocaleController { return getJsonHttptatus(INTERNAL_SERVER_ERROR, mapHeaderMessage); } } - }