Penerapan kolom tag penanda presensi masuk atau keluar/pulang pada service histori presensi harian
107 lines
6.5 KiB
Java
107 lines
6.5 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.Habsen;
|
|
|
|
@Repository
|
|
public interface HabsenDao extends PagingAndSortingRepository<Habsen, Integer> {
|
|
|
|
@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<Habsen> 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<Date> 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<String, Object> 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<String, Object> 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<Map<String, Object>> 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<Integer> 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<Integer> 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<Map<String, Object>> 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<Map<String, Object>> getDetailPresensi(@Param("listTrNo") List<Integer> 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<Map<String, Object>> getDataHabsenPeriodik(@Param("tglAwal") String tglAwal,
|
|
@Param("tglAkhir") String tglAkhir);
|
|
|
|
@Query(strQryHabsen + perPresensi + pegPresensi)
|
|
List<Map<String, Object>> 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<Map<String, Object>> getKuantitasCapaianHariKerja(@Param("idPegawai") Integer idPegawai,
|
|
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
|
|
|
|
}
|