From 26762433aa746b91d094134d40e40537ff6e66cf Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 13 Jul 2021 08:17:37 +0700 Subject: [PATCH] - perbaikan query perhitungan otomatis target pelayanan jam kerja - pembuatan query perhitungan otomatis target pelayanan luar jam kerja - perbaikan query logbook skoring jam kerja - pembuatan query logbook skoring luar jam kerja - perbaikan query detail logbook skoring jam kerja - pembuatan query detail logbook skoring luar jam kerja --- .../dao/IkiDanRemunerasiDao.java | 133 +++++- .../medifirst2000/dao/PegawaiDao.java | 4 + .../service/IkiDanRemunerasiService.java | 2 + .../service/LogbookKinerjaService.java | 11 +- .../impl/IkiDanRemunerasiServiceImpl.java | 406 +++++++++++++++++- .../impl/LogbookKinerjaServiceImpl.java | 52 ++- .../IkiDanRemunerasiController.java | 4 +- 7 files changed, 573 insertions(+), 39 deletions(-) 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 8c48ff58..7baf3556 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,51 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "order by su.name, pr.id") public List> getDataLayananJamKerja(@Param("tglAwal") Date tglAwal, - @Param("tglAkhir") Date tglAkhir, @Param("listNonjadwalId") List listIdNonjadwal, - @Param("jenisPegawaiId") Integer idJenisPegawai, @Param("listKsmId") List listIdKsm, - @Param("listNontindakanId") List listIdNontindakan, @Param("karcisId") Integer idKarcis); + @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("karcisId") Integer idKarcis); - // Logbook_kinerja_dokter + // 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," + "pr.id as idTindakan,pr.namaProduk as namaTindakan," + + "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 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 pjk.shift sk " + + "left join pjk.tanggal kl " + "where mrtp.produkId = pr.id " + "and mrtp.ruanganId = apd.ruanganId " + + "and ppp.ObjectPegawaiId = mpju.pegawaiId " + "and mpju.pegawaiId = pg.id " + + "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id " + + "and mpju.unitKerjaPegawaiId in (:listKsmId) " + "and mrtp.statusEnabled is true " + + "and mpju.statusEnabled is true " + "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + + "and sk.statusEnabled is true " + "and pp.tglPelayanan between :tglAwal and :tglAkhir " + + "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or (to_char(pp.tglPelayanan,'dy') in ('fri') " + + "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') " + "or sk.id in (:listNonjadwalId)) " + + "and pg.jenisPegawaiId = :jenisPegawaiId " + "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("karcisId") Integer idKarcis); + + // Logbook_kinerja_jam_kerja_dokter @Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + "pr.id as produkId,pr.namaProduk as namaProduk," + "pp.noRec as noRec,pp.tglPelayanan as tglPelayanan,pp.jumlah as jumlah,pp.hargaDiscount as hargaDiskon," @@ -143,22 +176,51 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") - public List> getDataLogbookDokter(@Param("bulan") String bulan, + public List> getDataLogbookJamKerjaDokter(@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("karcisId") Integer idKarcis); + // Logbook_kinerja_luar_jam_kerja_dokter + @Query("select distinct new Map(ppp.ObjectJenisPetugasPeId as jenisPetugasId," + + "pr.id as produkId,pr.namaProduk as namaProduk," + + "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 " + + "left join ppp.pelayananPasien pp " + "left join ppp.kdpegawai pg " + "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 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 mrtp.statusEnabled is true " + "and pg.statusEnabled is true " + "and pd.statusEnabled is true " + + "and sk.statusEnabled is true " + "and to_char(pp.tglPelayanan,'yyyy-MM') = :bulan " + + "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or (to_char(pp.tglPelayanan,'dy') in ('fri') " + + "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') or sk.id in (:listNonjadwalId)) " + + "and pg.jenisPegawaiId = :jenisPegawaiId " + "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("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," + + "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," + "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) " @@ -173,14 +235,47 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository :karcisId " - + "and pg.id = :pegawaiId " + "order by pr.namaProduk, pp.tglPelayanan") - public List> findDetailPasienLogbook(@Param("produkId") Integer idProduk, - @Param("tglPelayanan") String tglPelayanan, @Param("listNonjadwalId") List listIdNonjadwal, + + "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("listNontindakanId") List listIdNontindakan, @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," + + "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) " + + "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 " + + "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = pg.id " + + "and mrtp.statusEnabled is true " + "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:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '14:00:01' else '15:30:01' end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or (to_char(pp.tglPelayanan,'dy') in ('fri') " + + "and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) then '15:30:01' else '16:00:01'end) and '23:59:59' " + + "or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) " + + "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') or sk.id in (:listNonjadwalId)) " + + "and pg.jenisPegawaiId = :jenisPegawaiId " + "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("listNontindakanId") List listIdNontindakan, @Param("karcisId") Integer idKarcis); } \ No newline at end of file diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java index cd6dc805..2453d15c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java @@ -1067,4 +1067,8 @@ public interface PegawaiDao extends PagingAndSortingRepository public List> findPegawaiByListKategori( @Param("listKategoryPegawaiId") List listIdKategoriPegawai); + @Query("select new Map(pg.id as pegawaiId,pg.namaLengkap as namaLengkap) " + + "from Pegawai pg where pg.statusEnabled is true and pg.id in (:listPegawaiId)") + public List> findPegawaiByListId(@Param("listPegawaiId") List listIdPegawai); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java index f84a1388..dd411114 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java @@ -32,6 +32,8 @@ public interface IkiDanRemunerasiService { public Map savePirDanIku(List vo); public void autoSaveTargetCapaianLayananJamKerja(String strPeriode, Integer idKsm) throws ParseException; + + public void autoSaveTargetCapaianLayananLuarJamKerja(String strPeriode, Integer idKsm) throws ParseException; public void saveTargetCapaianLayanan(TargetLayananCustomVO vo, Date periodeHitung) throws ParseException; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java index 20f50d8b..7f05b083 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java @@ -33,10 +33,15 @@ public interface LogbookKinerjaService extends BaseVoService> findAksesPegawai(Integer idPegawai); - public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan); + public List> findLogbookJamKerjaDokter(Integer idPegawai, Long bulan); - public List> findDetailPasienLogbook(Integer idPegawai, Integer idIndikator, Integer idProduk, - String tglPelayanan, Integer idJenisPetugas, Double skor); + public List> findLogbookLuarJamKerjaDokter(Integer idPegawai, Long bulan); + + public List> findDetailLogbookJamKerjaDokter(Integer idPegawai, Integer idIndikator, + Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor); + + public List> findDetailLogbookLuarJamKerjaDokter(Integer idPegawai, Integer idIndikator, + Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor); public Map findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException; 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 1b03e5d3..a8bd6f75 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 @@ -2,6 +2,9 @@ package com.jasamedika.medifirst2000.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -25,6 +28,7 @@ import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao; import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; import com.jasamedika.medifirst2000.dao.MonitoringAbsenDao; +import com.jasamedika.medifirst2000.dao.PegawaiDao; import com.jasamedika.medifirst2000.dao.RunningNumberDao; import com.jasamedika.medifirst2000.dao.SettingPirSdmDao; import com.jasamedika.medifirst2000.dao.ShiftKerjaDao; @@ -137,6 +141,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Autowired private ShiftKerjaDao shiftKerjaDao; + @Autowired + private PegawaiDao pegawaiDao; + @Override public Map loadData() { Map result = new HashMap<>(); @@ -472,6 +479,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + Date periode = sdf.parse(strPeriode); // get_few_months_earlier @@ -491,6 +500,12 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik bulan.set(Calendar.SECOND, 0); bulan.set(Calendar.DAY_OF_MONTH, bulan.getActualMaximum(Calendar.DAY_OF_MONTH)); + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); @@ -500,12 +515,12 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List> dataLayananRaw = new ArrayList<>(); if (CommonUtil.isNotNullOrEmpty(idKsm)) { - dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), - listIdNonjadwal, Master.JenisPegawai.DOKTER, Arrays.asList(idKsm), + dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, + pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, Arrays.asList(idKsm), Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); } else { - dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), - listIdNonjadwal, Master.JenisPegawai.DOKTER, Arrays.asList(Master.UnitKerja.KSM), + dataLayananRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(), bulan.getTime(), pssbAwal, + pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); } @@ -829,6 +844,387 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } } + @Override + public void autoSaveTargetCapaianLayananLuarJamKerja(String strPeriode, Integer idKsm) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + Date periode = sdf.parse(strPeriode); + + // get_few_months_earlier + Calendar calTglAwal = Calendar.getInstance(); + calTglAwal.setTime(periode); + calTglAwal.set(Calendar.HOUR_OF_DAY, 0); + calTglAwal.set(Calendar.MINUTE, 0); + calTglAwal.set(Calendar.SECOND, 0); + calTglAwal.set(Calendar.DAY_OF_MONTH, 1); + calTglAwal.add(Calendar.MONTH, -Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis"))); + + // get_this_period + Calendar bulan = Calendar.getInstance(); + bulan.setTime(periode); + bulan.set(Calendar.HOUR_OF_DAY, 23); + bulan.set(Calendar.MINUTE, 59); + bulan.set(Calendar.SECOND, 0); + bulan.set(Calendar.DAY_OF_MONTH, bulan.getActualMaximum(Calendar.DAY_OF_MONTH)); + + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); + List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); + + List listIndikatorPelayanan = Arrays.asList(Master.IndikatorKinerjaDetail.INDIKATOR_PELAYANAN_MEDIS); + + List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); + + List> dataLayananRaw = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(idKsm)) { + dataLayananRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(), bulan.getTime(), + pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, Arrays.asList(idKsm), + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); + } else { + dataLayananRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(), bulan.getTime(), + pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, + Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Master.Produk.KARCIS); + } + + // get_kategori_bulan + List listBulanPelayanan = new ArrayList<>(); + List listBulanPelayananSorted = new ArrayList<>(); + for (Map dat : dataLayananRaw) { + if (!listBulanPelayanan.contains(sdf.format(dat.get("tglPelayanan")))) { + listBulanPelayanan.add(sdf.format(dat.get("tglPelayanan"))); + } + } + listBulanPelayananSorted = listBulanPelayanan.stream().sorted().collect(Collectors.toList()); + + // get_kategori_pegawai + List listIdPegawai = new ArrayList<>(); + for (Map map : dataLayananRaw) { + if (!listIdPegawai.contains(map.get("pegawaiId"))) { + listIdPegawai.add(Integer.parseInt(map.get("pegawaiId").toString())); + } + } + + // get_kategori_kelompok_kerja +// List listIdKK = new ArrayList<>(); +// for (Map map : dataLayananRaw) { +// if (!listIdKK.contains(map.get("idKelompokKerja"))) { +// listIdKK.add(Integer.parseInt(map.get("idKelompokKerja").toString())); +// } +// } + + List> listPegawai = pegawaiDao.findPegawaiByListId(listIdPegawai); + +// List> listKelompokKerja = subunitKerjaDao.findSubDanUnitKerjaById(listIdKK); + + List> dataLastTargetLayanan = targetLayananDao + .getLastTargetLayanan(sdf.format(calTglAwal.getTime()), sdf.format(bulan.getTime())); + + List> filterTarget = new ArrayList<>(); + // filtering target + for (Map mapData : dataLastTargetLayanan) { + boolean isContained = false; + for (Map mapFilter : filterTarget) { + if (mapData.get("kelompokKerjaId").equals(mapFilter.get("kelompokKerjaId")) + && mapData.get("indikatorId").equals(mapFilter.get("indikatorId")) + && mapData.get("periode").equals(mapFilter.get("periode"))) { + isContained = true; + break; + } + } + if (!isContained) { + Map mapFilter = new HashMap<>(); + mapFilter.put("kelompokKerjaId", mapData.get("kelompokKerjaId")); + mapFilter.put("indikatorId", mapData.get("indikatorId")); + mapFilter.put("periode", mapData.get("periode")); + filterTarget.add(mapFilter); + } + } + + List> dataTargetFiltered = new ArrayList<>(); + // processing Target + for (Map mapFilter : filterTarget) { + for (Map mapData : dataLastTargetLayanan) { + if (mapData.get("kelompokKerjaId").equals(mapFilter.get("kelompokKerjaId")) + && mapData.get("indikatorId").equals(mapFilter.get("indikatorId")) + && mapData.get("periode").equals(mapFilter.get("periode"))) { + dataTargetFiltered.add(mapData); + break; + } + } + } + + List> dataSkoringRaw = skoringTindakanMedisDao.findLatestActiveSkor(); + + List> filterSkoring = new ArrayList<>(); + // filtering skoring + for (Map mapData : dataSkoringRaw) { + boolean isContained = false; + for (Map mapFilter : filterSkoring) { + if (mapData.get("produkId").equals(mapFilter.get("produkId")) + && mapData.get("kelompokKerjaId").equals(mapFilter.get("kelompokKerjaId"))) { + isContained = true; + break; + } + } + if (!isContained) { + Map mapFilter = new HashMap<>(); + mapFilter.put("produkId", mapData.get("produkId")); + mapFilter.put("kelompokKerjaId", mapData.get("kelompokKerjaId")); + filterSkoring.add(mapFilter); + } + } + + List> dataSkoringFiltered = new ArrayList<>(); + // processing skoring + for (Map mapFilter : filterSkoring) { + for (Map mapData : dataSkoringRaw) { + if (mapFilter.get("produkId").equals(mapData.get("produkId")) + && mapFilter.get("kelompokKerjaId").equals(mapData.get("kelompokKerjaId"))) { + dataSkoringFiltered.add(mapData); + break; + } + } + } + + List> dataLayananScored = new ArrayList<>(); + // scoring data layanan + for (Map layanan : dataLayananRaw) { + for (Map skoring : dataSkoringFiltered) { + if (layanan.get("idTindakan").equals(skoring.get("produkId")) + && layanan.get("idKelompokKerja").equals(skoring.get("kelompokKerjaId")) + && (((Date) skoring.get("tglBerlaku")).before(((Date) layanan.get("tglPelayanan"))) + || ((Date) skoring.get("tglBerlaku")).equals(((Date) layanan.get("tglPelayanan"))))) { + + if (Double.valueOf(layanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(layanan.get("statusDiskon")) + || !Boolean.valueOf(layanan.get("statusDiskon").toString()))) { + layanan.put("jumlahTindakan", 0.0); + } else if (listRuangEks.contains(layanan.get("idRuangan")) + && !layanan.get("namaTindakan").toString().toLowerCase().contains(Master.KONSUL) + && !layanan.get("namaTindakan").toString().toLowerCase().contains(Master.VISIT)) { + layanan.put("jumlahTindakan", + Double.valueOf(layanan.get("jumlahTindakan").toString()) + * Double.valueOf(skoring.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_EKSEKUTIF); + } else if (layanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + layanan.put("jumlahTindakan", + Double.valueOf(layanan.get("jumlahTindakan").toString()) + * Double.valueOf(skoring.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS); + } else { + layanan.put("jumlahTindakan", Double.valueOf(layanan.get("jumlahTindakan").toString()) + * Double.valueOf(skoring.get("skor").toString())); + } + + break; + } + } + dataLayananScored.add(layanan); + } + + for (Map kelompokKerja : listKelompokKerja) { + for (Integer idIndikator : listIndikatorPelayanan) { + TargetLayananCustomVO resultVo = new TargetLayananCustomVO(); + List listDetail = new ArrayList<>(); + + double capaianTriwulanKE = 0.0; + double capaianTriwulanKG = 0.0; + double capaianTriwulanKR = 0.0; + double capaianTriwulanTE = 0.0; + double capaianTriwulanTG = 0.0; + double capaianTriwulanTO = 0.0; + double capaianTriwulanTR = 0.0; + double capaianTriwulanVI = 0.0; + + int i = 0; + for (String datePelayanan : listBulanPelayananSorted) { + i++; + TargetLayananCustomDetailVO detail = new TargetLayananCustomDetailVO(); + + double capaianBulanan = 0.0; + double targetBulanan = 0.0; + for (Map data : dataLayananScored) { + if (kelompokKerja.get("subunitKerjaId").equals(data.get("idKelompokKerja")) + && datePelayanan.equals(sdf.format(data.get("tglPelayanan")))) { + if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE) + && (listKonsulTapiVisit.contains(data.get("idTindakan")) || data.get("namaTindakan") + .toString().toLowerCase().contains(Master.VISIT))) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanVI += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanVI / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_EKS) + && data.get("namaTindakan").toString().toLowerCase().contains(Master.KONSUL) + && listRuangEks.contains(data.get("idRuangan"))) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanKE += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanKE / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_GADAR) + && data.get("namaTindakan").toString().toLowerCase().contains(Master.KONSUL) + && data.get("idDepartemen").equals(Master.Departemen.IGD)) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanKG += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanKG / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.KONSUL_REG) + && data.get("namaTindakan").toString().toLowerCase().contains(Master.KONSUL)) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanKR += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanKR / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_EKS) + && listRuangEks.contains(data.get("idRuangan"))) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanTE += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanTE / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_GADAR) + && data.get("idDepartemen").equals(Master.Departemen.IGD)) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanTG += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanTG / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_OPS) + && data.get("idRuangan").equals(Master.Ruangan.OK)) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanTO += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanTO / (listBulanPelayananSorted.size() - 1)); + } + } else if (idIndikator.equals(Master.IndikatorKinerjaDetail.TINDAKAN_REG)) { + capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); + if (i < listBulanPelayananSorted.size()) { + capaianTriwulanTR += Double.valueOf(data.get("jumlahTindakan").toString()); + for (Map target : dataTargetFiltered) { + if (kelompokKerja.get("subunitKerjaId").equals(target.get("kelompokKerjaId")) + && idIndikator.equals(target.get("indikatorId")) + && datePelayanan.equals(target.get("periode"))) { + targetBulanan = Double.valueOf(target.get("target").toString()); + break; + } + } + } else if (i == listBulanPelayananSorted.size()) { + targetBulanan = Math + .floor(capaianTriwulanTR / (listBulanPelayananSorted.size() - 1)); + } + } + } + } + Date bulanPelayanan = sdf.parse(datePelayanan); + + detail.setDate(datePelayanan); + detail.setBulan(sdfINA.format(bulanPelayanan)); + detail.setTarget(targetBulanan); + detail.setCapaian(capaianBulanan); + listDetail.add(detail); + } + if (Double.valueOf(listDetail.get(listDetail.size() - 1).getTarget()) > 0.0) { + resultVo.setDetail(listDetail); + SubUnitKerjaPegawaiVO kelompokKerjaVO = new SubUnitKerjaPegawaiVO(); + kelompokKerjaVO.setId(Integer.valueOf(kelompokKerja.get("subunitKerjaId").toString())); + + UnitKerjaPegawaiVO unitKerjaVO = new UnitKerjaPegawaiVO(); + unitKerjaVO.setId(Integer.valueOf(kelompokKerja.get("unitKerjaId").toString())); + kelompokKerjaVO.setUnitKerja(unitKerjaVO); + + IndikatorKinerjaDetailVO detailIndikatorVO = new IndikatorKinerjaDetailVO(); + detailIndikatorVO.setId(idIndikator); + + resultVo.setKelompokKerja(kelompokKerjaVO); + resultVo.setIndikator(detailIndikatorVO); + + saveTargetCapaianLayanan(resultVo, sdf.parse(strPeriode)); + } + } + } + } + @Override @Transactional(readOnly = false) public void saveTargetCapaianLayanan(TargetLayananCustomVO vo, Date periodeHitung) throws ParseException { @@ -861,7 +1257,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List> dataPegawai = mapPegawaiJabatanToUnitKerjaDao .findPegawaiJabatanBySubunitKerja(targetLayanan.getSubUnitKerjaPegawai().getId()); - Double detailTarget = Math.floor(targetLayanan.target / dataPegawai.size()); + Double detailTarget = Math.floor(targetLayanan.getTarget() / dataPegawai.size()); if (detailTarget < 1.0) { detailTarget = 1.0; } 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 785c87cf..7b63d07a 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 @@ -6,6 +6,9 @@ import java.text.DateFormat; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -431,7 +434,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb for (Map map : rs) { if (map.get("jenisIndikator").equals(ji)) { if (map.get("idIndikator").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS)) { - List> logbookDokter = findLogbookSkoringDokter(idPegawai, bulan); + List> logbookDokter = findLogbookJamKerjaDokter(idPegawai, bulan); double capaian = 0.0; for (Map ld : logbookDokter) { capaian += Double.valueOf(ld.get("tSkor").toString()); @@ -578,7 +581,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb } @Override - public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan) { + public List> findLogbookJamKerjaDokter(Integer idPegawai, Long bulan) { List> result = new ArrayList<>(); List listTglPelayanan = new ArrayList<>(); List listIdIndikator = new ArrayList<>(); @@ -588,17 +591,25 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb 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"); decf.setRoundingMode(RoundingMode.HALF_UP); + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); - List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)), - listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN), - Master.Produk.KARCIS); + List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookJamKerjaDokter( + mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); List> dataSkor = skoringTindakanMedisDao .findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM)); @@ -776,18 +787,32 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb } @Override - public List> findDetailPasienLogbook(Integer idPegawai, Integer idIndikator, Integer idProduk, - String tglPelayanan, Integer idJenisPetugas, Double skor) { + public List> findLogbookLuarJamKerjaDokter(Integer idPegawai, Long bulan) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List> findDetailLogbookJamKerjaDokter(Integer idPegawai, Integer idIndikator, + Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) { List> result = new ArrayList<>(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + + Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); + Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); List listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); - List> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbook(idProduk, tglPelayanan, - listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN), - Master.Produk.KARCIS); + List> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookJamKerjaDokter(idProduk, + tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); for (Map mapLayanan : dataLayanan) { if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE) @@ -1126,6 +1151,13 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + @Override + public List> findDetailLogbookLuarJamKerjaDokter(Integer idPegawai, Integer idIndikator, + Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) { + // TODO Auto-generated method stub + return null; + } + @Override public Map findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException { diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 6140016a..8d2b15e7 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -1172,7 +1172,7 @@ public class IkiDanRemunerasiController extends LocaleController> result = logbookKinerjaService.findLogbookSkoringDokter(idPegawai, bulan); + List> result = logbookKinerjaService.findLogbookJamKerjaDokter(idPegawai, bulan); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -1196,7 +1196,7 @@ public class IkiDanRemunerasiController extends LocaleController> result = logbookKinerjaService.findDetailPasienLogbook(idPegawai, idIndikator, + List> result = logbookKinerjaService.findDetailLogbookJamKerjaDokter(idPegawai, idIndikator, idProduk, tglPelayanan, idJenisPetugas, skor); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request));