- 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
This commit is contained in:
salmanoe 2021-07-13 08:17:37 +07:00
parent 6e2975c760
commit 26762433aa
7 changed files with 573 additions and 39 deletions

View File

@ -117,18 +117,51 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "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:MM:ss') "
+ "between '07:00:00' and '15:30:00') or (to_char(pp.tglPelayanan,'dy') in ('fri') "
+ "and to_char(pp.tglPelayanan,'HH24:MM:ss') between '07:00:00' and '16:00:00')) "
+ "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) 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) then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not in (:listNonjadwalId)) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "order by su.name, pr.id")
public List<Map<String, Object>> getDataLayananJamKerja(@Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("listKsmId") List<Integer> listIdKsm,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("karcisId") Integer idKarcis);
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listKsmId") List<Integer> listIdKsm, @Param("listNontindakanId") List<Integer> 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<Map<String, Object>> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir, @Param("tglAkhir") Date tglAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listKsmId") List<Integer> listIdKsm, @Param("listNontindakanId") List<Integer> 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<IkiDanRe
+ "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:MM:ss') between '07:00:00' and '15:30:00') "
+ "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) 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 '16:00:00')) "
+ "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) then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not 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<Map<String, Object>> getDataLogbookDokter(@Param("bulan") String bulan,
public List<Map<String, Object>> getDataLogbookJamKerjaDokter(@Param("bulan") String bulan,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("pegawaiId") Integer idPegawai, @Param("listNontindakanId") List<Integer> 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<Map<String, Object>> getDataLogbookLuarJamKerjaDokter(@Param("bulan") String bulan,
@Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("pegawaiId") Integer idPegawai, @Param("listNontindakanId") List<Integer> 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<IkiDanRe
+ "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 '15:30:00') "
+ "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) 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 '16:00:00')) "
+ "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) then '15:30:00' else '16:00:00' end))) "
+ "and sk.id not 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<Map<String, Object>> findDetailPasienLogbook(@Param("produkId") Integer idProduk,
@Param("tglPelayanan") String tglPelayanan, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
+ "and pg.id = :pegawaiId" + " order by pr.namaProduk, pp.tglPelayanan")
public List<Map<String, Object>> findDetailPasienLogbookJamKerjaDokter(@Param("produkId") Integer idProduk,
@Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal,
@Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai,
@Param("listNontindakanId") List<Integer> 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<Map<String, Object>> findDetailPasienLogbookLuarJamKerjaDokter(@Param("produkId") Integer idProduk,
@Param("tglPelayanan") String tglPelayanan, @Param("psbbAwal") Date psbbAwal,
@Param("psbbAkhir") Date psbbAkhir, @Param("listNonjadwalId") List<Integer> listIdNonjadwal,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("pegawaiId") Integer idPegawai,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("karcisId") Integer idKarcis);
}

View File

@ -1067,4 +1067,8 @@ public interface PegawaiDao extends PagingAndSortingRepository<Pegawai, Integer>
public List<Map<String, Object>> findPegawaiByListKategori(
@Param("listKategoryPegawaiId") List<Integer> 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<Map<String, Object>> findPegawaiByListId(@Param("listPegawaiId") List<Integer> listIdPegawai);
}

View File

@ -32,6 +32,8 @@ public interface IkiDanRemunerasiService {
public Map<String, Object> savePirDanIku(List<SettingPirSdmVO> 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;

View File

@ -33,10 +33,15 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai);
public List<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan);
public List<Map<String, Object>> findLogbookJamKerjaDokter(Integer idPegawai, Long bulan);
public List<Map<String, Object>> findDetailPasienLogbook(Integer idPegawai, Integer idIndikator, Integer idProduk,
String tglPelayanan, Integer idJenisPetugas, Double skor);
public List<Map<String, Object>> findLogbookLuarJamKerjaDokter(Integer idPegawai, Long bulan);
public List<Map<String, Object>> findDetailLogbookJamKerjaDokter(Integer idPegawai, Integer idIndikator,
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor);
public List<Map<String, Object>> findDetailLogbookLuarJamKerjaDokter(Integer idPegawai, Integer idIndikator,
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor);
public Map<String, Object> findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan)
throws JpaSystemException;

View File

