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.Habsen; @Repository public interface HabsenDao extends PagingAndSortingRepository { @Query("select max(h.tr_no) from Habsen h") Integer getMaxId(); @Query("select h from Habsen h where h.empl_code =:empl_code and h.loc_code =:loc_code") List getByLocCode(@Param("empl_code") String empl_code, @Param("loc_code") String loc_code); @Query("select absen.tr_time from Habsen absen where to_char(absen.tr_date,'yyyy-MM-dd')=:tanggal and absen.empl_code=:idFinger") List countAbsenTglCutiBersama(@Param("tanggal") String tanggal, @Param("idFinger") String idFinger); @Query("select new Map(" + "pg.namaLengkap as namaLengkap," + "pg.idFinger as idFinger," + "sk.kodeExternal || ' - ' || sk.namaExternal || ' (' || sk.jamMasuk || ' - ' || sk.jamPulang || ')' as jadwal, " + "to_char(now(), 'yyyy-MM-dd') as tanggal, " + "to_char(now(), 'HH24:MI:SS') as jam) " + "from PegawaiJadwalKerja jk " + "left join jk.pegawai pg " + "left join jk.tanggal kd " + "left join jk.shift sk " + "where pg.id = :idPegawai " + "and to_char(kd.tanggal, 'yyyy-MM-dd') = :tanggalJadwal") Map getJadwalPegawai(@Param("idPegawai") Integer idPegawai, @Param("tanggalJadwal") String tanggalJadwal); @Query("select new Map(" + "pg.namaLengkap as namaLengkap," + "pg.idFinger as idFinger, " + "to_char(now(), 'yyyy-MM-dd') as tanggal, " + "to_char(now(), 'HH24:MI:SS') as jam) " + "from Pegawai pg " + "where pg.id = :idPegawai") Map getPegawai(@Param("idPegawai") Integer idPegawai); @Query("select sk.kodeExternal || ' - ' || sk.namaExternal || ' (' || sk.jamMasuk || ' - ' || sk.jamPulang || ')' " + "from PegawaiJadwalKerja jk " + "left join jk.tanggal kd " + "left join jk.shift sk " + "where jk.pegawaiId = :idPegawai " + "and to_char(kd.tanggal, 'yyyy-MM-dd') = :tanggalJadwal") String getPegawaiJadwal(@Param("idPegawai") Integer idPegawai, @Param("tanggalJadwal") String tanggalJadwal); @Query("select new Map(to_char(hb.tr_time, 'HH24:MI:SS') as tr_time," + "hb.processtatus as processtatus,hb.ip_addr as ip_addr," + "hb.tag as tag," + "(case when hb.tag = 1 then 'Presensi masuk' " + "when hb.tag = 0 then 'Presensi keluar/pulang' end) as tagDesc) " + "from Habsen hb, Pegawai pg " + "where hb.empl_code = pg.idFinger " + "and pg.id = :idPegawai " + "and to_char(hb.tr_date, 'yyyy-MM-dd') = :tanggalPresensi " + "and hb.loc_code = '99999' " + "and hb.remoteno = 99" + "order by hb.tr_time desc") List> getHistoriPresensi(@Param("idPegawai") Integer idPegawai, @Param("tanggalPresensi") String tanggalPresensi); @Query("select coalesce(hb.processtatus,0) " + "from Pegawai pg, Habsen hb " + "where pg.idFinger = hb.empl_code " + "and pg.id = :id and to_char(hb.tr_date,'yyyy-MM-dd') = :tgl " + "and hb.loc_code = '99999' " + "and hb.remoteno = 99" + "order by hb.tr_time asc") List getWfhStatusByApp(@Param("id") Integer id, @Param("tgl") String tgl); @Query("select coalesce(hb.processtatus,0) " + "from Pegawai pg, Habsen hb " + "where pg.idFinger = hb.empl_code " + "and pg.id = :id and to_char(hb.tr_date,'yyyy-MM-dd') = :tgl " + "and hb.loc_code <> '99999' " + "and hb.remoteno <> 99" + "order by hb.tr_time asc") List getWfhStatus(@Param("id") Integer id, @Param("tgl") String tgl); @Query("select distinct new Map(" + "uk.id as idUnitKerja,uk.name as unitKerja," + "peg.id as idPegawai,peg.namaLengkap as namaPegawai," + "count(distinct hab.tr_date) as jumlah," + "(case when hab.processtatus = 1 then 'WFH' else 'WFO' end) as status) " + "from MapPegawaiJabatanToUnitKerja mapp, Habsen hab " + "inner join mapp.pegawai peg " + "left join mapp.unitKerjaPegawai uk " + "where hab.empl_code = peg.idFinger " + "and mapp.statusEnabled is true " + "and peg.statusEnabled is true " + "and hab.loc_code = '99999' " + "and hab.remoteno = '99' " + "and to_char(hab.tr_date,'yyyy-MM') = :bulan " + "group by uk.name,peg.id,peg.namaLengkap,hab.processtatus " + "order by uk.name, peg.namaLengkap") List> getRekapStatusWFH(@Param("bulan") String bulan); @Query("select new Map(concat(absen.empl_code,'_',to_char(absen.tr_date,'yyyy-MM-dd'),'_',to_char(absen.tr_time,'HH24.MI.ss'),'#',absen.tr_no,'.jpg') as filePath," + "concat(to_char(absen.tr_date,'dd/MM/yyyy'),' ',to_char(absen.tr_time,'HH24:MI:ss')) as tanggal," + "to_char(absen.tr_date,'yyyyMM') as trdate," + "absen.latitude as lintang,absen.longitude as bujur," + "absen.akurasi as akurasi,absen.lokasi as lokasi) " + "from Habsen absen " + "where absen.tr_no in (:listTrNo) " + "and absen.loc_code = '99999' " + "and absen.remoteno = 99") List> getDetailPresensi(@Param("listTrNo") List listTrNo); String strQryHabsen = "select new Map(pg.id as id,pg.namaLengkap as namaLengkap," + "hb.tr_no as tr_no,to_char(hb.tr_date,'dd-MM-yyyy') as tr_date,to_char(hb.tr_time,'HH24:MI:ss') as tr_time," + "hb.processtatus as processtatus,hb.ip_addr as ip_addr," + "hb.latitude as latitude,hb.longitude as longitude,hb.akurasi as akurasi,hb.lokasi as lokasi) " + "from Habsen hb, Pegawai pg " + "where hb.empl_code = pg.idFinger " + "and pg.statusEnabled is true"; String perPresensi = " and to_char(hb.tr_date,'yyyy-MM-dd HH24:MI:ss') between :tglAwal and :tglAkhir"; String pegPresensi = " and pg.id = :idPegawai"; @Query(strQryHabsen + perPresensi) List> getDataHabsenPeriodik(@Param("tglAwal") String tglAwal, @Param("tglAkhir") String tglAkhir); @Query(strQryHabsen + perPresensi + pegPresensi) List> getDataHabsenPegawaiPeriodik(@Param("tglAwal") String tglAwal, @Param("tglAkhir") String tglAkhir, @Param("idPegawai") Integer idPegawai); @Query("select new Map(to_char(absen.tr_date, 'yyyy-MM-dd') as tr_date, absen.tr_time as tr_time) " + "from Habsen absen, Pegawai pegawai " + "where pegawai.idFinger = absen.empl_code " + "and absen.tr_date between :tglAwal and :tglAkhir " + "and pegawai.id = :idPegawai") List> getKuantitasCapaianHariKerja(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); }