From 77f12d97adcc9533c8b59c51a3632616ce0dcf37 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 4 Oct 2021 20:25:24 +0700 Subject: [PATCH] - perbaikan akses monitoring presensi karena rangkap jabatan di unit kerja yang sama - refractoring service load data monitoring presensi untuk verifikasi indikator-indikator terkair kehadiran - perbaikan informasi tanggal di detail presensi pegawai - penambahan kolom status foto, lokasi, dan verifikasi monitoring presensi pegawai --- .../dao/MapPegawaiJabatanToUnitKerjaDao.java | 4 +- .../service/MonitoringAbsenService.java | 10 +- .../impl/AbsensiPegawaiServiceImpl.java | 2 +- .../impl/MonitoringAbsenServiceImpl.java | 1286 +++++++++-------- .../service/impl/ReportServiceImpl.java | 2 +- .../entities/MonitoringAbsen.java | 93 +- .../medifirst2000/vo/MonitoringAbsenVO.java | 44 + .../controller/SdmController.java | 34 +- 8 files changed, 803 insertions(+), 672 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 785d86b5..e092a056 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -267,7 +267,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository getListIdJabatanByPegawaiUnitKerja(@Param("idPegawai") Integer idPegawai, @Param("idUnitKerja") Integer idUnitKerja); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MonitoringAbsenService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MonitoringAbsenService.java index d046643f..86ac5f8f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MonitoringAbsenService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/MonitoringAbsenService.java @@ -17,11 +17,6 @@ public interface MonitoringAbsenService { List> findKehadiran(Integer idPegawai, String startDate, String endDate); - Map findKehadiranByRuangan(Integer ruanganId, String startDate, String endDate); - - Map findKehadiranByRuangan(Integer unitKerjaId, Integer subUnitKerjaId, String startDate, - String endDate); - Map saveMonitoring(MonitoringAbsenCustomVO vo); Map saveMonitoringVerifikasiSDM(MonitoringAbsenCustomVO vo); @@ -32,10 +27,11 @@ public interface MonitoringAbsenService { Map findKehadiranPerPegawai(Integer idPegawai, String startDate, String endDate); - Map jumlahKehadiran(Integer idPegawai, String startDate, String endDate); - Map jumlahKehadiranRev(Integer idPegawai, String startDate, String endDate); + Map jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai, + String startDate, String endDate); + Map rekapitulasiKehadiranByPegawai(Integer idPegawai, String startDate, String endDate); Map rekapitulasiKehadiranByPegawai(Map dataPegawai, String startDate, diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java index f8375943..6fd69ad3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java @@ -305,7 +305,7 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse mapRs.put("location", ""); } else { mapRs.put("imageURLData", ""); - mapRs.put("date", ""); + mapRs.put("date", map.get("tanggal")); mapRs.put("latitude", ""); mapRs.put("longitude", ""); mapRs.put("accuracy", ""); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java index 689053b1..3e5ecda5 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/MonitoringAbsenServiceImpl.java @@ -10,6 +10,7 @@ import java.time.Month; import java.time.ZoneId; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -638,7 +639,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon Map result = new HashMap(); LoginUser loginuser = loginUserConverter.transferVOToModel(vo.getLoginUser(), new LoginUser()); - Pegawai pegawaiLogin = pegawaiConverter.transferVOToModel(vo.getPegawaiLogin(), new Pegawai()); KelompokTransaksi kelompokTransaksi = kelompokTransaksiDao .findById(Integer.parseInt(GetSettingDataFixed("kelompokTransasiLemburAbsensi"))); @@ -738,6 +738,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon monitoringAbsen.setShiftKerja(shiftKerja); monitoringAbsen.setKdProfile((short) 0); monitoringAbsen.setStatusEnabled(Master.STATUS_ENABLE_TRUE); + monitoringAbsen.setIsVerifikasi(Master.STATUS_ENABLE_TRUE); if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { MonitoringAbsen model = monitoringAbsenDao.save(monitoringAbsen); @@ -749,74 +750,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon return result; } - @Override - @Transactional(readOnly = true) - public Map findKehadiranByRuangan(Integer idUnitKerja, String startDate, String endDate) { - Map result = new HashMap(); - List> listkehadiran = new ArrayList>(); - - List listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerja(idUnitKerja); - for (Integer idPegawai : listId) { - Map data = this.jumlahKehadiran(idPegawai, startDate, endDate); - if (CommonUtil.isNotNullOrEmpty(data)) { - if (CommonUtil.isNotNullOrEmpty(data.get("listkehadiran"))) { - listkehadiran.addAll((List>) data.get("listkehadiran")); - } - } - - } - result.put("listkehadiran", listkehadiran); - return result; - } - - @Override - @Transactional(readOnly = true) - public Map findKehadiranByRuangan(Integer unitKerjaId, Integer subUnitKerjaId, String startDate, - String endDate) { - Map result = new HashMap(); - List> listkehadiran = new ArrayList>(); - - List listId = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId, - subUnitKerjaId); - for (Integer idPegawai : listId) { - Map data = this.jumlahKehadiran(idPegawai, startDate, endDate); - if (CommonUtil.isNotNullOrEmpty(data)) { - if (CommonUtil.isNotNullOrEmpty(data.get("listkehadiran"))) { - listkehadiran.addAll((List>) data.get("listkehadiran")); - } - } - - } - result.put("listkehadiran", listkehadiran); - return result; - } - - @Override - @Transactional(readOnly = true) - public Map findKehadiranAllPegawai(String startDate, String endDate) { - Map result = new HashMap(); - List> listkehadiran = new ArrayList>(); - - List listId = pegawaiDao.findPegawaiStatusAktifAndKaryawan(); - for (Integer idPegawai : listId) { - listkehadiran = this.findKehadiran(idPegawai, startDate, endDate); - - } - result.put("listkehadiran", listkehadiran); - return result; - } - - @Override - @Transactional(readOnly = true) - public Map findKehadiranPerPegawai(Integer idPegawai, String startDate, String endDate) { - Map result = new HashMap(); - List> listkehadiran = new ArrayList>(); - listkehadiran = this.findKehadiran(idPegawai, startDate, endDate); - - result.put("listkehadiran", listkehadiran); - return result; - } - @Override @Transactional(readOnly = true) public Map jumlahKehadiranRev(Integer idPegawai, String startDate, String endDate) { @@ -1391,316 +1324,549 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon @Override @Transactional(readOnly = true) - public Map jumlahKehadiran(Integer idPegawai, String startDate, String endDate) { - String idFinger = pegawaiDao.getidFinger(idPegawai); - Map result = new HashMap(); - List> listkehadiran = new ArrayList>(); - Integer harikerja = 0; - Integer mangkir = 0; - Integer izin = 0; - Integer p1 = 0; - Integer pagi = 0; - Integer sore = 0; - Integer malam = 0; - Integer dinasLuar = 0; - Integer cuti = 0; - Integer sakit = 0; - Integer absenTunggal = 0; - Integer jumlahCountTerlambat = 0; - Long jumlahTerlambat = (long) 0; - Integer jumlahCountKelebihanJamKerja = 0; - Long jumlahKelebihanJamKerja = (long) 0; - Integer jumlahCountPulangAwal = 0; - Long jumlahPulangAwal = (long) 0; - Long jumlahJamEfektif = (long) 0; - Long jumlahJamLemburUnitKerja = (long) 0; - Long jumlahJamLemburUnitSdm = (long) 0; - Integer hariKerja = 0; - Date tglRilisFiturPresensi = convertToDateViaInstant(LocalDateTime.of(2020, Month.MAY, 04, 00, 00, 00)); - DateFormat sdf = new SimpleDateFormat("HH.mm"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - DateFormat stf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Map pegawaiMonitoring = new HashMap<>(); + public Map jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai, + String startDate, String endDate) { + Map result = new HashMap<>(); + List> listRs = new ArrayList>(); - if (CommonUtil.isNotNullOrEmpty(idFinger)) { - pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger); + List listIdPegawai = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(idPegawai)) { + listIdPegawai.add(idPegawai); + } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(subUnitKerjaId)) { + listIdPegawai = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId, + subUnitKerjaId); + } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(subUnitKerjaId)) { + listIdPegawai = monitoringAbsenDao.findPegawaiaAktifDanKaryawanByUnitKerja(unitKerjaId); } - List> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate); - for (Map data : listKomponenJadwal) { - String alasanCuti = ""; - // put everything data needs - if (CommonUtil.isNotNullOrEmpty(pegawaiMonitoring)) { - data.putAll(pegawaiMonitoring); - } - Map listJadwal = monitoringAbsenDao.findJadwalPegawai(idFinger, - df.format((Date) data.get("tanggal"))); - if (CommonUtil.isNotNullOrEmpty(listJadwal)) { - data.putAll(listJadwal); - if (listJadwal.get("kodeShift").equals("TL")) { - dinasLuar++; - } - if (listJadwal.get("kodeShift").toString().charAt(0) == 'C') { - cuti++; - } - } - Date tanggal = (Date) data.get("tanggal"); - String jamMasuk = (String) data.get("jamMasuk"); - String jamPulang = (String) data.get("jamPulang"); - String tgl = df.format(tanggal); - data.put("dates", tanggal.getTime()); - data.put("idPegawai", idPegawai); - data.put("tanggal", data.get("tgl").toString() + "-" + data.get("bulan").toString() + "-" - + data.get("tahun").toString()); + for (Integer id : listIdPegawai) { + String idFinger = pegawaiDao.getidFinger(id); + Map rsMap = new HashMap(); + List> listkehadiran = new ArrayList>(); + Integer harikerja = 0; + Integer mangkir = 0; + Integer izin = 0; + Integer p1 = 0; + Integer pagi = 0; + Integer sore = 0; + Integer malam = 0; + Integer dinasLuar = 0; + Integer cuti = 0; + Integer sakit = 0; + Integer absenTunggal = 0; + Integer jumlahCountTerlambat = 0; + Long jumlahTerlambat = (long) 0; + Integer jumlahCountKelebihanJamKerja = 0; + Long jumlahKelebihanJamKerja = (long) 0; + Integer jumlahCountPulangAwal = 0; + Long jumlahPulangAwal = (long) 0; + Long jumlahJamEfektif = (long) 0; + Long jumlahJamLemburUnitKerja = (long) 0; + Long jumlahJamLemburUnitSdm = (long) 0; + Integer hariKerja = 0; + Date tglRilisFiturPresensi = convertToDateViaInstant(LocalDateTime.of(2020, Month.MAY, 04, 00, 00, 00)); + DateFormat sdf = new SimpleDateFormat("HH.mm"); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat stf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Map pegawaiMonitoring = new HashMap<>(); - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) { - if (((String) data.get("namaShift")).equals("Izin")) { - izin++; + if (CommonUtil.isNotNullOrEmpty(idFinger)) { + pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger); + } + List> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate); + for (Map data : listKomponenJadwal) { + String alasanCuti = ""; + // put everything data needs + if (CommonUtil.isNotNullOrEmpty(pegawaiMonitoring)) { + data.putAll(pegawaiMonitoring); } - if (((String) data.get("namaShift")).equals("Sakit")) { - sakit++; - } - if (!((String) data.get("namaShift")).equals("Libur")) { - alasanCuti = this.wfh(idPegawai, tgl, tanggal, tglRilisFiturPresensi); - if (CommonUtil.isNullOrEmpty(alasanCuti)) { - alasanCuti = this.cuti(idPegawai, tgl); + Map listJadwal = monitoringAbsenDao.findJadwalPegawai(idFinger, + df.format((Date) data.get("tanggal"))); + if (CommonUtil.isNotNullOrEmpty(listJadwal)) { + data.putAll(listJadwal); + if (listJadwal.get("kodeShift").equals("TL")) { + dinasLuar++; + } + if (listJadwal.get("kodeShift").toString().charAt(0) == 'C') { + cuti++; } } - } - Date jadwalPulang = null; - Date jadwalMasuk = null; - Date jam_masuk = null; - Date jam_pulang = null; - if (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang)) { - hariKerja++; + Date tanggal = (Date) data.get("tanggal"); + String jamMasuk = (String) data.get("jamMasuk"); + String jamPulang = (String) data.get("jamPulang"); + String tgl = df.format(tanggal); + data.put("dates", tanggal.getTime()); + data.put("idPegawai", id); + data.put("tanggal", data.get("tgl").toString() + "-" + data.get("bulan").toString() + "-" + + data.get("tahun").toString()); + + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) { + if (((String) data.get("namaShift")).equals("Izin")) { + izin++; + } + if (((String) data.get("namaShift")).equals("Sakit")) { + sakit++; + } + if (!((String) data.get("namaShift")).equals("Libur")) { + alasanCuti = this.wfh(id, tgl, tanggal, tglRilisFiturPresensi); + if (CommonUtil.isNullOrEmpty(alasanCuti)) { + alasanCuti = this.cuti(id, tgl); + } + } + } + + Date jadwalPulang = null; + Date jadwalMasuk = null; + Date jam_masuk = null; + Date jam_pulang = null; + if (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang)) { + hariKerja++; + try { + jam_masuk = sdf.parse(jamMasuk); + jam_pulang = sdf.parse(jamPulang); + jadwalPulang = concatenateTime(tanggal, jam_pulang); + jadwalMasuk = concatenateTime(tanggal, jam_masuk); + } catch (ParseException e) { + e.printStackTrace(); + } + } + data.put("jadwalMasuk", jamMasuk); + data.put("jadwalPulang", jamPulang); + data.put("idFinger", idFinger); + + List> listAbsensi = new ArrayList<>(); + if (tanggal.equals(tglRilisFiturPresensi) || tanggal.after(tglRilisFiturPresensi)) { + listAbsensi = indekKinerjaDao.findAbsensiAplikasiPegawai(idFinger, tgl); + } else { + listAbsensi = indekKinerjaDao.findAbsensiPegawai(idFinger, tgl); + } + + if (CommonUtil.isNullOrEmpty(listAbsensi) && CommonUtil.isNotNullOrEmpty(jamMasuk) + && CommonUtil.isNotNullOrEmpty(jamPulang)) { + if (alasanCuti.equals("")) { + mangkir++; + } + } + + // Purge abstaint list caused by multiple fingerprinted + List> listAbsensiFilter = new ArrayList<>(); + Date checkTime1 = null; + Date checkTime2 = null; + Integer batasMultiFingerPrint = Master.MonitoringAbsensi.BATAS_MULTI_FINGERPRINT; try { - jam_masuk = sdf.parse(jamMasuk); - jam_pulang = sdf.parse(jamPulang); - jadwalPulang = concatenateTime(tanggal, jam_pulang); - jadwalMasuk = concatenateTime(tanggal, jam_masuk); + if (CommonUtil.isNotNullOrEmpty(listAbsensi) && listAbsensi.size() != 1) { + // hanya untuk data yang dapat dibandingkan + int i = 0; + do { + int k = 0; + int m = i; + for (int j = m + 1; j < listAbsensi.size(); j++, m++) { + checkTime1 = stf.parse(listAbsensi.get(m).get("time").toString()); + checkTime2 = stf.parse(listAbsensi.get(j).get("time").toString()); + long diff = TimeUnit.MILLISECONDS + .toMinutes(checkTime2.getTime() - checkTime1.getTime()); + if (Math.abs(diff) > batasMultiFingerPrint) { + listAbsensiFilter.add(listAbsensi.get(i)); + i++; + break; + } else if (j == listAbsensi.size() - 1 && Math.abs(diff) < batasMultiFingerPrint) { + listAbsensiFilter.add(listAbsensi.get(j)); + i++; + k++; + break; + } else if (Math.abs(diff) <= batasMultiFingerPrint) { + k++; + } + } + if (i == listAbsensi.size() - 1 && k == 0) { + listAbsensiFilter.add(listAbsensi.get(i)); + i++; + } else if (k != 0) { + i = i + k; + } + } while (i < listAbsensi.size()); + } else { + listAbsensiFilter = listAbsensi; + } } catch (ParseException e) { e.printStackTrace(); } - } - data.put("jadwalMasuk", jamMasuk); - data.put("jadwalPulang", jamPulang); - data.put("idFinger", idFinger); - List> listAbsensi = new ArrayList<>(); - if (tanggal.equals(tglRilisFiturPresensi) || tanggal.after(tglRilisFiturPresensi)) { - listAbsensi = indekKinerjaDao.findAbsensiAplikasiPegawai(idFinger, tgl); - } else { - listAbsensi = indekKinerjaDao.findAbsensiPegawai(idFinger, tgl); - } + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) + && ((((String) data.get("namaShift")).equals("Pagi Malam")) + || (((String) data.get("namaShift")).equals("Non Shift MOD")))) { + try { + List> listAbsensiPagi = new ArrayList<>(); + List> listAbsensiPM = new ArrayList<>(); - if (CommonUtil.isNullOrEmpty(listAbsensi) && CommonUtil.isNotNullOrEmpty(jamMasuk) - && CommonUtil.isNotNullOrEmpty(jamPulang)) { - if (alasanCuti.equals("")) { - mangkir++; - } - } + Map detailShiftPMPagi = new HashMap(); + Map detailShiftPMMalam = new HashMap(); - // Purge abstaint list caused by multiple fingerprinted - List> listAbsensiFilter = new ArrayList<>(); - Date checkTime1 = null; - Date checkTime2 = null; - Integer batasMultiFingerPrint = Master.MonitoringAbsensi.BATAS_MULTI_FINGERPRINT; - try { - if (CommonUtil.isNotNullOrEmpty(listAbsensi) && listAbsensi.size() != 1) { - // hanya untuk data yang dapat dibandingkan - int i = 0; - do { - int k = 0; - int m = i; - for (int j = m + 1; j < listAbsensi.size(); j++, m++) { - checkTime1 = stf.parse(listAbsensi.get(m).get("time").toString()); - checkTime2 = stf.parse(listAbsensi.get(j).get("time").toString()); - long diff = TimeUnit.MILLISECONDS.toMinutes(checkTime2.getTime() - checkTime1.getTime()); - if (Math.abs(diff) > batasMultiFingerPrint) { - listAbsensiFilter.add(listAbsensi.get(i)); - i++; - break; - } else if (j == listAbsensi.size() - 1 && Math.abs(diff) < batasMultiFingerPrint) { - listAbsensiFilter.add(listAbsensi.get(j)); - i++; - k++; - break; - } else if (Math.abs(diff) <= batasMultiFingerPrint) { - k++; + if ((((String) data.get("namaShift")).equals("Pagi Malam"))) { + detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( + Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Pagi", "P"); + detailShiftPMMalam = monitoringAbsenDao.findShiftPMDetail( + Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Malam", "M"); + } else if ((((String) data.get("namaShift")).equals("Non Shift MOD"))) { + if (data.get("namaHari").equals("Senin") || data.get("namaHari").equals("Selasa") + || data.get("namaHari").equals("Rabu") || data.get("namaHari").equals("Kamis")) { + detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( + Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Non Shift", + "SK"); + } else if (data.get("namaHari").equals("Jumat")) { + detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( + Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Non Shift", + "J"); } - } - if (i == listAbsensi.size() - 1 && k == 0) { - listAbsensiFilter.add(listAbsensi.get(i)); - i++; - } else if (k != 0) { - i = i + k; - } - } while (i < listAbsensi.size()); - } else { - listAbsensiFilter = listAbsensi; - } - } catch (ParseException e) { - e.printStackTrace(); - } - - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) - && ((((String) data.get("namaShift")).equals("Pagi Malam")) - || (((String) data.get("namaShift")).equals("Non Shift MOD")))) { - try { - List> listAbsensiPagi = new ArrayList<>(); - List> listAbsensiPM = new ArrayList<>(); - - Map detailShiftPMPagi = new HashMap(); - Map detailShiftPMMalam = new HashMap(); - - if ((((String) data.get("namaShift")).equals("Pagi Malam"))) { - detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( - Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Pagi", "P"); - detailShiftPMMalam = monitoringAbsenDao.findShiftPMDetail( - Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Malam", "M"); - } else if ((((String) data.get("namaShift")).equals("Non Shift MOD"))) { - if (data.get("namaHari").equals("Senin") || data.get("namaHari").equals("Selasa") - || data.get("namaHari").equals("Rabu") || data.get("namaHari").equals("Kamis")) { - detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( - Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Non Shift", "SK"); - } else if (data.get("namaHari").equals("Jumat")) { - detailShiftPMPagi = monitoringAbsenDao.findShiftPMDetail( - Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Non Shift", "J"); - } - detailShiftPMMalam = monitoringAbsenDao.findShiftPMDetail( - Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Malam MOD", "M-MOD"); - } - - String jamPulang1PM = detailShiftPMPagi.get("jamPulang").toString(); - String jamMasuk2PM = detailShiftPMMalam.get("jamMasuk").toString(); - String jamPulang2PM = detailShiftPMMalam.get("jamPulang").toString(); - long waktuIstirahatPagi = (long) detailShiftPMPagi.get("waktuIstirahat"); - long waktuIstirahatMalam = (long) detailShiftPMMalam.get("waktuIstirahat"); - - Date jam_masuk2PM = sdf.parse(jamMasuk2PM); - jam_masuk2PM = concatenateTime(tanggal, jam_masuk2PM); - Date jam_masuk2PMActual = null; - if (CommonUtil.isNotNullOrEmpty(listAbsensiFilter)) { - if (listAbsensiFilter.size() > 1) { - jam_masuk2PMActual = stf - .parse(listAbsensiFilter.get(listAbsensiFilter.size() - 1).get("time").toString()); + detailShiftPMMalam = monitoringAbsenDao.findShiftPMDetail( + Integer.parseInt(data.get("idKelompokShiftKerja").toString()), "Malam MOD", + "M-MOD"); } - if (listAbsensiFilter.size() == 3) { - listAbsensiPagi.add(listAbsensiFilter.get(0)); - listAbsensiPagi.add(listAbsensiFilter.get(1)); - } else if (listAbsensiFilter.size() < 3 && listAbsensiFilter.size() > 1) { - long diff = TimeUnit.MILLISECONDS - .toMinutes(jam_masuk2PM.getTime() - jam_masuk2PMActual.getTime()); - if (Math.abs(diff) < batasMultiFingerPrint) { - for (int j = 0; j < listAbsensiFilter.size() - 1; j++) { - listAbsensiPagi.add(listAbsensiFilter.get(j)); + String jamPulang1PM = detailShiftPMPagi.get("jamPulang").toString(); + String jamMasuk2PM = detailShiftPMMalam.get("jamMasuk").toString(); + String jamPulang2PM = detailShiftPMMalam.get("jamPulang").toString(); + long waktuIstirahatPagi = (long) detailShiftPMPagi.get("waktuIstirahat"); + long waktuIstirahatMalam = (long) detailShiftPMMalam.get("waktuIstirahat"); + + Date jam_masuk2PM = sdf.parse(jamMasuk2PM); + jam_masuk2PM = concatenateTime(tanggal, jam_masuk2PM); + Date jam_masuk2PMActual = null; + if (CommonUtil.isNotNullOrEmpty(listAbsensiFilter)) { + if (listAbsensiFilter.size() > 1) { + jam_masuk2PMActual = stf.parse( + listAbsensiFilter.get(listAbsensiFilter.size() - 1).get("time").toString()); + } + + if (listAbsensiFilter.size() == 3) { + listAbsensiPagi.add(listAbsensiFilter.get(0)); + listAbsensiPagi.add(listAbsensiFilter.get(1)); + } else if (listAbsensiFilter.size() < 3 && listAbsensiFilter.size() > 1) { + long diff = TimeUnit.MILLISECONDS + .toMinutes(jam_masuk2PM.getTime() - jam_masuk2PMActual.getTime()); + if (Math.abs(diff) < batasMultiFingerPrint) { + for (int j = 0; j < listAbsensiFilter.size() - 1; j++) { + listAbsensiPagi.add(listAbsensiFilter.get(j)); + } + } else { + for (int j = 0; j < listAbsensiFilter.size(); j++) { + listAbsensiPagi.add(listAbsensiFilter.get(j)); + } } } else { for (int j = 0; j < listAbsensiFilter.size(); j++) { listAbsensiPagi.add(listAbsensiFilter.get(j)); } } - } else { - for (int j = 0; j < listAbsensiFilter.size(); j++) { - listAbsensiPagi.add(listAbsensiFilter.get(j)); + } + + for (int i = 1; i <= 2; i++) { + Map dataPM = new HashMap<>(data); + + if (i == 1) { + listAbsensiPM = listAbsensiPagi; + jadwalPulang = sdf.parse(jamPulang1PM); + jadwalPulang = concatenateTime(tanggal, jadwalPulang); + dataPM.put("jadwalPulang", sdf.format(jadwalPulang)); + dataPM.put("jamPulang", sdf.format(jadwalPulang)); + dataPM.put("waktuIstirahat", waktuIstirahatPagi); + } else if (i == 2) { + listAbsensiPM = absensiShiftMalam(idFinger, tanggal, data.get("namaShift").toString()); + jadwalPulang = sdf.parse(jamPulang2PM); + Calendar cal = Calendar.getInstance(); + cal.setTime(tanggal); + cal.add(Calendar.DATE, 1); + tanggal = cal.getTime(); + jadwalMasuk = jam_masuk2PM; + jadwalPulang = concatenateTime(tanggal, jadwalPulang); + dataPM.put("jadwalMasuk", sdf.format(jam_masuk2PM)); + dataPM.put("jamMasuk", sdf.format(jam_masuk2PM)); + dataPM.put("jadwalPulang", sdf.format(jadwalPulang)); + dataPM.put("jamPulang", sdf.format(jadwalPulang)); + dataPM.put("waktuIstirahat", waktuIstirahatMalam); } + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) + && (((String) data.get("namaShift")).equals("Libur"))) { + listAbsensiPM = this.yesterdayIsMalam(listAbsensiPM, tanggal, idFinger); + } + int index = listAbsensiPM.size(); + + int count = 0; + Date absensiMasuk = null; + String jamEf = ""; + + Long kelebihanJamKerja = (long) 0; + Long terlambat = (long) 0; + List listTrNo = new ArrayList<>(); + for (Map temp : listAbsensiPM)// jamAbsensi + { + count++; + Date date = (Date) temp.get("date"); + Date time = (Date) temp.get("time"); + Date absensiDate = concatenateTime(date, time); + + if (count == 1) { + listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); + dataPM.put("absensiMasuk", sdf.format(time)); + if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) + && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { + dataPM.put("validMasuk", validate(temp.get("ip_addr").toString(), + Integer.valueOf(temp.get("processtatus").toString()))); + } else { + dataPM.put("validMasuk", "Y"); + } + terlambat = reduceTime(absensiDate, jadwalMasuk); + absensiMasuk = absensiDate; + if (terlambat > Master.MonitoringAbsensi.BATAS_TERLAMBAT) { + jumlahCountTerlambat += 1; + jumlahTerlambat += terlambat; + dataPM.put("terlambat", terlambat); + dataPM.put("telat", terlambat.toString()); + } + } else if (count == index) { + listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); + dataPM.put("absensiPulang", sdf.format(time)); + if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) + && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { + dataPM.put("validPulang", validate(temp.get("ip_addr").toString(), + Integer.valueOf(temp.get("processtatus").toString()))); + } else { + dataPM.put("validPulang", "Y"); + } + kelebihanJamKerja = reduceTime(absensiDate, jadwalPulang); + jumlahKelebihanJamKerja += kelebihanJamKerja; + if (kelebihanJamKerja != 0L) { + jumlahCountKelebihanJamKerja += 1; + } + Map jamEfektif = null; + + if (i == 1) { + jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, + (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi"); + } else if (i == 2) { + jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, + (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam, + "Malam"); + } + + if (CommonUtil.isNotNullOrEmpty(jamEfektif)) { + jamEf = (String) jamEfektif.get("jam_efektif"); + jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif"); + } + + if (((Integer) jamEfektif.get("hariKerja")) != 0) { + harikerja += (Integer) jamEfektif.get("hariKerja"); + p1 += (Integer) jamEfektif.get("p1"); + pagi += (Integer) jamEfektif.get("pagi"); + sore += (Integer) jamEfektif.get("sore"); + malam += (Integer) jamEfektif.get("malam"); + dataPM.putAll(jamEfektif); + } + + if (CommonUtil.isNotNullOrEmpty(jadwalPulang) + && CommonUtil.isNotNullOrEmpty(absensiDate)) { + dataPM.put("pulangAwal", (long) reduceTime(jadwalPulang, absensiDate)); + dataPM.put("pulangCepat", (reduceTime(jadwalPulang, absensiDate)).toString()); + jumlahPulangAwal += reduceTime(jadwalPulang, absensiDate); + if (reduceTime(jadwalPulang, absensiDate) != 0L) { + jumlahCountPulangAwal += 1; + } + } + } + } + if (CommonUtil.isNotNullOrEmpty(listTrNo)) { + dataPM.put("listTrNo", listTrNo); + } + if ((CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang")) + && CommonUtil.isNotNullOrEmpty(dataPM.get("absensiMasuk"))) + && (CommonUtil.isNotNullOrEmpty(jamMasuk) + && CommonUtil.isNotNullOrEmpty(jamPulang))) { + absenTunggal++; + } else if ((CommonUtil.isNotNullOrEmpty(dataPM.get("absensiPulang")) + && CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk"))) + && (CommonUtil.isNotNullOrEmpty(jamMasuk) + && CommonUtil.isNotNullOrEmpty(jamPulang))) { + absenTunggal++; + } + if (CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk"))) { + dataPM.put("absensiMasuk", "-"); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("validMasuk"))) { + dataPM.put("validMasuk", ""); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang"))) { + dataPM.put("absensiPulang", "-"); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("validPulang"))) { + dataPM.put("validPulang", ""); + } + + if (CommonUtil.isNullOrEmpty(dataPM.get("pulangAwal"))) { + dataPM.put("pulangAwal", 0); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("terlambat"))) { + dataPM.put("terlambat", (long) 0); + } + // Ambil data monitoringAbsen + MonitoringAbsen monitoringAbsen = monitoringAbsenDao + .findByIdPegawaiAndTanggalMonitoringAbsen(id, data.get("tanggal").toString()); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { + alasanCuti += monitoringAbsen.getAlasan(); + } + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsFotoSesuai())) { + dataPM.put("isFotoSesuai", monitoringAbsen.getIsFotoSesuai()); + } else { + dataPM.put("isFotoSesuai", false); + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsLokasiSesuai())) { + dataPM.put("isLokasiSesuai", monitoringAbsen.getIsLokasiSesuai()); + } else { + dataPM.put("isLokasiSesuai", false); + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsAtributLengkap())) { + dataPM.put("isAtributLengkap", monitoringAbsen.getIsAtributLengkap()); + } else { + dataPM.put("isAtributLengkap", false); + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsVerifikasi())) { + dataPM.put("isVerifikasi", monitoringAbsen.getIsVerifikasi()); + } else { + dataPM.put("isVerifikasi", false); + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsVerifikasi()) + && monitoringAbsen.getIsVerifikasi()) { + dataPM.put("verifikasi", "V"); + } else { + dataPM.put("verifikasi", "X"); + } + + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasi())) { + dataPM.put("tanggalVerifikasiUnitKerja", + dateFormat.format(monitoringAbsen.getStrukVerifikasi().getTglverifikasi())); + jumlahJamLemburUnitKerja += Long + .parseLong(monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); + dataPM.put("accKelebihanJamKerjaUnitKerja", + monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); + dataPM.put("norecVerifikasiUnitKerja", + monitoringAbsen.getStrukVerifikasi().getNoRec()); + Map pegawaiPenanggungJawab = strukVerifikasiDao + .findStrukVerifikasiByNoRec( + monitoringAbsen.getStrukVerifikasi().getNoRec()); + dataPM.put("penanggungJawab", pegawaiPenanggungJawab); + + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasiSdm())) { + dataPM.put("tglVerifikasiSdm", dateFormat + .format(monitoringAbsen.getStrukVerifikasiSdm().getTglverifikasi())); + jumlahJamLemburUnitSdm = Long + .parseLong(monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); + dataPM.put("accKelebihanJamKerjaSDM", + monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); + dataPM.put("norecVerifikasiSdm", + monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); + Map pegawaiPenanggungJawabSDM = strukVerifikasiDao + .findStrukVerifikasiByNoRec( + monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); + dataPM.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); + } + + } + dataPM.put("jamEfektif", jamEf); + dataPM.put("kelebihanJamKerja", kelebihanJamKerja); + dataPM.put("jumlahTerlambat", jumlahTerlambat.toString()); + dataPM.put("jumlahJamEfektif", jumlahJamEfektif.toString()); + dataPM.put("jumlahPulangAwal", jumlahPulangAwal.toString()); + dataPM.put("alasan", alasanCuti); + listkehadiran.add(dataPM); } + rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60); + rsMap.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja); + } catch (ParseException e) { + e.printStackTrace(); } + } else { + // shift Malam + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) + && (((String) data.get("namaShift")).contains("Malam") + || ((String) data.get("namaShift")).equals("Pagi Sore Malam") + || ((String) data.get("namaShift")).equals("Siang Malam") + || ((String) data.get("namaShift")).equals("Malam Pagi 2") + || ((String) data.get("namaShift")).equals("Malam Pagi") + || ((String) data.get("namaShift")).equals("Malam MOD"))) { + listAbsensiFilter = absensiShiftMalam(idFinger, tanggal, data.get("namaShift").toString()); - for (int i = 1; i <= 2; i++) { - Map dataPM = new HashMap<>(data); + Calendar c = Calendar.getInstance(); + c.setTime(jadwalPulang); + c.add(Calendar.DATE, 1); + jadwalPulang = c.getTime(); + } + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) + && (((String) data.get("namaShift")).equals("Libur"))) { + listAbsensiFilter = this.yesterdayIsMalam(listAbsensiFilter, tanggal, idFinger); + } + int index = listAbsensiFilter.size(); - if (i == 1) { - listAbsensiPM = listAbsensiPagi; - jadwalPulang = sdf.parse(jamPulang1PM); - jadwalPulang = concatenateTime(tanggal, jadwalPulang); - dataPM.put("jadwalPulang", sdf.format(jadwalPulang)); - dataPM.put("jamPulang", sdf.format(jadwalPulang)); - dataPM.put("waktuIstirahat", waktuIstirahatPagi); - } else if (i == 2) { - listAbsensiPM = absensiShiftMalam(idFinger, tanggal, data.get("namaShift").toString()); - jadwalPulang = sdf.parse(jamPulang2PM); - Calendar cal = Calendar.getInstance(); - cal.setTime(tanggal); - cal.add(Calendar.DATE, 1); - tanggal = cal.getTime(); - jadwalMasuk = jam_masuk2PM; - jadwalPulang = concatenateTime(tanggal, jadwalPulang); - dataPM.put("jadwalMasuk", sdf.format(jam_masuk2PM)); - dataPM.put("jamMasuk", sdf.format(jam_masuk2PM)); - dataPM.put("jadwalPulang", sdf.format(jadwalPulang)); - dataPM.put("jamPulang", sdf.format(jadwalPulang)); - dataPM.put("waktuIstirahat", waktuIstirahatMalam); - } - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) - && (((String) data.get("namaShift")).equals("Libur"))) { - listAbsensiPM = this.yesterdayIsMalam(listAbsensiPM, tanggal, idFinger); - } - int index = listAbsensiPM.size(); + int count = 0; + Date absensiMasuk = null; + String jamEf = ""; - int count = 0; - Date absensiMasuk = null; - String jamEf = ""; + Long kelebihanJamKerja = (long) 0; + Long terlambat = (long) 0; + List listTrNo = new ArrayList<>(); + for (Map temp : listAbsensiFilter)// jamAbsensi + { + count++; + Date date = (Date) temp.get("date"); + Date time = (Date) temp.get("time"); + Date absensiDate = concatenateTime(date, time); - Long kelebihanJamKerja = (long) 0; - Long terlambat = (long) 0; - List listTrNo = new ArrayList<>(); - for (Map temp : listAbsensiPM)// jamAbsensi - { - count++; - Date date = (Date) temp.get("date"); - Date time = (Date) temp.get("time"); - Date absensiDate = concatenateTime(date, time); + if (count == 1) { + listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); + data.put("absensiMasuk", sdf.format(time)); + if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) + && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { + data.put("validMasuk", validate(temp.get("ip_addr").toString(), + Integer.valueOf(temp.get("processtatus").toString()))); + } else { + data.put("validMasuk", "Y"); + } + terlambat = reduceTime(absensiDate, jadwalMasuk); + absensiMasuk = absensiDate; + if (terlambat > Master.MonitoringAbsensi.BATAS_TERLAMBAT) { + jumlahCountTerlambat += 1; + jumlahTerlambat += terlambat; + data.put("terlambat", terlambat); + data.put("telat", terlambat.toString()); + } + } else if (count == index) { + listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); + data.put("absensiPulang", sdf.format(time)); + if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) + && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { + data.put("validPulang", validate(temp.get("ip_addr").toString(), + Integer.valueOf(temp.get("processtatus").toString()))); + } else { + data.put("validPulang", "Y"); + } + kelebihanJamKerja = reduceTime(absensiDate, jadwalPulang); + jumlahKelebihanJamKerja += kelebihanJamKerja; + if (kelebihanJamKerja != 0L) { + jumlahCountKelebihanJamKerja += 1; + } + Map jamEfektif = new HashMap<>(); + if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) { + jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, + (Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"), + (String) data.get("namaShift")); + } - if (count == 1) { - listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); - dataPM.put("absensiMasuk", sdf.format(time)); - if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) - && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { - dataPM.put("validMasuk", validate(temp.get("ip_addr").toString(), - Integer.valueOf(temp.get("processtatus").toString()))); - } else { - dataPM.put("validMasuk", "Y"); - } - terlambat = reduceTime(absensiDate, jadwalMasuk); - absensiMasuk = absensiDate; - if (terlambat > Master.MonitoringAbsensi.BATAS_TERLAMBAT) { - jumlahCountTerlambat += 1; - jumlahTerlambat += terlambat; - dataPM.put("terlambat", terlambat); - dataPM.put("telat", terlambat.toString()); - } - } else if (count == index) { - listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); - dataPM.put("absensiPulang", sdf.format(time)); - if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) - && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { - dataPM.put("validPulang", validate(temp.get("ip_addr").toString(), - Integer.valueOf(temp.get("processtatus").toString()))); - } else { - dataPM.put("validPulang", "Y"); - } - kelebihanJamKerja = reduceTime(absensiDate, jadwalPulang); - jumlahKelebihanJamKerja += kelebihanJamKerja; - if (kelebihanJamKerja != 0L) { - jumlahCountKelebihanJamKerja += 1; - } - Map jamEfektif = null; - - if (i == 1) { - jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, - (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi"); - } else if (i == 2) { - jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, - (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam, "Malam"); - } - - if (CommonUtil.isNotNullOrEmpty(jamEfektif)) { - jamEf = (String) jamEfektif.get("jam_efektif"); - jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif"); - } + if (CommonUtil.isNotNullOrEmpty(jamEfektif)) { + jamEf = (String) jamEfektif.get("jam_efektif"); + jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif"); if (((Integer) jamEfektif.get("hariKerja")) != 0) { harikerja += (Integer) jamEfektif.get("hariKerja"); @@ -1708,304 +1874,182 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon pagi += (Integer) jamEfektif.get("pagi"); sore += (Integer) jamEfektif.get("sore"); malam += (Integer) jamEfektif.get("malam"); - dataPM.putAll(jamEfektif); + data.putAll(jamEfektif); } - - if (CommonUtil.isNotNullOrEmpty(jadwalPulang) - && CommonUtil.isNotNullOrEmpty(absensiDate)) { - dataPM.put("pulangAwal", (long) reduceTime(jadwalPulang, absensiDate)); - dataPM.put("pulangCepat", (reduceTime(jadwalPulang, absensiDate)).toString()); - jumlahPulangAwal += reduceTime(jadwalPulang, absensiDate); - if (reduceTime(jadwalPulang, absensiDate) != 0L) { - jumlahCountPulangAwal += 1; - } + } + if (CommonUtil.isNotNullOrEmpty(jadwalPulang) && CommonUtil.isNotNullOrEmpty(absensiDate)) { + data.put("pulangAwal", (long) reduceTime(jadwalPulang, absensiDate)); + data.put("pulangCepat", (reduceTime(jadwalPulang, absensiDate)).toString()); + jumlahPulangAwal += reduceTime(jadwalPulang, absensiDate); + if (reduceTime(jadwalPulang, absensiDate) != 0L) { + jumlahCountPulangAwal += 1; } } } - if (CommonUtil.isNotNullOrEmpty(listTrNo)) { - dataPM.put("listTrNo", listTrNo); - } - if ((CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang")) - && CommonUtil.isNotNullOrEmpty(dataPM.get("absensiMasuk"))) - && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { - absenTunggal++; - } else if ((CommonUtil.isNotNullOrEmpty(dataPM.get("absensiPulang")) - && CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk"))) - && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { - absenTunggal++; - } - if (CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk"))) { - dataPM.put("absensiMasuk", "-"); - } - if (CommonUtil.isNullOrEmpty(dataPM.get("validMasuk"))) { - dataPM.put("validMasuk", ""); - } - if (CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang"))) { - dataPM.put("absensiPulang", "-"); - } - if (CommonUtil.isNullOrEmpty(dataPM.get("validPulang"))) { - dataPM.put("validPulang", ""); - } + } + if (CommonUtil.isNotNullOrEmpty(listTrNo)) { + data.put("listTrNo", listTrNo); + } + if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) + && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) + && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { + absenTunggal++; + } else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) + && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) + && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { + absenTunggal++; + } + if (CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) { + data.put("absensiMasuk", "-"); + } + if (CommonUtil.isNullOrEmpty(data.get("validMasuk"))) { + data.put("validMasuk", ""); + } + if (CommonUtil.isNullOrEmpty(data.get("absensiPulang"))) { + data.put("absensiPulang", "-"); + } + if (CommonUtil.isNullOrEmpty(data.get("validPulang"))) { + data.put("validPulang", ""); + } - if (CommonUtil.isNullOrEmpty(dataPM.get("pulangAwal"))) { - dataPM.put("pulangAwal", 0); - } - if (CommonUtil.isNullOrEmpty(dataPM.get("terlambat"))) { - dataPM.put("terlambat", (long) 0); - } - // Ambil data monitoringAbsen - MonitoringAbsen monitoringAbsen = monitoringAbsenDao - .findByIdPegawaiAndTanggalMonitoringAbsen(idPegawai, data.get("tanggal").toString()); - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { + if (CommonUtil.isNullOrEmpty(data.get("pulangAwal"))) { + data.put("pulangAwal", 0); + } + if (CommonUtil.isNullOrEmpty(data.get("terlambat"))) { + data.put("terlambat", (long) 0); + } + // Ambil data monitoringAbsen + MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen(id, + data.get("tanggal").toString()); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { + if (CommonUtil.isNullOrEmpty(alasanCuti)) { alasanCuti += monitoringAbsen.getAlasan(); } - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasi())) { - dataPM.put("tanggalVerifikasiUnitKerja", - dateFormat.format(monitoringAbsen.getStrukVerifikasi().getTglverifikasi())); - jumlahJamLemburUnitKerja += Long - .parseLong(monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); - dataPM.put("accKelebihanJamKerjaUnitKerja", - monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); - dataPM.put("norecVerifikasiUnitKerja", monitoringAbsen.getStrukVerifikasi().getNoRec()); - Map pegawaiPenanggungJawab = strukVerifikasiDao - .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasi().getNoRec()); - dataPM.put("penanggungJawab", pegawaiPenanggungJawab); - - } - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasiSdm())) { - dataPM.put("tglVerifikasiSdm", - dateFormat.format(monitoringAbsen.getStrukVerifikasiSdm().getTglverifikasi())); - jumlahJamLemburUnitSdm = Long - .parseLong(monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); - dataPM.put("accKelebihanJamKerjaSDM", - monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); - dataPM.put("norecVerifikasiSdm", monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); - Map pegawaiPenanggungJawabSDM = strukVerifikasiDao - .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); - dataPM.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); - } - } - dataPM.put("jamEfektif", jamEf); - dataPM.put("kelebihanJamKerja", kelebihanJamKerja); - dataPM.put("jumlahTerlambat", jumlahTerlambat.toString()); - dataPM.put("jumlahJamEfektif", jumlahJamEfektif.toString()); - dataPM.put("jumlahPulangAwal", jumlahPulangAwal.toString()); - dataPM.put("alasan", alasanCuti); - listkehadiran.add(dataPM); - } - result.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60); - result.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja); - } catch (ParseException e) { - e.printStackTrace(); - } - } else { - // shift Malam - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) - && (((String) data.get("namaShift")).contains("Malam") - || ((String) data.get("namaShift")).equals("Pagi Sore Malam") - || ((String) data.get("namaShift")).equals("Siang Malam") - || ((String) data.get("namaShift")).equals("Malam Pagi 2") - || ((String) data.get("namaShift")).equals("Malam Pagi") - || ((String) data.get("namaShift")).equals("Malam MOD"))) { - listAbsensiFilter = absensiShiftMalam(idFinger, tanggal, data.get("namaShift").toString()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Calendar c = Calendar.getInstance(); - c.setTime(jadwalPulang); - c.add(Calendar.DATE, 1); - jadwalPulang = c.getTime(); - } - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) - && (((String) data.get("namaShift")).equals("Libur"))) { - listAbsensiFilter = this.yesterdayIsMalam(listAbsensiFilter, tanggal, idFinger); - } - int index = listAbsensiFilter.size(); - - int count = 0; - Date absensiMasuk = null; - String jamEf = ""; - - Long kelebihanJamKerja = (long) 0; - Long terlambat = (long) 0; - List listTrNo = new ArrayList<>(); - for (Map temp : listAbsensiFilter)// jamAbsensi - { - count++; - Date date = (Date) temp.get("date"); - Date time = (Date) temp.get("time"); - Date absensiDate = concatenateTime(date, time); - - if (count == 1) { - listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); - data.put("absensiMasuk", sdf.format(time)); - if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) - && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { - data.put("validMasuk", validate(temp.get("ip_addr").toString(), - Integer.valueOf(temp.get("processtatus").toString()))); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsFotoSesuai())) { + data.put("isFotoSesuai", monitoringAbsen.getIsFotoSesuai()); } else { - data.put("validMasuk", "Y"); + data.put("isFotoSesuai", false); } - terlambat = reduceTime(absensiDate, jadwalMasuk); - absensiMasuk = absensiDate; - if (terlambat > Master.MonitoringAbsensi.BATAS_TERLAMBAT) { - jumlahCountTerlambat += 1; - jumlahTerlambat += terlambat; - data.put("terlambat", terlambat); - data.put("telat", terlambat.toString()); - } - } else if (count == index) { - listTrNo.add(Integer.parseInt(temp.get("tr_no").toString())); - data.put("absensiPulang", sdf.format(time)); - if (CommonUtil.isNotNullOrEmpty(temp.get("ip_addr")) - && CommonUtil.isNotNullOrEmpty(temp.get("processtatus"))) { - data.put("validPulang", validate(temp.get("ip_addr").toString(), - Integer.valueOf(temp.get("processtatus").toString()))); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsLokasiSesuai())) { + data.put("isLokasiSesuai", monitoringAbsen.getIsLokasiSesuai()); } else { - data.put("validPulang", "Y"); + data.put("isLokasiSesuai", false); } - kelebihanJamKerja = reduceTime(absensiDate, jadwalPulang); - jumlahKelebihanJamKerja += kelebihanJamKerja; - if (kelebihanJamKerja != 0L) { - jumlahCountKelebihanJamKerja += 1; + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsAtributLengkap())) { + data.put("isAtributLengkap", monitoringAbsen.getIsAtributLengkap()); + } else { + data.put("isAtributLengkap", false); } - Map jamEfektif = new HashMap<>(); - if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) { - jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, - (Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"), - (String) data.get("namaShift")); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsVerifikasi())) { + data.put("isVerifikasi", monitoringAbsen.getIsVerifikasi()); + } else { + data.put("isVerifikasi", false); + } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getIsVerifikasi()) + && monitoringAbsen.getIsVerifikasi()) { + data.put("verifikasi", "V"); + } else { + data.put("verifikasi", "X"); } - if (CommonUtil.isNotNullOrEmpty(jamEfektif)) { - jamEf = (String) jamEfektif.get("jam_efektif"); - jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif"); + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasi())) { + data.put("tanggalVerifikasiUnitKerja", + dateFormat.format(monitoringAbsen.getStrukVerifikasi().getTglverifikasi())); + jumlahJamLemburUnitKerja += Long + .parseLong(monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); + data.put("accKelebihanJamKerjaUnitKerja", + monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); + data.put("norecVerifikasiUnitKerja", monitoringAbsen.getStrukVerifikasi().getNoRec()); + Map pegawaiPenanggungJawab = strukVerifikasiDao + .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasi().getNoRec()); + data.put("penanggungJawab", pegawaiPenanggungJawab); - if (((Integer) jamEfektif.get("hariKerja")) != 0) { - harikerja += (Integer) jamEfektif.get("hariKerja"); - p1 += (Integer) jamEfektif.get("p1"); - pagi += (Integer) jamEfektif.get("pagi"); - sore += (Integer) jamEfektif.get("sore"); - malam += (Integer) jamEfektif.get("malam"); - data.putAll(jamEfektif); - } } - if (CommonUtil.isNotNullOrEmpty(jadwalPulang) && CommonUtil.isNotNullOrEmpty(absensiDate)) { - data.put("pulangAwal", (long) reduceTime(jadwalPulang, absensiDate)); - data.put("pulangCepat", (reduceTime(jadwalPulang, absensiDate)).toString()); - jumlahPulangAwal += reduceTime(jadwalPulang, absensiDate); - if (reduceTime(jadwalPulang, absensiDate) != 0L) { - jumlahCountPulangAwal += 1; - } + if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasiSdm())) { + data.put("tglVerifikasiSdm", + dateFormat.format(monitoringAbsen.getStrukVerifikasiSdm().getTglverifikasi())); + jumlahJamLemburUnitSdm = Long + .parseLong(monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); + data.put("accKelebihanJamKerjaSDM", + monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); + data.put("norecVerifikasiSdm", monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); + Map pegawaiPenanggungJawabSDM = strukVerifikasiDao + .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); + data.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); } - } - } - if (CommonUtil.isNotNullOrEmpty(listTrNo)) { - data.put("listTrNo", listTrNo); - } - if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) - && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) - && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { - absenTunggal++; - } else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) - && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) - && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) { - absenTunggal++; - } - if (CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) { - data.put("absensiMasuk", "-"); - } - if (CommonUtil.isNullOrEmpty(data.get("validMasuk"))) { - data.put("validMasuk", ""); - } - if (CommonUtil.isNullOrEmpty(data.get("absensiPulang"))) { - data.put("absensiPulang", "-"); - } - if (CommonUtil.isNullOrEmpty(data.get("validPulang"))) { - data.put("validPulang", ""); - } - - if (CommonUtil.isNullOrEmpty(data.get("pulangAwal"))) { - data.put("pulangAwal", 0); - } - if (CommonUtil.isNullOrEmpty(data.get("terlambat"))) { - data.put("terlambat", (long) 0); - } - // Ambil data monitoringAbsen - MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen(idPegawai, - data.get("tanggal").toString()); - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { - if (CommonUtil.isNullOrEmpty(alasanCuti)) { - alasanCuti += monitoringAbsen.getAlasan(); - } - } - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasi())) { - data.put("tanggalVerifikasiUnitKerja", - dateFormat.format(monitoringAbsen.getStrukVerifikasi().getTglverifikasi())); - jumlahJamLemburUnitKerja += Long - .parseLong(monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); - data.put("accKelebihanJamKerjaUnitKerja", - monitoringAbsen.getStrukVerifikasi().getKeteranganlainnya()); - data.put("norecVerifikasiUnitKerja", monitoringAbsen.getStrukVerifikasi().getNoRec()); - Map pegawaiPenanggungJawab = strukVerifikasiDao - .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasi().getNoRec()); - data.put("penanggungJawab", pegawaiPenanggungJawab); } - if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getStrukVerifikasiSdm())) { - data.put("tglVerifikasiSdm", - dateFormat.format(monitoringAbsen.getStrukVerifikasiSdm().getTglverifikasi())); - jumlahJamLemburUnitSdm = Long - .parseLong(monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); - data.put("accKelebihanJamKerjaSDM", - monitoringAbsen.getStrukVerifikasiSdm().getKeteranganlainnya()); - data.put("norecVerifikasiSdm", monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); - Map pegawaiPenanggungJawabSDM = strukVerifikasiDao - .findStrukVerifikasiByNoRec(monitoringAbsen.getStrukVerifikasiSdm().getNoRec()); - data.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); - } - + data.put("jamEfektif", jamEf); + data.put("kelebihanJamKerja", kelebihanJamKerja); + rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja); + rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60); + rsMap.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja); + data.put("jumlahTerlambat", jumlahTerlambat.toString()); + data.put("jumlahJamEfektif", jumlahJamEfektif.toString()); + data.put("jumlahPulangAwal", jumlahPulangAwal.toString()); + data.put("alasan", alasanCuti); + listkehadiran.add(data); } - data.put("jamEfektif", jamEf); - data.put("kelebihanJamKerja", kelebihanJamKerja); - result.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja); - result.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60); - result.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja); - data.put("jumlahTerlambat", jumlahTerlambat.toString()); - data.put("jumlahJamEfektif", jumlahJamEfektif.toString()); - data.put("jumlahPulangAwal", jumlahPulangAwal.toString()); - data.put("alasan", alasanCuti); - listkehadiran.add(data); } + for (Map mapKehadiran : listkehadiran) { + mapKehadiran.put("absenTunggal", absenTunggal); + mapKehadiran.put("p1", p1); + mapKehadiran.put("pagi", pagi); + mapKehadiran.put("sore", sore); + mapKehadiran.put("malam", malam); + mapKehadiran.put("izin", izin); + mapKehadiran.put("dinasLuar", dinasLuar); + mapKehadiran.put("cuti", cuti); + mapKehadiran.put("sakit", sakit); + } + rsMap.put("jumlahJamLemburSdm", jumlahJamLemburUnitSdm); + rsMap.put("jumlahJamLemburUnitKerja", jumlahJamLemburUnitKerja); + rsMap.put("jumlahCountTerlambat", jumlahCountTerlambat); + rsMap.put("jumlahTerlambat", jumlahTerlambat / 60); + rsMap.put("menitTerlambat", jumlahTerlambat); + rsMap.put("jumlahJamEfektif", jumlahJamEfektif / 60); + rsMap.put("jumlahPulangAwal", jumlahPulangAwal / 60); + rsMap.put("menitPulangAwal", jumlahPulangAwal); + rsMap.put("jumlahCountPulangAwal", jumlahCountPulangAwal); + rsMap.put("jumlahHariKerja", harikerja); + rsMap.put("idPegawai", id); + rsMap.put("mangkir", mangkir); + rsMap.put("hariKerja", hariKerja); + rsMap.put("listkehadiran", listkehadiran); + + listRs.addAll((Collection>) rsMap.get("listkehadiran")); } - for (Map mapKehadiran : listkehadiran) { - mapKehadiran.put("absenTunggal", absenTunggal); - mapKehadiran.put("p1", p1); - mapKehadiran.put("pagi", pagi); - mapKehadiran.put("sore", sore); - mapKehadiran.put("malam", malam); - mapKehadiran.put("izin", izin); - mapKehadiran.put("dinasLuar", dinasLuar); - mapKehadiran.put("cuti", cuti); - mapKehadiran.put("sakit", sakit); + result.put("listkehadiran", listRs); + + return result; + } + + @Override + @Transactional(readOnly = true) + public Map findKehadiranAllPegawai(String startDate, String endDate) { + Map result = new HashMap(); + List> listkehadiran = new ArrayList>(); + + List listId = pegawaiDao.findPegawaiStatusAktifAndKaryawan(); + for (Integer idPegawai : listId) { + listkehadiran = this.findKehadiran(idPegawai, startDate, endDate); + } - result.put("jumlahJamLemburSdm", jumlahJamLemburUnitSdm); - result.put("jumlahJamLemburUnitKerja", jumlahJamLemburUnitKerja); - result.put("jumlahCountTerlambat", jumlahCountTerlambat); - result.put("jumlahTerlambat", jumlahTerlambat / 60); - result.put("menitTerlambat", jumlahTerlambat); - result.put("jumlahJamEfektif", jumlahJamEfektif / 60); - result.put("jumlahPulangAwal", jumlahPulangAwal / 60); - result.put("menitPulangAwal", jumlahPulangAwal); - result.put("jumlahCountPulangAwal", jumlahCountPulangAwal); - result.put("jumlahHariKerja", harikerja); - result.put("idPegawai", idPegawai); - result.put("mangkir", mangkir); - result.put("hariKerja", hariKerja); + result.put("listkehadiran", listkehadiran); + return result; + } + + @Override + @Transactional(readOnly = true) + public Map findKehadiranPerPegawai(Integer idPegawai, String startDate, String endDate) { + Map result = new HashMap(); + List> listkehadiran = new ArrayList>(); + listkehadiran = this.findKehadiran(idPegawai, startDate, endDate); + result.put("listkehadiran", listkehadiran); return result; } @@ -2288,7 +2332,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon Integer headFactorRate = factorRateKelompokShiftDao.findFactorRateForEachKelompokShift(idKelompokShiftKerja, periode); result.put("headFactorRate", headFactorRate); - Map jumlahKehadiran = this.jumlahKehadiran(idPegawai, startDate, endDate);// get_kehadiran_terlambat_pulangawal + Map jumlahKehadiran = this.jumlahKehadiran(null, null, idPegawai, startDate, endDate);// get_kehadiran_terlambat_pulangawal Integer p1 = 0; Integer pagi = 0; Integer sore = 0; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java index e4d1ed15..1499f291 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java @@ -390,7 +390,7 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic Map pirDanIku = ikiDanRemunerasiDao.getPirDanIku(); Double indeksKehadiran = ikiDanRemunerasiDao.getIndeksKehadiran(date, idPegawai); - Map monitoring = monitoringAbsenService.jumlahKehadiran(idPegawai, date, + Map monitoring = monitoringAbsenService.jumlahKehadiran(null, null, idPegawai, date, periode + "-" + enDate); Map result = pegawaiService.findPegawaiByIdCustom(idPegawai); Map evaluasi = ikiDanRemunerasiDao.getEvaluasiJabatan(idPegawai); diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringAbsen.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringAbsen.java index 1b15eac5..b9a34560 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringAbsen.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MonitoringAbsen.java @@ -13,87 +13,103 @@ import com.jasamedika.medifirst2000.helper.Caption; @Entity @Table(name = "sdm_MonitoringAbsen_T") public class MonitoringAbsen extends BaseTransaction { - + @ManyToOne @JoinColumn(name = "PegawaiFk") @NotNull(message = "Pegawai Harus Diisi") @Caption(value = "Pegawai") private Pegawai pegawai; - + @Column(name = "PegawaiFk", insertable = false, updatable = false) private Integer pegawaiId; - + @ManyToOne @JoinColumn(name = "ShiftKerjaFk") @NotNull(message = "Shift Kerja Harus Diisi") @Caption(value = "ShiftKerja") private ShiftKerja shiftKerja; - + @Column(name = "ShiftKerjaFk", insertable = false, updatable = false) private Integer shiftKerjaId; - + @Caption(value = "alasan") @Column(name = "alasan", nullable = true) private String alasan; - + @Caption(value = "jadwalPulang") @Column(name = "jadwalPulang", nullable = true) private String jadwalPulang; - + @Caption(value = "jadwalmasuk") @Column(name = "jadwalmasuk", nullable = true) private String jadwalmasuk; - + @Caption(value = "absensiMasuk") @Column(name = "absensiMasuk", nullable = true) private String absensiMasuk; - + @Caption(value = "absensiPulang") @Column(name = "absensiPulang", nullable = true) private String absensiPulang; - + @Caption(value = "terlambat") @Column(name = "terlambat", nullable = true) private Long terlambat; - + @Caption(value = "pulangAwal") @Column(name = "pulangAwal", nullable = true) private Long pulangAwal; - + @Caption(value = "jamEfektif") @Column(name = "jamEfektif", nullable = true) private String jamEfektif; - + @Caption(value = "tanggal") @Column(name = "tanggal", nullable = false) private String tanggal; - - //Untuk Absensi verifikasi + + // Untuk Absensi verifikasi @ManyToOne @JoinColumn(name = "verifikasiUnitKerjaFK") @NotNull(message = "verifikasiUnitKerjaFK") @Caption(value = "verifikasiUnitKerjaFK") private StrukVerifikasi strukVerifikasi; - + @Column(name = "verifikasiUnitKerjaFK", columnDefinition = "CHAR(32)", insertable = false, updatable = false) private String verifikasiUnitKerjaFK; - + @ManyToOne @JoinColumn(name = "verifikasiSdmFK") @NotNull(message = "verifikasiSdmFK") @Caption(value = "verifikasiSdmFK") private StrukVerifikasi strukVerifikasiSdm; - + @Column(name = "verifikasiSdmFK", columnDefinition = "CHAR(32)", insertable = false, updatable = false) private String verifikasiSdmFK; - + @Column(name = "verifiedLembur") private Integer verifiedLembur; - + @Caption(value = "kelebihanJamKerja") @Column(name = "kelebihanJamKerja", nullable = true) private Long kelebihanJamKerja; + + @Caption(value = "Status Foto Sesuai") + @Column(name = "isfotosesuai", nullable = true) + private Boolean isFotoSesuai; + + @Caption(value = "Status Lokasi Sesuai") + @Column(name = "islokasisesuai", nullable = true) + private Boolean isLokasiSesuai; + + @Caption(value = "Status Atribut Lengkap") + @Column(name = "isatributlengkap", nullable = true) + private Boolean isAtributLengkap; + @Caption(value = "Status Verifikasi") + @Column(name = "isverifikasi", nullable = true) + private Boolean isVerifikasi; + public Pegawai getPegawai() { return pegawai; } @@ -206,8 +222,6 @@ public class MonitoringAbsen extends BaseTransaction { this.strukVerifikasi = strukVerifikasi; } - - public StrukVerifikasi getStrukVerifikasiSdm() { return strukVerifikasiSdm; } @@ -215,7 +229,6 @@ public class MonitoringAbsen extends BaseTransaction { public void setStrukVerifikasiSdm(StrukVerifikasi strukVerifikasiSdm) { this.strukVerifikasiSdm = strukVerifikasiSdm; } - public Long getKelebihanJamKerja() { return kelebihanJamKerja; @@ -248,5 +261,37 @@ public class MonitoringAbsen extends BaseTransaction { public void setVerifiedLembur(Integer verifiedLembur) { this.verifiedLembur = verifiedLembur; } - + + public Boolean getIsFotoSesuai() { + return isFotoSesuai; + } + + public void setIsFotoSesuai(Boolean isFotoSesuai) { + this.isFotoSesuai = isFotoSesuai; + } + + public Boolean getIsLokasiSesuai() { + return isLokasiSesuai; + } + + public void setIsLokasiSesuai(Boolean isLokasiSesuai) { + this.isLokasiSesuai = isLokasiSesuai; + } + + public Boolean getIsAtributLengkap() { + return isAtributLengkap; + } + + public void setIsAtributLengkap(Boolean isAtributLengkap) { + this.isAtributLengkap = isAtributLengkap; + } + + public Boolean getIsVerifikasi() { + return isVerifikasi; + } + + public void setIsVerifikasi(Boolean isVerifikasi) { + this.isVerifikasi = isVerifikasi; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenVO.java index 7ad6e27f..0ba0a590 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MonitoringAbsenVO.java @@ -61,6 +61,18 @@ public class MonitoringAbsenVO extends BaseTransactionVO { @Caption(value = "Verifikasi Lembur") private Integer verifiedLembur; + @Caption(value = "Status Foto Sesuai") + private Boolean isFotoSesuai; + + @Caption(value = "Status Lokasi Sesuai") + private Boolean isLokasiSesuai; + + @Caption(value = "Status Atribut Lengkap") + private Boolean isAtributLengkap; + + @Caption(value = "Status Verifikasi") + private Boolean isVerifikasi; + public PegawaiVO getPegawai() { return pegawai; } @@ -221,4 +233,36 @@ public class MonitoringAbsenVO extends BaseTransactionVO { this.verifiedLembur = verifiedLembur; } + public Boolean getIsFotoSesuai() { + return isFotoSesuai; + } + + public void setIsFotoSesuai(Boolean isFotoSesuai) { + this.isFotoSesuai = isFotoSesuai; + } + + public Boolean getIsLokasiSesuai() { + return isLokasiSesuai; + } + + public void setIsLokasiSesuai(Boolean isLokasiSesuai) { + this.isLokasiSesuai = isLokasiSesuai; + } + + public Boolean getIsAtributLengkap() { + return isAtributLengkap; + } + + public void setIsAtributLengkap(Boolean isAtributLengkap) { + this.isAtributLengkap = isAtributLengkap; + } + + public Boolean getIsVerifikasi() { + return isVerifikasi; + } + + public void setIsVerifikasi(Boolean isVerifikasi) { + this.isVerifikasi = isVerifikasi; + } + } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java index 878cb761..b525f04a 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java @@ -2688,21 +2688,6 @@ public class SdmController extends LocaleController { } } - @RequestMapping(value = "/get-kehadiran/{idPegawai}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity> findKehadiran(@PathVariable("idPegawai") Integer idPegawai, - @PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate, - HttpServletRequest request) { - Map result = null; - try { - result = monitoringAbsenService.jumlahKehadiran(idPegawai, startDate, endDate); - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - } catch (Exception e) { - e.printStackTrace(); - } - return RestUtil.getJsonResponse(result, HttpStatus.OK); - } - @RequestMapping(value = "/get-kehadiran-rev/{idPegawai}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> findKehadiranRev(@PathVariable("idPegawai") Integer idPegawai, @PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate, @@ -2753,13 +2738,28 @@ public class SdmController extends LocaleController { return RestUtil.getJsonResponse(result, HttpStatus.OK); } + @RequestMapping(value = "/get-kehadiran/{idPegawai}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity> findKehadiran(@PathVariable("idPegawai") Integer idPegawai, + @PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate, + HttpServletRequest request) { + Map result = null; + try { + result = monitoringAbsenService.jumlahKehadiran(null, null, idPegawai, startDate, endDate); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + } catch (Exception e) { + e.printStackTrace(); + } + return RestUtil.getJsonResponse(result, HttpStatus.OK); + } + @RequestMapping(value = "/get-kehadiran-by-ruangan/{idUnitKerja}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> findKehadiranByRuangan(@PathVariable("idUnitKerja") Integer idUnitKerja, @PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate, HttpServletRequest request) { Map result = null; try { - result = monitoringAbsenService.findKehadiranByRuangan(idUnitKerja, startDate, endDate); + result = monitoringAbsenService.jumlahKehadiran(idUnitKerja, null, null, startDate, endDate); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); } catch (Exception e) { @@ -2774,7 +2774,7 @@ public class SdmController extends LocaleController { @PathVariable("endDate") String endDate, HttpServletRequest request) { Map result = null; try { - result = monitoringAbsenService.findKehadiranByRuangan(idUnitKerja, idSubUnitKerja, startDate, endDate); + result = monitoringAbsenService.jumlahKehadiran(idUnitKerja, idSubUnitKerja, null, startDate, endDate); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); } catch (Exception e) {