diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java index dde0fe61..148a5479 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MonitoringAbsenDao.java @@ -76,8 +76,8 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository> findKalender(@Param("startDate") String startDate, @Param("endDate") String endDate); @@ -160,28 +160,21 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository> findPegawaiAktifDanKaryawan(@Param("pegawaiId") Integer idPegawai); - @Query("select new map(pegawai.id as pegawaiId," + "pegawai.nipPns as nip, " + "pegawai.namaLengkap as nama, " - + "jabatanInternal.namaJabatan as jabatanInternal, " + "ruangan.namaRuangan as namaRuangan, " - + "unitKerja.name as unitKerja, " + "pegawai.idFinger as fingerId) " - + "from Pegawai pegawai, MapPegawaiJabatanToUnitKerja mapPegawai " + "left join pegawai.ruangan ruangan " + @Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai " + + "left join mapPegawai.pegawai pegawai " + "left join pegawai.shiftKerja shiftKerja " + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " - + "left join mapPegawai.unitKerjaPegawai unitKerja " + "left join mapPegawai.jabatan jabatanInternal " - + "where pegawai.id = mapPegawai.pegawaiId " + "and mapPegawai.isPrimary is true " - + "and mapPegawai.statusEnabled is true " + "and unitKerja.id = :idUnitKerja " - + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") - public List> findPegawaiAktifDanKaryawanByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja); + + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where mapPegawai.statusEnabled is true " + + "and unitKerja.id = :idUnitKerja " + "and pegawai.statusEnabled is not false " + + "and pegawai.idFinger is not null " + "order by pegawai.nama asc") + public List findPegawaiAktifDanKaryawanByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja); - @Query("select new map(pegawai.id as pegawaiId," + "pegawai.nipPns as nip, " + "pegawai.namaLengkap as nama, " - + "jabatanInternal.namaJabatan as jabatanInternal, " + "ruangan.namaRuangan as namaRuangan, " - + "unitKerja.name as unitKerja, " + "pegawai.idFinger as fingerId) " - + "from Pegawai pegawai, MapPegawaiJabatanToUnitKerja mapPegawai " + "left join pegawai.ruangan ruangan " + @Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai " + + "left join mapPegawai.pegawai pegawai " + "left join pegawai.shiftKerja shiftKerja " + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " - + "left join mapPegawai.unitKerjaPegawai unitKerja " + "left join mapPegawai.jabatan jabatanInternal " - + "where pegawai.id = mapPegawai.pegawaiId " + "and mapPegawai.isPrimary is true " - + "and mapPegawai.statusEnabled is true " + "and unitKerja.id = :idUnitKerja " - + "and subUnitKerja.id = :idSubUnitKerja " + "and pegawai.statusEnabled is true " - + "order by pegawai.nama asc") - public List> findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja( + + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where unitKerja.id = :idUnitKerja " + + "and subUnitKerja.id = :idSubUnitKerja " + "and mapPegawai.statusEnabled is true " + + "and pegawai.idFinger is not null " + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") + public List findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja( @Param("idUnitKerja") Integer idUnitKerja, @Param("idSubUnitKerja") Integer idSubUnitKerja); @Query(" select pegawai.id" + " from Pegawai pegawai" + " left join pegawai.ruangan ruangan" 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 fc05e4b2..1a567ea9 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 @@ -5,7 +5,6 @@ import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Month; import java.time.ZoneId; @@ -1356,7 +1355,8 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon List> rawDataPresensi = new ArrayList<>(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - List listIdShiftMalam = splitDataSettingDatafixed("daftarShiftMalam"); + // List listIdShiftMalam = + // splitDataSettingDatafixed("daftarShiftMalam"); String prevTglAwal = df.format(addOrMinDays(startDate, -1)); String prevTglAkhir = df.format(addOrMinDays(endDate, 1)); @@ -1452,20 +1452,19 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon String startDate, String endDate) { Map result = new HashMap<>(); List> listRs = new ArrayList>(); - List> listPegawaiMonitoring = new ArrayList<>(); + List listIdPegawai = new ArrayList<>(); if (CommonUtil.isNotNullOrEmpty(idPegawai)) { - listPegawaiMonitoring = monitoringAbsenDao.findPegawaiAktifDanKaryawan(idPegawai); + listIdPegawai.add(idPegawai); } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(subUnitKerjaId)) { - listPegawaiMonitoring = monitoringAbsenDao - .findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId, subUnitKerjaId); + listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId, + subUnitKerjaId); } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(subUnitKerjaId)) { - listPegawaiMonitoring = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerjaId); + listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerjaId); } - List> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate); - for (Map pegawaiMonitoring : listPegawaiMonitoring) { - String idFinger = pegawaiMonitoring.get("fingerId").toString(); + for (Integer id : listIdPegawai) { + String idFinger = pegawaiDao.getidFinger(id); Map rsMap = new HashMap(); List> listkehadiran = new ArrayList>(); Integer harikerja = 0; @@ -1493,7 +1492,12 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon 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(idFinger)) { + pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger); + } + List> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate); for (Map data : listKomponenJadwal) { String alasanCuti = ""; // put everything data needs @@ -1517,7 +1521,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon String jamPulang = (String) data.get("jamPulang"); String tgl = df.format(tanggal); data.put("dates", tanggal.getTime()); - data.put("idPegawai", pegawaiMonitoring.get("pegawaiId")); + data.put("idPegawai", id); data.put("tanggal", data.get("tgl").toString() + "-" + data.get("bulan").toString() + "-" + data.get("tahun").toString()); @@ -1529,10 +1533,9 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon sakit++; } if (!((String) data.get("namaShift")).equals("Libur")) { - alasanCuti = this.wfh(Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()), tgl, - tanggal, tglRilisFiturPresensi); + alasanCuti = this.wfh(id, tgl, tanggal, tglRilisFiturPresensi); if (CommonUtil.isNullOrEmpty(alasanCuti)) { - alasanCuti = this.cuti(Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()), tgl); + alasanCuti = this.cuti(id, tgl); } } } @@ -1831,9 +1834,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon } // Ambil data monitoringAbsen MonitoringAbsen monitoringAbsen = monitoringAbsenDao - .findByIdPegawaiAndTanggalMonitoringAbsen( - Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()), - data.get("tanggal").toString()); + .findByIdPegawaiAndTanggalMonitoringAbsen(id, data.get("tanggal").toString()); if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { alasanCuti += monitoringAbsen.getAlasan(); @@ -1897,6 +1898,22 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon dataPM.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); } + } else if (CommonUtil.isNullOrEmpty(monitoringAbsen)) { + if (CommonUtil.isNullOrEmpty(dataPM.get("isFotoSesuai"))) { + dataPM.put("isFotoSesuai", false); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("isLokasiSesuai"))) { + dataPM.put("isLokasiSesuai", false); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("isAtributLengkap"))) { + dataPM.put("isAtributLengkap", false); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("isVerifikasi"))) { + dataPM.put("isVerifikasi", false); + } + if (CommonUtil.isNullOrEmpty(dataPM.get("verifikasi"))) { + dataPM.put("verifikasi", "X"); + } } dataPM.put("jamEfektif", jamEf); dataPM.put("kelebihanJamKerja", kelebihanJamKerja); @@ -2042,8 +2059,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon data.put("terlambat", (long) 0); } // Ambil data monitoringAbsen - MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen( - Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()), + MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen(id, data.get("tanggal").toString()); if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { @@ -2106,6 +2122,22 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon data.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); } + } else if (CommonUtil.isNullOrEmpty(monitoringAbsen)) { + if (CommonUtil.isNullOrEmpty(data.get("isFotoSesuai"))) { + data.put("isFotoSesuai", false); + } + if (CommonUtil.isNullOrEmpty(data.get("isLokasiSesuai"))) { + data.put("isLokasiSesuai", false); + } + if (CommonUtil.isNullOrEmpty(data.get("isAtributLengkap"))) { + data.put("isAtributLengkap", false); + } + if (CommonUtil.isNullOrEmpty(data.get("isVerifikasi"))) { + data.put("isVerifikasi", false); + } + if (CommonUtil.isNullOrEmpty(data.get("verifikasi"))) { + data.put("verifikasi", "X"); + } } data.put("jamEfektif", jamEf); data.put("kelebihanJamKerja", kelebihanJamKerja); @@ -2140,7 +2172,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon rsMap.put("menitPulangAwal", jumlahPulangAwal); rsMap.put("jumlahCountPulangAwal", jumlahCountPulangAwal); rsMap.put("jumlahHariKerja", harikerja); - rsMap.put("idPegawai", Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString())); + rsMap.put("idPegawai", id); rsMap.put("mangkir", mangkir); rsMap.put("hariKerja", hariKerja); rsMap.put("listkehadiran", listkehadiran); @@ -2148,9 +2180,8 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon listRs.addAll(listkehadiran); result.putAll(rsMap); } - result.put("listkehadiran", listRs); - + return result; } 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 abca9a6c..5a1260d4 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 @@ -427,10 +427,9 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic String endDate) { Map temp = new HashMap(); List> listkehadiran = new ArrayList>(); - List> listPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(idRuangan); - for (Map pegawai : listPegawai) { - temp = monitoringAbsenService.rekapitulasiKehadiranByPegawai( - Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate); + List listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(idRuangan); + for (Integer idPegawai : listIdPegawai) { + temp = monitoringAbsenService.rekapitulasiKehadiranByPegawai(idPegawai, startDate, endDate); if (CommonUtil.isNotNullOrEmpty(temp)) { listkehadiran.add(temp); } diff --git a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java index 7c427aeb..a8506d53 100644 --- a/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java +++ b/jasamedika-reporting/src/main/java/com/jasamedika/medifirst2000/controller/ReportingController.java @@ -4630,19 +4630,16 @@ public class ReportingController extends LocaleController Map kehadiran = new HashMap(); if (CommonUtil.isNotNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { - List> listPegawai = monitoringAbsenDao + List listIdPegawai = monitoringAbsenDao .findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerja, subUnitKerja); - for (Map pegawai : listPegawai) { - kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, - Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate); + for (Integer id : listIdPegawai) { + kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, id, startDate, endDate); listkehadiran.addAll((List>) kehadiran.get("listkehadiran")); } } else if (CommonUtil.isNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { - List> listPegawai = monitoringAbsenDao - .findPegawaiAktifDanKaryawanByUnitKerja(unitKerja); - for (Map pegawai : listPegawai) { - kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, - Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate); + List listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerja); + for (Integer id : listIdPegawai) { + kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, id, startDate, endDate); listkehadiran.addAll((List>) kehadiran.get("listkehadiran")); } } else if (CommonUtil.isNotNullOrEmpty(idPegawai)) {