105 lines
6.7 KiB
Java
105 lines
6.7 KiB
Java
package com.jasamedika.medifirst2000.dao;
|
|
|
|
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail;
|
|
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 java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Repository("logbookKinerjaDetailDao")
|
|
public interface LogbookKinerjaDetailDao extends PagingAndSortingRepository<LogbookKinerjaDetail, String> {
|
|
|
|
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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> findSumCapaianByKontrak(@Param("noRec") String noRec,
|
|
@Param("listSatuanId") List<Integer> 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<Map<String, Object>> findAvgCapaianByKontrak(@Param("noRec") String noRec,
|
|
@Param("listSatuanId") List<Integer> 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<Map<String, Object>> 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<Map<String, Object>> findVerifWorkingRecord(@Param("pegawaiId") Integer idPegawai,
|
|
@Param("bulan") String bulan, @Param("listKategoryPegawaiId") List<Integer> listIdKategoryPegawai,
|
|
@Param("listUnitKerjaId") List<Integer> 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<Map<String, Object>> findVerifWorkingRecord(@Param("pegawaiId") Integer idPegawai,
|
|
@Param("bulan") String bulan, @Param("listKategoryPegawaiId") List<Integer> listIdKategoryPegawai);
|
|
|
|
}
|