@ -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<String, Object> loadData() {
Map<String, Object> 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<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
@ -500,12 +515,12 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Map<String, Object>> 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<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIndikatorPelayanan = Arrays.asList(Master.IndikatorKinerjaDetail.INDIKATOR_PELAYANAN_MEDIS);
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Map<String, Object>> 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<String> listBulanPelayanan = new ArrayList<>();
List<String> listBulanPelayananSorted = new ArrayList<>();
for (Map<String, Object> 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<Integer> listIdPegawai = new ArrayList<>();
for (Map<String, Object> map : dataLayananRaw) {
if (!listIdPegawai.contains(map.get("pegawaiId"))) {
listIdPegawai.add(Integer.parseInt(map.get("pegawaiId").toString()));
}
}
// get_kategori_kelompok_kerja
// List<Integer> listIdKK = new ArrayList<>();
// for (Map<String, Object> map : dataLayananRaw) {
// if (!listIdKK.contains(map.get("idKelompokKerja"))) {
// listIdKK.add(Integer.parseInt(map.get("idKelompokKerja").toString()));
// }
// }
List<Map<String, Object>> listPegawai = pegawaiDao.findPegawaiByListId(listIdPegawai);
// List<Map<String, Object>> listKelompokKerja = subunitKerjaDao.findSubDanUnitKerjaById(listIdKK);
List<Map<String, Object>> dataLastTargetLayanan = targetLayananDao
.getLastTargetLayanan(sdf.format(calTglAwal.getTime()), sdf.format(bulan.getTime()));
List<Map<String, Object>> filterTarget = new ArrayList<>();
// filtering target
for (Map<String, Object> mapData : dataLastTargetLayanan) {
boolean isContained = false;
for (Map<String, Object> 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<String, Object> 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<Map<String, Object>> dataTargetFiltered = new ArrayList<>();
// processing Target
for (Map<String, Object> mapFilter : filterTarget) {
for (Map<String, Object> 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<Map<String, Object>> dataSkoringRaw = skoringTindakanMedisDao.findLatestActiveSkor();
List<Map<String, Object>> filterSkoring = new ArrayList<>();
// filtering skoring
for (Map<String, Object> mapData : dataSkoringRaw) {
boolean isContained = false;
for (Map<String, Object> mapFilter : filterSkoring) {
if (mapData.get("produkId").equals(mapFilter.get("produkId"))
&& mapData.get("kelompokKerjaId").equals(mapFilter.get("kelompokKerjaId"))) {
isContained = true;
break;
}
}
if (!isContained) {
Map<String, Object> mapFilter = new HashMap<>();
mapFilter.put("produkId", mapData.get("produkId"));
mapFilter.put("kelompokKerjaId", mapData.get("kelompokKerjaId"));
filterSkoring.add(mapFilter);
}
}
List<Map<String, Object>> dataSkoringFiltered = new ArrayList<>();
// processing skoring
for (Map<String, Object> mapFilter : filterSkoring) {
for (Map<String, Object> mapData : dataSkoringRaw) {
if (mapFilter.get("produkId").equals(mapData.get("produkId"))
&& mapFilter.get("kelompokKerjaId").equals(mapData.get("kelompokKerjaId"))) {
dataSkoringFiltered.add(mapData);
break;
}
}
}
List<Map<String, Object>> dataLayananScored = new ArrayList<>();
// scoring data layanan
for (Map<String, Object> layanan : dataLayananRaw) {
for (Map<String, Object> 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<String, Object> kelompokKerja : listKelompokKerja) {
for (Integer idIndikator : listIndikatorPelayanan) {
TargetLayananCustomVO resultVo = new TargetLayananCustomVO();
List<TargetLayananCustomDetailVO> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<Map<String, Object>> 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;
}

View File

@ -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<String, Object> map : rs) {
if (map.get("jenisIndikator").equals(ji)) {
if (map.get("idIndikator").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS)) {
List<Map<String, Object>> logbookDokter = findLogbookSkoringDokter(idPegawai, bulan);
List<Map<String, Object>> logbookDokter = findLogbookJamKerjaDokter(idPegawai, bulan);
double capaian = 0.0;
for (Map<String, Object> ld : logbookDokter) {
capaian += Double.valueOf(ld.get("tSkor").toString());
@ -578,7 +581,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
}
@Override
public List<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan) {
public List<Map<String, Object>> findLogbookJamKerjaDokter(Integer idPegawai, Long bulan) {
List<Map<String, Object>> result = new ArrayList<>();
List<String> listTglPelayanan = new ArrayList<>();
List<Integer> 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<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)),
listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Master.Produk.KARCIS);
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookJamKerjaDokter(
mf.format(new Date(bulan)), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS);
List<Map<String, Object>> 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<Map<String, Object>> findDetailPasienLogbook(Integer idPegawai, Integer idIndikator, Integer idProduk,
String tglPelayanan, Integer idJenisPetugas, Double skor) {
public List<Map<String, Object>> findLogbookLuarJamKerjaDokter(Integer idPegawai, Long bulan) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Map<String, Object>> findDetailLogbookJamKerjaDokter(Integer idPegawai, Integer idIndikator,
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) {
List<Map<String, Object>> 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<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<Integer> listKonsulTapiVisit = splitDataSettingDatafixed("konsulTapiVisit");
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbook(idProduk, tglPelayanan,
listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Master.Produk.KARCIS);
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.findDetailPasienLogbookJamKerjaDokter(idProduk,
tglPelayanan, pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, idPegawai,
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS);
for (Map<String, Object> mapLayanan : dataLayanan) {
if (idIndikator.equals(Master.IndikatorKinerjaDetail.VISITE)
@ -1126,6 +1151,13 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
return result;
}
@Override
public List<Map<String, Object>> findDetailLogbookLuarJamKerjaDokter(Integer idPegawai, Integer idIndikator,
Integer idProduk, String tglPelayanan, Integer idJenisPetugas, Double skor) {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan)
throws JpaSystemException {

View File

@ -1172,7 +1172,7 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
@RequestParam(value = "bulan", required = true) Long bulan,
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException {
try {
List<Map<String, Object>> result = logbookKinerjaService.findLogbookSkoringDokter(idPegawai, bulan);
List<Map<String, Object>> 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<IkiDanRemuneras
@RequestParam(value = "jenisPetugasId", required = true) Integer idJenisPetugas,
@RequestParam(value = "skor", required = true) Double skor) throws ParseException {
try {
List<Map<String, Object>> result = logbookKinerjaService.findDetailPasienLogbook(idPegawai, idIndikator,
List<Map<String, Object>> result = logbookKinerjaService.findDetailLogbookJamKerjaDokter(idPegawai, idIndikator,
idProduk, tglPelayanan, idJenisPetugas, skor);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));