From 1544a003304647cff5003ba83d8980b4b8505f38 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 9 Aug 2021 05:50:59 +0700 Subject: [PATCH] - pembuatan query validasi mapping harga layanan medis ke kelas pelayanan pasien - penerapan detail jenis produk terhadap filter data tampil saat hitung target layanan otomatis - penerapan detail jenis produk terhadap filter data tampil saat otomatis verifikasi hasil kinerja layanan medis dokter - penerapan detail jenis produk terhadap filter data tampil logbook skor kinerja dokter dan dashboard logbook skor - perbaikan query jika tidak ada harga satuan transaksi pelayanan pasien - penerapan pembulatan 3 desimal pada tampilan skor di logbook kinerja dokter dan logbook skor --- .../dao/HargaNettoProdukByKelasDao.java | 7 +- .../dao/IkiDanRemunerasiDao.java | 102 ++++++---- .../medifirst2000/dao/RevIndekKinerjaDao.java | 2 +- .../impl/IkiDanRemunerasiServiceImpl.java | 48 ++++- .../impl/LogbookKinerjaServiceImpl.java | 175 +++++++++++++++--- 5 files changed, 267 insertions(+), 67 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/HargaNettoProdukByKelasDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/HargaNettoProdukByKelasDao.java index b975f0a3..2f26c08b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/HargaNettoProdukByKelasDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/HargaNettoProdukByKelasDao.java @@ -12,7 +12,7 @@ import com.jasamedika.medifirst2000.entities.HargaNettoProdukByKelas; @Repository("HargaNettoProdukByKelasDao") public interface HargaNettoProdukByKelasDao extends PagingAndSortingRepository { - + @Query("select model from HargaNettoProdukByKelas model where model.produk.id=:produkId and model.kelas.id=:kelasId " + "and model.asalProduk.id=:asalProdukId and model.jenisTarif.id=:jenisTarifId") public List findProdByKelas(@Param("produkId") Integer produkId, @@ -30,4 +30,9 @@ public interface HargaNettoProdukByKelasDao extends PagingAndSortingRepository> getListprodukInMapping(); + @Query("select new Map(hnk.produkId as produkId,hnk.kelasId as kelasId) " + "from HargaNettoProdukByKelas hnk " + + "where hnk.produkId = :produkId " + "and hnk.kelasId = :kelasId " + "and hnk.statusEnabled is true") + public List> checkExisting(@Param("kelasId") Integer kelasId, + @Param("produkId") Integer produkId); + } 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 c3718bff..8be43de0 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 @@ -117,18 +117,27 @@ 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("listNontindakanId") List listIdNontindakan, - @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); + @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); // Target_pelayanan_luar_jam_kerja @Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," @@ -155,17 +164,27 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by pg.namaLengkap, pr.id") + + "and jb.kelompokJabatanId in (3,4) " + + "and (djp.id in (case when pg.id in (cast(:listDokterLabPAId as integer[])) then (cast(:listDJPLabPAId as integer[])) " + + "when pg.id in (cast(:listDokterLabPKId as integer[])) then (cast(:listDJPLabPKId as integer[])) " + + "when pg.id in (cast(:listDokterRadId as integer[])) then (cast(:listDJPRadId as integer[])) else cast(:listDJPUtamaId as integer[]) end) " + + "or djp.id in (case when pg.id in (cast(:listLabRadId as integer[])) then (cast(:listDJPAdmPKId as integer[])) else (-1) end)) " + + "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("listNontindakanId") List listIdNontindakan, - @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); + @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); - // Logbook_kinerja_jam_kerja_dokter - @Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + "pg.id as pegawaiId," - + "pr.id as produkId,pr.namaProduk as namaProduk," + // Kinerja_jam_kerja_dokter + String KinerjaJamKerjaDokter = "select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + + "pg.id as pegawaiId," + "pr.id as produkId,pr.namaProduk as namaProduk, djp.id as detailJenisProdukId," + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," + "ru.departemenId as departemenId,ru.id as ruanganId," + "pd.isDiskonPegawai as statusDiskon) " + "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk " @@ -178,13 +197,28 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " - + "and pg.id in (:listPegawaiId) " + "order by pr.namaProduk, pp.tglPelayanan") + + "and pg.id in (:listPegawaiId) "; + + String paramListDetailJenisProdukId = "and djp.id in (:listDetailJenisProdukId) "; + + String sortingKinerjaJamKerjaDokter = "order by pr.namaProduk, pp.tglPelayanan"; + + @Query(KinerjaJamKerjaDokter + paramListDetailJenisProdukId + sortingKinerjaJamKerjaDokter) + public List> getDataLogbookJamKerjaDokter(@Param("bulan") String bulan, + @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, + @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, + @Param("listPegawaiId") List listIdPegawai, + @Param("listDetailJenisProdukId") List listIdDetailJenisProduk, + @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, + @Param("karcisId") Integer idKarcis); + + @Query(KinerjaJamKerjaDokter + sortingKinerjaJamKerjaDokter) public List> getDataLogbookJamKerjaDokter(@Param("bulan") String bulan, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, @@ -214,59 +248,62 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " - + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") + + "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) " + + "and pr.id <> :karcisId " + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") public List> getDataLogbookLuarJamKerjaDokter(@Param("bulan") String bulan, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, - @Param("pegawaiId") Integer idPegawai, @Param("listNontindakanId") List listIdNontindakan, - @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); + @Param("pegawaiId") Integer idPegawai, + @Param("listDetailJenisProdukId") List listIdDetailJenisProduk, + @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, + @Param("karcisId") Integer idKarcis); // Detail_logbook_kinerja_jam_kerja_dokter @Query("select distinct new Map(jpp.id as jenisPetugasId, jpp.jenisPetugasPe as jenisPetugas," + "pr.id as produkId,pr.namaProduk as namaProduk," - + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH:mi:ss') as tglPelayananFormatted,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," + + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," + "ru.departemenId as departemenId,ru.id as ruanganId,ru.namaRuangan as namaRuangan," + "pd.noRegistrasi as noRegistrasi,pd.isDiskonPegawai as statusDiskon," - + "ps.namaPasien as namaPasien, ps.noCm as noCm) " + + "ps.namaPasien as namaPasien, ps.noCm as noCm, " + "kp.kelompokPasien as kelompokPasien) " + "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk " + "left join ppp.pelayananPasien pp " + "left join ppp.kdpegawai pg " + "left join ppp.kdjenispetugaspe jpp " + "left join pp.produk pr " + "left join pp.pasienDaftar apd " + "left join pr.detailJenisProduk djp " + "left join apd.pasienDaftar pd " + "left join apd.ruangan ru " - + "left join pd.pasien ps " + "left join pjk.shift sk " + "left join pjk.tanggal kl " - + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + + "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pjk.shift sk " + + "left join pjk.tanggal kl " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id " + "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pr.id = :produkId " + "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan " + "and cast(pp.tglPelayanan as date) = cast(kl.tanggal as date) " + "and (((((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') " - + "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) " + + "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '14:00:00' else '15:30:00' end)) " + "or (to_char(pp.tglPelayanan,'dy') in ('fri') " - + "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) " + + "and to_char(pp.tglPelayanan,'HH24:MI:ss') between '07:00:00' and (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId = 18 then '15:30:00' else '16:00:00' end))) " + "and sk.id not in (:listNonjadwalId)) and pd.kelompokPasienId not in (:listBpjsId)) " + "or pd.kelompokPasienId in (:listBpjsId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId " - + "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId " - + "and pg.id = :pegawaiId" + " order by pr.namaProduk, pp.tglPelayanan") + + "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) " + + "and pr.id <> :karcisId " + "and pg.id = :pegawaiId" + " order by pr.namaProduk, pp.tglPelayanan") public List> findDetailPasienLogbookJamKerjaDokter(@Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai, + @Param("listDetailJenisProdukId") List listIdDetailJenisProduk, @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); // Detail_logbook_kinerja_luar_jam_kerja_dokter @Query("select distinct new Map(jpp.id as jenisPetugasId, jpp.jenisPetugasPe as jenisPetugas," + "pr.id as produkId,pr.namaProduk as namaProduk," - + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH:mi:ss') as tglPelayananFormatted,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," + + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd-MM-yyyy HH24:MI:ss') as tglPelayananFormatted,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," + "ru.departemenId as departemenId,ru.id as ruanganId,ru.namaRuangan as namaRuangan," + "pd.noRegistrasi as noRegistrasi,pd.isDiskonPegawai as statusDiskon," - + "ps.namaPasien as namaPasien, ps.noCm as noCm) " + + "ps.namaPasien as namaPasien, ps.noCm as noCm, kp.kelompokPasien as kelompokPasien) " + "from PelayananPasienPetugas ppp, MapRuanganToProduk mrtp, PegawaiJadwalKerja pjk " + "left join ppp.pelayananPasien pp " + "left join ppp.kdpegawai pg " + "left join ppp.kdjenispetugaspe jpp " + "left join pp.produk pr " + "left join pp.pasienDaftar apd " + "left join pr.detailJenisProduk djp " + "left join apd.pasienDaftar pd " + "left join apd.ruangan ru " - + "left join pd.pasien ps " + "left join pjk.shift sk " + "left join pjk.tanggal kl " - + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + + "left join pd.pasien ps " + "left join pd.kelompokPasien kp " + "left join pjk.shift sk " + + "left join pjk.tanggal kl " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id " + "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + "and pr.id = :produkId " + "and to_char(pp.tglPelayanan,'yyyy-MM-dd') = :tglPelayanan " @@ -279,12 +316,13 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " - + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") + + "and djp.id in (:listDetailJenisProdukId) " + "and djp.jenisProdukId not in (:listNontindakanId) " + + "and pr.id <> :karcisId " + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") public List> findDetailPasienLogbookLuarJamKerjaDokter(@Param("produkId") Integer idProduk, @Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai, + @Param("listDetailJenisProdukId") List listIdDetailJenisProduk, @Param("listNontindakanId") List listIdNontindakan, @Param("listBpjsId") List listIdBpjs, @Param("karcisId") Integer idKarcis); } \ No newline at end of file diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java index 5335c6a2..40f2ff6e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java @@ -126,7 +126,7 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository loadData() { Map result = new HashMap<>(); @@ -520,10 +524,28 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi(); + Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI; + + List listIdDokterLabPK = pegawaiDao.getDokterLabKlinik(); + Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK; + + List listIdDokterRad = pegawaiDao.getDokterRadiologi(); + Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI; + + Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA; + + List listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION; + List> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, - Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), - Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); + 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); // get_kategori_bulan List listBulanPelayanan = new ArrayList<>(); @@ -946,10 +968,28 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List listIdDokterLabPA = pegawaiDao.getDokterLabPatologiAnatomi(); + Integer[] listIdDJPLabPA = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI; + + List listIdDokterLabPK = pegawaiDao.getDokterLabKlinik(); + Integer[] listIdDJPLabPK = Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK; + + List listIdDokterRad = pegawaiDao.getDokterRadiologi(); + Integer[] listIdDJPRad = Master.DetailJenisProduk.PENUNJANG_RADIOLOGI; + + Integer[] listIdDJPUtama = Master.DetailJenisProduk.MEDIS_UTAMA; + + List listIdLaboranRadiolog = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + Integer[] listIdDJPAdmPK = Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION; + List> dataLayananRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, - Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), - Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); + 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); // get_kategori_bulan List listBulanPelayanan = new ArrayList<>(); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java index 1aa16b03..b731b0df 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java @@ -32,6 +32,7 @@ import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao; +import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao; import com.jasamedika.medifirst2000.dao.PegawaiDao; import com.jasamedika.medifirst2000.dao.ShiftKerjaDao; import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao; @@ -101,6 +102,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Autowired private ShiftKerjaDao shiftKerjaDao; + @Autowired + private MapPegawaiLaboratRadiologiDao mapPegawaiLaboratRadiologiDao; + @Override public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException { Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); @@ -637,13 +641,15 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listIdIndikator = new ArrayList<>(); List listIdProduk = new ArrayList<>(); List listSkor = new ArrayList<>(); + List listDetailJenisProduk = new ArrayList<>(); + List listDetailJenisProdukException = new ArrayList<>(); DateFormat mf = new SimpleDateFormat("yyyy-MM"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - DecimalFormat decf = new DecimalFormat("0.00"); + DecimalFormat decf = new DecimalFormat("###.###"); decf.setRoundingMode(RoundingMode.HALF_UP); LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); @@ -656,10 +662,28 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI)); + } else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK)); + } else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI)); + } else { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA)); + } + + if (laboranRadiologList.contains(idPegawai)) { + listDetailJenisProdukException = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION)); + listDetailJenisProdukException.removeAll(listDetailJenisProduk); + + listDetailJenisProduk.addAll(listDetailJenisProdukException); + } List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookJamKerjaDokter( mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, - Arrays.asList(idPegawai), Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(idPegawai), listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); List> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter( @@ -687,21 +711,23 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { // tidak_dapat_skor_untuk_diskon_dpjp - mapLayanan.put("skor", 0.0); - mapLayanan.put("tSkor", 0.0); + mapLayanan.put("skor", 0.000); + mapLayanan.put("tSkor", 0.000); } else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) && !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT) && listRuangEks.contains(mapLayanan.get("ruanganId"))) { - mapLayanan.put("skor", - Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF); + mapLayanan.put("skor", Double.parseDouble(decf.format( + Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { - mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); + mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else { + mapLayanan.put("skor", + Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } @@ -843,6 +869,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listTglPelayanan = new ArrayList<>(); List listIdIndikator = new ArrayList<>(); List listIdProduk = new ArrayList<>(); + List listDetailJenisProduk = new ArrayList<>(); + List listDetailJenisProdukException = new ArrayList<>(); List listSkor = new ArrayList<>(); DateFormat mf = new SimpleDateFormat("yyyy-MM"); @@ -850,7 +878,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - DecimalFormat decf = new DecimalFormat("0.00"); + DecimalFormat decf = new DecimalFormat("###.###"); decf.setRoundingMode(RoundingMode.HALF_UP); LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); @@ -863,11 +891,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI)); + } else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK)); + } else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI)); + } else { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA)); + } + + if (laboranRadiologList.contains(idPegawai)) { + listDetailJenisProdukException = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION)); + listDetailJenisProdukException.removeAll(listDetailJenisProduk); + + listDetailJenisProduk.addAll(listDetailJenisProdukException); + } List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookLuarJamKerjaDokter( mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), - Master.Produk.KARCIS); + listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); List> dataSkor = skoringTindakanMedisDao.findSkoringLogbookDokter( mf.format(new Date(bulan)), Arrays.asList(idPegawai), Arrays.asList(Master.UnitKerja.KSM)); @@ -894,24 +940,25 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { // tidak_dapat_skor_untuk_diskon_dpjp - mapLayanan.put("skor", 0.0); - mapLayanan.put("tSkor", 0.0); + mapLayanan.put("skor", 0.000); + mapLayanan.put("tSkor", 0.000); } else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) && !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT) && listRuangEks.contains(mapLayanan.get("ruanganId"))) { - mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); + mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { mapLayanan.put("skor", - Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA - * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); + Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else { - mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA); + mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_LUAR_JAM_KERJA))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } @@ -1052,6 +1099,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) { List> result = new ArrayList<>(); + List listDetailJenisProduk = new ArrayList<>(); + List listDetailJenisProdukException = new ArrayList<>(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); @@ -1064,11 +1114,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI)); + } else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK)); + } else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI)); + } else { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA)); + } + + if (laboranRadiologList.contains(idPegawai)) { + listDetailJenisProdukException = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION)); + listDetailJenisProdukException.removeAll(listDetailJenisProduk); + + listDetailJenisProduk.addAll(listDetailJenisProdukException); + } List> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookJamKerjaDokter(idProduk, tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), - Master.Produk.KARCIS); + listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); for (Map mapLayanan : dataLayanan) { if (idIndikator.equals(Master.IndikatorKinerjaJamKerja.VISITE) @@ -1418,6 +1486,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) { List> result = new ArrayList<>(); + List listDetailJenisProduk = new ArrayList<>(); + List listDetailJenisProdukException = new ArrayList<>(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); @@ -1430,11 +1501,29 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI)); + } else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK)); + } else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI)); + } else { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA)); + } + + if (laboranRadiologList.contains(idPegawai)) { + listDetailJenisProdukException = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION)); + listDetailJenisProdukException.removeAll(listDetailJenisProduk); + + listDetailJenisProduk.addAll(listDetailJenisProdukException); + } List> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookLuarJamKerjaDokter(idProduk, tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), - Master.Produk.KARCIS); + listDetailJenisProduk, Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.Produk.KARCIS); for (Map mapLayanan : dataLayanan) { if (idIndikator.equals(Master.IndikatorKinerjaLuarJamKerja.VISITE) @@ -2010,11 +2099,14 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Override public void autoVerifLogbookJamKerjaDokter(Date bulan) { + List listDetailJenisProduk = new ArrayList<>(); + List listDetailJenisProdukException = new ArrayList<>(); + DateFormat mf = new SimpleDateFormat("yyyy-MM"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - DecimalFormat decf = new DecimalFormat("0.00"); + DecimalFormat decf = new DecimalFormat("###.###"); decf.setRoundingMode(RoundingMode.HALF_UP); LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); @@ -2066,25 +2158,50 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb } else if (!mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) && !mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT) && listRuangEks.contains(mapLayanan.get("ruanganId"))) { - mapLayanan.put("skor", - Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF); + mapLayanan.put("skor", Double.parseDouble(decf.format( + Double.valueOf(mapLayanan.get("skor").toString()) * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { - mapLayanan.put("skor", Double.valueOf(mapLayanan.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); + mapLayanan.put("skor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } else { + mapLayanan.put("skor", + Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString())))); mapLayanan.put("tSkor", Double.parseDouble(decf.format(Double.valueOf(mapLayanan.get("skor").toString()) * Double.valueOf(mapLayanan.get("jumlah").toString())))); } } + List laboranRadiologList = mapPegawaiLaboratRadiologiDao.findPegawaiLaboranRadiolog(); + for (Integer idPegawai : listIdPegawai) { + if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI)); + } else if (pegawaiDao.getDokterLabKlinik().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_KLINIK)); + } else if (pegawaiDao.getDokterRadiologi().contains(idPegawai)) { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.PENUNJANG_RADIOLOGI)); + } else { + listDetailJenisProduk = new ArrayList<>(Arrays.asList(Master.DetailJenisProduk.MEDIS_UTAMA)); + } + + if (laboranRadiologList.contains(idPegawai)) { + listDetailJenisProdukException = new ArrayList<>( + Arrays.asList(Master.DetailJenisProduk.ADMINISTRASI_PATOLOGI_KLINIK_EXCEPTION)); + listDetailJenisProdukException.removeAll(listDetailJenisProduk); + + listDetailJenisProduk.addAll(listDetailJenisProdukException); + } + double capaian = 0.0; for (Map mapLayanan : dataLayanan) { - if (mapLayanan.get("pegawaiId").equals(idPegawai)) { + if (mapLayanan.get("pegawaiId").equals(idPegawai) + && listDetailJenisProduk.contains(mapLayanan.get("detailJenisProdukId"))) { capaian += Double.valueOf(mapLayanan.get("tSkor").toString()); } }