diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java index 8be43de0..0b74e16f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java @@ -99,10 +99,10 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by su.name, pr.id") public List> getDataLayananJamKerja(@Param("tglAwal") Date tglAwal, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, - @Param("listKsmId") List listIdKsm, @Param("listDokterLabPAId") Integer[] listIdDokterLabPA, - @Param("listDJPLabPAId") Integer[] listIdDJPLabPA, @Param("listDokterLabPKId") Integer[] listIdDokterLabPK, - @Param("listDJPLabPKId") Integer[] listIdDJPLabPK, @Param("listDokterRadId") Integer[] listIdDokterRad, - @Param("listDJPRadId") Integer[] listIdDJPRad, @Param("listDJPUtamaId") Integer[] listIdDJPUtama, - @Param("listLabRadId") Integer[] listIdLabRad, @Param("listDJPAdmPKId") Integer[] listIdDJPAdmPK, - @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, - @Param("karcisId") Integer idKarcis); + @Param("listKsmId") List listIdKsm, @Param("listNontindakanId") List listIdNontindakan, + @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); // Target_pelayanan_luar_jam_kerja @Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,pp.hargaDiscount as hargaDiskon,pp.jumlah as jumlahTindakan," + "pg.id as pegawaiId,pg.namaLengkap as namaLengkap," + "jb.id as jabatanId,jb.namaJabatan as namaJabatan," - + "pr.id as idTindakan,pr.namaProduk as namaTindakan," + + "pr.id as idTindakan,pr.namaProduk as namaTindakan,djp.id as djpId," + "ru.departemenId as idDepartemen,ru.id as idRuangan," + "pd.isDiskonPegawai as statusDiskon) " + "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, MapPegawaiJabatanToUnitKerja mpju, PegawaiJadwalKerja pjk " + "left join ppp.pelayananPasien pp " + "left join ppp.kdpegawai pg " + "left join mpju.jabatan jb " @@ -164,23 +155,13 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " - + "order by pg.namaLengkap, pr.id") + + "and jb.kelompokJabatanId in (3,4) " + "and djp.jenisProdukId not in (:listNontindakanId) " + + "and pr.id <> :karcisId " + "order by pg.namaLengkap, pr.id") public List> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, - @Param("listKsmId") List listIdKsm, @Param("listDokterLabPAId") Integer[] listIdDokterLabPA, - @Param("listDJPLabPAId") Integer[] listIdDJPLabPA, @Param("listDokterLabPKId") Integer[] listIdDokterLabPK, - @Param("listDJPLabPKId") Integer[] listIdDJPLabPK, @Param("listDokterRadId") Integer[] listIdDokterRad, - @Param("listDJPRadId") Integer[] listIdDJPRad, @Param("listDJPUtamaId") Integer[] listIdDJPUtama, - @Param("listLabRadId") Integer[] listIdLabRad, @Param("listDJPAdmPKId") Integer[] listIdDJPAdmPK, - @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, - @Param("karcisId") Integer idKarcis); + @Param("listKsmId") List listIdKsm, @Param("listNontindakanId") List listIdNontindakan, + @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); // Kinerja_jam_kerja_dokter String KinerjaJamKerjaDokter = "select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java index b45aade4..6b42613b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java @@ -487,6 +487,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Override public void autoSaveTargetCapaianLayananJamKerja(String strPeriode) throws ParseException { + List> dataLayananRaw = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")); @@ -525,27 +527,76 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); List listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi(); - Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI; + List listIdDJPLabPA = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI); List listIdDokterLabPK = pegawaiDao.getDokterLabKlinik(); - Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK; + List listIdDJPLabPK = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK); List listIdDokterRad = pegawaiDao.getDokterRadiologi(); - Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI; + List listIdDJPRad = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI); - Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA; + List listIdDJPUtama = Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA); List listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); - Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION; + List listIdDJPAdmPK = Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION); - List> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), + List> dataRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, - Arrays.asList(Master.UnitKerja.KSM), listIdDokterLabPA.stream().toArray(Integer[]::new), listIdDJPLabPA, - listIdDokterLabPK.stream().toArray(Integer[]::new), listIdDJPLabPK, - listIdDokterRad.stream().toArray(Integer[]::new), listIdDJPRad, listIdDJPUtama, - listIdLaboranRadiolog.stream().toArray(Integer[]::new), listIdDJPAdmPK, - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), - Master.Produk.KARCIS); + Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); + + // filter detail jenis produk + for (Map map : dataRaw) { + if (listIdDokterLabPA.contains(map.get("pegawaiId"))) { + List listIdTempLabPA = listIdDJPLabPA; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempLabPA); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempLabPA.addAll(listIdTempAdmPK); + } + } + if (listIdTempLabPA.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDokterLabPK.contains(map.get("pegawaiId"))) { + List listIdTempLabPK = listIdDJPLabPK; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempLabPK); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempLabPK.addAll(listIdTempAdmPK); + } + } + if (listIdTempLabPK.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDokterRad.contains(map.get("pegawaiId"))) { + List listIdTempRad = listIdDJPRad; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempRad); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempRad.addAll(listIdTempAdmPK); + } + } + if (listIdTempRad.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDJPUtama.contains(map.get("djpId"))) { + List listIdTempUtama = listIdDJPUtama; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempUtama); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempUtama.addAll(listIdTempAdmPK); + } + } + if (listIdTempUtama.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } + } // get_kategori_bulan List listBulanPelayanan = new ArrayList<>(); @@ -930,6 +981,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Override public void autoSaveTargetCapaianLayananLuarJamKerja(String strPeriode) throws ParseException { + List> dataLayananRaw = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")); @@ -969,27 +1022,76 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); List listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi(); - Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI; + List listIdDJPLabPA = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI); List listIdDokterLabPK = pegawaiDao.getDokterLabKlinik(); - Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK; + List listIdDJPLabPK = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK); List listIdDokterRad = pegawaiDao.getDokterRadiologi(); - Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI; + List listIdDJPRad = Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI); - Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA; + List listIdDJPUtama = Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA); List listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); - Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION; + List listIdDJPAdmPK = Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION); - List> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(), + List> dataRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, - Arrays.asList(Master.UnitKerja.KSM), listIdDokterLabPA.stream().toArray(Integer[]::new), listIdDJPLabPA, - listIdDokterLabPK.stream().toArray(Integer[]::new), listIdDJPLabPK, - listIdDokterRad.stream().toArray(Integer[]::new), listIdDJPRad, listIdDJPUtama, - listIdLaboranRadiolog.stream().toArray(Integer[]::new), listIdDJPAdmPK, - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), - Master.Produk.KARCIS); + Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); + + // filter detail jenis produk + for (Map map : dataRaw) { + if (listIdDokterLabPA.contains(map.get("pegawaiId"))) { + List listIdTempLabPA = listIdDJPLabPA; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempLabPA); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempLabPA.addAll(listIdTempAdmPK); + } + } + if (listIdTempLabPA.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDokterLabPK.contains(map.get("pegawaiId"))) { + List listIdTempLabPK = listIdDJPLabPK; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempLabPK); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempLabPK.addAll(listIdTempAdmPK); + } + } + if (listIdTempLabPK.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDokterRad.contains(map.get("pegawaiId"))) { + List listIdTempRad = listIdDJPRad; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempRad); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempRad.addAll(listIdTempAdmPK); + } + } + if (listIdTempRad.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } else if (listIdDJPUtama.contains(map.get("djpId"))) { + List listIdTempUtama = listIdDJPUtama; + List listIdTempAdmPK = listIdDJPAdmPK; + if (listIdLaboranRadiolog.contains(map.get("pegawaiId"))) { + listIdTempAdmPK.removeAll(listIdTempUtama); + if (CommonUtil.isNotNullOrEmpty(listIdTempAdmPK)) { + listIdTempUtama.addAll(listIdTempAdmPK); + } + } + if (listIdTempUtama.contains(map.get("djpId"))) { + dataLayananRaw.add(map); + } + } + } // get_kategori_bulan List listBulanPelayanan = new ArrayList<>(); diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java index 23a1beb3..4c45b28c 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java @@ -43,20 +43,36 @@ public class TargetLayananGenerating extends LocaleController { @Async public void genTargetLayanan() { + //Jam Kerja try { if (CommonUtil.isNotNullOrEmpty(remunerasiService)) { - LOGGER.info("Task Target Layanan : Running Generate Target Layanan"); + LOGGER.info("Task Target Layanan Jam Kerja : Running Generate Target Layanan Jam Kerja"); remunerasiService .autoSaveTargetCapaianLayananJamKerja(new SimpleDateFormat("yyyy-MM").format(new Date())); + } else { + LOGGER.warn("Task Target Layanan Jam Kerja : Undefined service"); + } + } catch (Exception ex) { + LOGGER.error("Task Target Layanan Jam Kerja : Generate Target Layanan Jam Kerja : " + ex.getMessage()); + ex.printStackTrace(); + } finally { + LOGGER.info("Task Target Layanan Jam Kerja : Finishing Generate Target Layanan Jam Kerja"); + } + + //Luar Jam Kerja + try { + if (CommonUtil.isNotNullOrEmpty(remunerasiService)) { + LOGGER.info("Task Target Layanan Luar Jam Kerja : Running Generate Target Layanan Luar Jam Kerja"); remunerasiService .autoSaveTargetCapaianLayananLuarJamKerja(new SimpleDateFormat("yyyy-MM").format(new Date())); } else { - LOGGER.warn("Task Target Layanan : Undefined service"); + LOGGER.warn("Task Target Layanan Luar Jam Kerja : Undefined service"); } } catch (Exception ex) { - LOGGER.error("Task Target Layanan : Generate Target Layanan " + ex.getMessage()); + LOGGER.error("Task Target Layanan Luar Jam Kerja : Generate Target Layanan Luar Jam Kerja : " + ex.getMessage()); + ex.printStackTrace(); } finally { - LOGGER.info("Task Target Layanan : Finishing Generate Target Layanan"); + LOGGER.info("Task Target Layanan Luar Jam Kerja : Finishing Generate Target Layanan Luar Jam Kerja"); } }