package com.jasamedika.medifirst2000.dao; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail; @Repository("logbookKinerjaDetailDao") public interface LogbookKinerjaDetailDao extends PagingAndSortingRepository { String strGetWR = "select new Map(lkh.noRec as logbookNoRec," + "lkd.noRec as noRec," + "ikm.id as indikatorId,ikm.namaIndikator as namaIndikator," + "ikm.jenisIndikator as jenisIndikatorId," + "(case when ikm.jenisIndikator = 1 then 'Kuantitas' " + "when ikm.jenisIndikator = 2 then 'Kualitas' " + "when ikm.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator," + "lkd.namaKegiatan as namaKegiatan,lkd.capaian as hasil," + "si.id as satuanId,si.satuanIndikator as satuanIndikator," + "lkd.catatan as catatan," + "lkd.tanggalKegiatan as tglKegiatan," + "to_char(lkd.tanggalKegiatan,'dd-MM-yyyy HH24:MI:SS') as tglKegiatanFormat," + "lkd.statusVerifikasi as isStatusVerifikasi," + "(case when lkd.statusVerifikasi is true then 'Terverifikasi' " + "else 'Belum Verifikasi' end) as statusVerifikasi) " + "from LogbookKinerjaDetail lkd " + "inner join lkd.logbookKinerja lkh " + "inner join lkh.indikatorKinerja ikm " + "inner join ikm.satuanIndikator si " + "where lkh.statusEnabled is true and lkh.statusVerifikasi is true " + "and lkd.statusEnabled is true " + "and ikm.statusEnabled is true and ikm.statusVerifikasi is true " + "and si.statusEnabled is true " + "and lkh.pegawaiId = :pegawaiId " + "and lkh.jabatanId = :jabatanId " + "and lkd.tanggalKegiatan between :start and :end"; String getWRByPegawai = " and lkd.statusVerifikasi = :isVerified"; String getWRByVerifStatus = " and lkd.statusVerifikasi = :isVerified"; String getWRByIndikator = " and lkh.indikatorKinerjaId = :indikatorId"; String sortGetWR = " order by ikm.jenisIndikator, lkd.tanggalKegiatan"; @Query(strGetWR + getWRByVerifStatus + sortGetWR) List> findWorkingRecord(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("start") Date start, @Param("end") Date end, @Param("isVerified") Boolean statusVerif); @Query(strGetWR + getWRByIndikator + sortGetWR) List> findWorkingRecord(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("indikatorId") Integer idIndikator, @Param("start") Date start, @Param("end") Date end); @Query("select new Map(lkd.logbookKinerjaId as logbookId,sum(lkd.capaian) as sumCapaian,ikm.satuanIndikatorId as satuanId) " + "from LogbookKinerjaDetail lkd " + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "where lkd.statusEnabled is true " + "and lkd.statusVerifikasi is true " + "and lk.statusEnabled is true " + "and ikm.statusEnabled is true " + "and lk.noRec = :noRec " + "and ikm.satuanIndikatorId not in (:listSatuanId) " + "group by lkd.logbookKinerjaId, ikm.satuanIndikatorId") List> findSumCapaianByKontrak(@Param("noRec") String noRec, @Param("listSatuanId") List listIdSatuan); @Query("select new Map(lkd.logbookKinerjaId as logbookId,avg(lkd.capaian) as avgCapaian,ikm.satuanIndikatorId as satuanId) " + "from LogbookKinerjaDetail lkd " + "inner join lkd.logbookKinerja lk " + "inner join lk.indikatorKinerja ikm " + "where lkd.statusEnabled is true " + "and lkd.statusVerifikasi is true " + "and lk.statusEnabled is true " + "and ikm.statusEnabled is true " + "and lk.noRec = :noRec " + "and ikm.satuanIndikatorId in (:listSatuanId) " + "group by lkd.logbookKinerjaId, ikm.satuanIndikatorId") List> findAvgCapaianByKontrak(@Param("noRec") String noRec, @Param("listSatuanId") List listIdSatuan); @Query("select new Map(lkd.noRec as noRec,lkd.namaKegiatan as namaKegiatan) " + "from LogbookKinerjaDetail lkd " + "where lkd.logbookKinerjaId = :logbookNoRec " + "and to_char(lkd.tanggalKegiatan,'yyyy-MM') <= to_char(now(),'yyyy-MM') " + "and lkd.statusEnabled is true") List> findUsedWorkingRecordByKontrak(@Param("logbookNoRec") String logbookNoRec); @Query("select new Map(wr.statusVerifikasi as statusVerifikasi," + "count(distinct wr.noRec) as jumlah) " + "from MapPegawaiJabatanToUnitKerja mjs, " + "MapPegawaiJabatanToUnitKerja mja, " + "LogbookKinerjaDetail wr " + "inner join mjs.pegawai pgs " + "inner join mjs.unitKerjaPegawai uks " + "inner join mjs.jabatan as jbs " + "inner join mja.jabatan jba " + "inner join wr.logbookKinerja kk " + "where mjs.atasanLangsungId = mja.pegawaiId " + "and kk.pegawaiId = pgs.id " + "and kk.pegawaiId = mjs.pegawaiId " + "and kk.jabatanId = jbs.id " + "and kk.jabatanId = mjs.jabatanId " + "and mjs.statusEnabled is true " + "and mja.statusEnabled is true " + "and pgs.statusEnabled is true " + "and kk.statusEnabled is true " + "and kk.statusVerifikasi is true " + "and wr.statusEnabled is true " + "and mja.pegawaiId = :pegawaiId " + "and pgs.kategoryPegawaiId in (:listKategoryPegawaiId) " + "and ((mja.unitKerjaPegawaiId in (:listUnitKerjaId) " + "and jba.levelJabatan = 3 and jbs.levelJabatan in (4,5)) " + "or (mja.unitKerjaPegawaiId in (:listUnitKerjaId) and jba.levelJabatan <> 3 and jbs.levelJabatan = jba.levelJabatan+1) " + "or (mja.unitKerjaPegawaiId not in (:listUnitKerjaId) and jbs.levelJabatan = jba.levelJabatan+1)) " + "and to_char(kk.bulan,'yyyy-MM') = :bulan " + "group by wr.statusVerifikasi " + "order by wr.statusVerifikasi") List> findVerifWorkingRecord(@Param("pegawaiId") Integer idPegawai, @Param("bulan") String bulan, @Param("listKategoryPegawaiId") List listIdKategoryPegawai, @Param("listUnitKerjaId") List listIdUnitKerja); @Query("select new Map(wr.statusVerifikasi as statusVerifikasi," + "count(wr.noRec) as jumlah) " + "from LogbookKinerja kk, " + "LogbookKinerjaDetail wr " + "inner join kk.pegawai pgs " + "where kk.noRec = wr.logbookKinerjaId " + "and kk.statusEnabled is true " + "and kk.statusVerifikasi is true " + "and wr.statusEnabled is true " + "and pgs.statusEnabled is true " + "and to_char(kk.bulan,'yyyy-MM') = :bulan " + "and pgs.id = :pegawaiId " + "and pgs.kategoryPegawaiId in (:listKategoryPegawaiId) " + "group by wr.statusVerifikasi " + "order by wr.statusVerifikasi") List> findVerifWorkingRecord(@Param("pegawaiId") Integer idPegawai, @Param("bulan") String bulan, @Param("listKategoryPegawaiId") List listIdKategoryPegawai); }