salmanoe 8d8b0af40c Update DateUtil.java
Perbaikan kondisi query hanya melibatkan timestamp datatype untuk peningkatan performance
2022-10-17 09:38:08 +07:00

85 lines
4.7 KiB
Java

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.LogbookKinerjaDokter;
@Repository("logbookKinerjaDokterDao")
public interface LogbookKinerjaDokterDao extends PagingAndSortingRepository<LogbookKinerjaDokter, String> {
@Query("select lkd from LogbookKinerjaDokter lkd " + "where lkd.statusEnabled is true "
+ "and to_char(lkd.bulan,'yyyy-MM') = :bulan " + "and lkd.pegawaiId = :pegawaiId "
+ "and lkd.jabatanId = :jabatanId " + "and lkd.indikatorDetailId = :indikatorDetailId")
public LogbookKinerjaDokter findOne(@Param("bulan") String bulan, @Param("pegawaiId") Integer idPegawai,
@Param("jabatanId") Integer idJabatan, @Param("indikatorDetailId") Integer idIndikatorDetail);
String strCpptToDashboard = "select distinct new Map(ikd.id as id,ikd.detailIndikator as detailIndikator,lkd.detailTarget as detailTarget)";
String strVerifCppt = "select new Map(lk.noRec as logbookId," + "lkd.noRec as detailId)";
String strVerifLogbook = "select lkd";
String tblKinerjaDokter = " from LogbookKinerja lk, LogbookKinerjaDokter lkd "
+ "inner join lkd.indikatorDetail ikd "
+ "where to_char(lk.bulan,'yyyy-MM') = to_char(lkd.bulan,'yyyy-MM') " + "and lk.pegawaiId = lkd.pegawaiId "
+ "and lk.jabatanId = lkd.jabatanId " + "and lk.indikatorKinerjaId = ikd.indikatorKinerjaId "
+ "and lk.statusEnabled is true " + "and lk.statusVerifikasi is true";
String whrBulan = " and lk.bulan between :start and :end and lkd.bulan between :start and :end";
String whrPegawai = " and lk.pegawaiId = :pegawaiId";
String whrJabatan = " and lk.jabatanId = :jabatanId";
String whrIndikator = " and lk.indikatorKinerjaId = :indikatorId";
String whrDetailIndikator = " and lkd.indikatorDetailId = :detailIndikatorId";
String whrLogbook = " and lk.noRec = :noRec";
@Query(strCpptToDashboard + tblKinerjaDokter + whrBulan + whrPegawai + whrJabatan + whrIndikator)
public List<Map<String, Object>> findDetailLogbookDokter(@Param("start") Date start, @Param("end") Date end,
@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan,
@Param("indikatorId") Integer idIndikator);
@Query(strVerifCppt + tblKinerjaDokter + whrBulan + whrPegawai + whrIndikator + whrDetailIndikator)
public Map<String, Object> findDetailKinerjaDokter(@Param("start") Date start, @Param("end") Date end,
@Param("pegawaiId") Integer idPegawai, @Param("indikatorId") Integer idIndikator,
@Param("detailIndikatorId") Integer idDetailIndikator);
@Query(strVerifLogbook + tblKinerjaDokter + whrLogbook)
public List<LogbookKinerjaDokter> findDetailKinerjaDokter(@Param("noRec") String noRec);
@Query("select new Map(pg.id as pegawaiId," + "jb.id as jabatanId," + "ikd.id as indikatorId,"
+ "lkd.detailTarget as target," + "to_char(lkd.bulan,'yyyy-MM') as periode,"
+ "lkd.tglHitung as tglHitung) " + "from LogbookKinerjaDokter lkd " + "inner join lkd.pegawai pg "
+ "inner join lkd.jabatan jb " + "inner join lkd.indikatorDetail ikd "
+ "inner join ikd.indikatorKinerja ikm " + "where pg.statusEnabled is true "
+ "and jb.statusEnabled is true " + "and ikd.statusEnabled is true " + "and ikm.statusEnabled is true "
+ "and ikm.statusVerifikasi is true " + "and to_char(lkd.bulan,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "and ikd.id in (:listIndikatorId) " + "order by pg.namaLengkap, lkd.tglHitung desc")
public List<Map<String, Object>> getLastTargetLayananLuarJamKerja(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir, @Param("listIndikatorId") List<Integer> listIdIndikator);
@Query("select lkd from LogbookKinerjaDokter lkd " + "where lkd.statusEnabled is true "
+ "and to_char(lkd.bulan,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "order by lkd.pegawaiId, lkd.jabatanId, lkd.indikatorDetailId, lkd.bulan, lkd.tglHitung desc")
public List<LogbookKinerjaDokter> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir);
@Query("select distinct new Map (pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb "
+ "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true "
+ "and pg.kategoryPegawaiId in (:listKategoryPegawaiId) " + "and jb.kelompokJabatanId in (3,4)")
public List<Map<String, Object>> findPegawaiByListKategori(
@Param("listKategoryPegawaiId") List<Integer> listIdKategoriPegawai);
}