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 69d70be1..f562bd21 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 @@ -1,8 +1,5 @@ package com.jasamedika.medifirst2000.service; -import java.util.Date; -import java.util.Set; - /** * @author salmanoe * @version 1.0.0 @@ -10,5 +7,5 @@ import java.util.Set; */ public interface LogbookRemunService { - void deleteByPeriod(Set idPegawai, Date tglAwal, Date tglAkhir); + void generateRecap(); } 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 54266ac0..aa4ffa70 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 @@ -1,20 +1,33 @@ package com.jasamedika.medifirst2000.service.impl; -import com.jasamedika.medifirst2000.dao.DetailLogbookDokterDao; -import com.jasamedika.medifirst2000.dao.LogbookDokterDao; -import com.jasamedika.medifirst2000.dao.LogbookRemunDao; +import com.jasamedika.medifirst2000.dao.*; +import com.jasamedika.medifirst2000.entities.DetailLogbookDokter; +import com.jasamedika.medifirst2000.entities.LogbookDokter; +import com.jasamedika.medifirst2000.entities.LogbookRemun; +import com.jasamedika.medifirst2000.entities.constant.KelompokPasienM; 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 org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.time.LocalDate; +import java.time.YearMonth; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI; /** * @author salmanoe @@ -24,6 +37,7 @@ import java.util.Set; @Service @Transactional public class LogbookRemunServiceImpl implements LogbookRemunService { + private static final Logger LOGGER = LoggerFactory.getLogger(LogbookRemunServiceImpl.class); @Autowired @@ -35,12 +49,45 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { @Autowired private DetailLogbookDokterDao detailLogbookDokterDao; + @Autowired + private PelayananPasienService pelayananPasienService; + + @Autowired + private RemunerasiService remunerasiService; + + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao; + + @Autowired + private SubUnitKerjaDao subUnitKerjaDao; + + @Autowired + private MapJabatanProfesiDao mapJabatanProfesiDao; + @Override + public void generateRecap() { + 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); + List subUnitKerjaIn = subUnitKerjaDao.findAllKelompokKerjaMedisId(); + Set idPegawaiKelompokKerja = mapPegawaiJabatanToUnitKerjaDao + .findPegawaiIdBySubUnitKerjaIn(subUnitKerjaIn); + List terapisRehabMedik = mapJabatanProfesiDao.findIdPegawaiByProfesiIn(Arrays.asList(TERAPI)); + idPegawaiKelompokKerja.addAll(terapisRehabMedik); + if (!idPegawaiKelompokKerja.isEmpty()) { + // Delete untuk pembaharuan data + deleteByPeriod(idPegawaiKelompokKerja, tglAwal, tglAkhir); + } + saveRekapDetailLogbookDokter(idPegawaiKelompokKerja, date); + } + public void deleteByPeriod(Set idPegawai, Date tglAwal, Date tglAkhir) { LOGGER.info("Start deleting previous data"); List listIdPegawai = new ArrayList<>(idPegawai); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.sql.Date sqlTglAwal = new java.sql.Date(tglAwal.getTime()); java.sql.Date sqlTglAkhir = new java.sql.Date(tglAkhir.getTime()); detailLogbookDokterDao.deleteByKelompokKerjaAndPeriod(listIdPegawai, sqlTglAwal, sqlTglAkhir); @@ -49,4 +96,354 @@ public class LogbookRemunServiceImpl implements LogbookRemunService { LOGGER.info("Deleting previous data successfully...!"); } + + private void saveRekapDetailLogbookDokter(Set idPegawaiKelompokKerja, Date date) { + DateFormat df = new SimpleDateFormat("yyyy-MM"); + String bulan = df.format(date); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + YearMonth oct24 = YearMonth.parse("2024-09", formatter); + YearMonth month = YearMonth.parse(bulan, formatter); + ExecutorService executorService = Executors.newFixedThreadPool(50); + CountDownLatch latch = new CountDownLatch(50); + try { + for (Integer idPegawai : idPegawaiKelompokKerja) { + executorService.execute(() -> { + LOGGER.info("Simpan rekapitulasi detail logbook dokter id {}", idPegawai); + + LogbookRemun logbookRemun = new LogbookRemun(); + logbookRemun.setKdProfile((short) 0); + logbookRemun.setStatusEnabled(true); + logbookRemun.setPegawaiId(idPegawai); + logbookRemun.setBulan(date); + logbookRemun.setTanggalTarikData(new Date()); + LogbookRemun savedRemun = logbookRemunDao.save(logbookRemun); + { + Map kinerjaDokter; + if (month.isBefore(oct24)) { + kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null); + } 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); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); + } + } + } + { + List> ffs; + if (month.isBefore(oct24)) { + ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null); + } 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("NON_JKN_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); + } + } + } + { + List> ffs; + if (month.isBefore(oct24)) { + ffs = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai, bulan, null); + } 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("NON_JKN_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); + } + } + } + { + List> fixedPay; + if (month.isBefore(oct24)) { + fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null); + } 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); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); + } + } + } + { + List> klaimMpp; + if (month.isBefore(oct24)) { + klaimMpp = pelayananPasienService.logbookKlaimMppDokter(idPegawai, bulan); + } 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); + } + detailLogbookDokterDao.save(listDetailLogbookDokter); + } + } + } + latch.countDown(); + }); + } + latch.await(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + private String getKelompokPasien(Integer idKelompokPasien) { + KelompokPasienM kelompokPasien = KelompokPasienM.valueOf(idKelompokPasien); + return kelompokPasien.name(); + } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index 1d5abaca..72de145f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -1089,10 +1089,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); } - } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) - && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) - && listDetailJenisProdukException - .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { + } else if (CommonUtil.isNullOrEmpty(listDetailJenisProdukException) + || (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) + && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) + && listDetailJenisProdukException.contains( + Integer.parseInt(next.get("idDetailJenisProduk").toString())))) { /* * Diluar pembatasan jenis produk */ @@ -1228,10 +1229,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera listPelayananRemun.add(next); capaianRemun += Double.parseDouble(next.get("hargaJasa").toString()); } - } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) - && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) - && listDetailJenisProdukException - .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { + } else if (CommonUtil.isNullOrEmpty(listDetailJenisProdukException) + || (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) + && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) + && listDetailJenisProdukException.contains( + Integer.parseInt(next.get("idDetailJenisProduk").toString())))) { /* * Diluar pembatasan jenis produk */ @@ -1396,10 +1398,11 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera listPelayananNonJknLuarJamKerja.add(next); } } - } else if (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) - && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) - && listDetailJenisProdukException - .contains(Integer.parseInt(next.get("idDetailJenisProduk").toString()))) { + } else if (CommonUtil.isNullOrEmpty(listDetailJenisProdukException) + || (CommonUtil.isNotNullOrEmpty(listDetailJenisProdukException) + && CommonUtil.isNotNullOrEmpty(next.get("idDetailJenisProduk")) + && listDetailJenisProdukException.contains( + Integer.parseInt(next.get("idDetailJenisProduk").toString())))) { /* * Diluar pembatasan jenis produk */ @@ -1502,8 +1505,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera if (CommonUtil.isNotNullOrEmpty(listKepalaPaketFixedPay)) listPelayananFixedPay.addAll(setKepalaPaketFixedPay(listKepalaPaketFixedPay)); result.put("fixed-pay", listPelayananFixedPay); - if (terapisRehabMedik.contains(idPegawai)) - result.put("fixed-pay", new ArrayList<>()); } return result; } 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 new file mode 100644 index 00000000..93c3747b --- /dev/null +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/LogbookRemunController.java @@ -0,0 +1,54 @@ +package com.jasamedika.medifirst2000.controller; + +import com.jasamedika.medifirst2000.constants.MessageResource; +import com.jasamedika.medifirst2000.controller.base.LocaleController; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.LogbookRemunService; +import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +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 javax.servlet.http.HttpServletRequest; + +import static com.jasamedika.medifirst2000.constants.Constants.MessageInfo.ERROR_MESSAGE; +import static com.jasamedika.medifirst2000.core.web.WebConstants.HttpHeaderInfo.LABEL_SUCCESS; +import static com.jasamedika.medifirst2000.util.rest.RestUtil.getJsonHttptatus; +import static com.jasamedika.medifirst2000.util.rest.RestUtil.getJsonResponse; +import static org.slf4j.LoggerFactory.getLogger; +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; + +/** + * @author Salman + * @version 1.0.0 + * @since 02/01/2025 + */ +@RestController +@RequestMapping("/remunerasi/logbook") +public class LogbookRemunController extends LocaleController { + + private static final Logger LOGGER = getLogger(LogbookRemunController.class); + + @Autowired + private LogbookRemunService logbookRemunService; + + @RequestMapping(value = "/rekap", method = POST, produces = APPLICATION_JSON_VALUE) + public ResponseEntity patchingRecapLogbook(HttpServletRequest request) { + try { + logbookRemunService.generateRecap(); + 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); + } + } + +}