This commit is contained in:
salmanoe 2021-10-11 20:25:52 +07:00
parent 51e63a3432
commit 38da44389a
4 changed files with 76 additions and 56 deletions

View File

@ -76,8 +76,8 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository<Monitorin
@Query("select new map(tanggal.namaHari as namaHari, " + "tanggal.hariKeDlmBulan as hari, " @Query("select new map(tanggal.namaHari as namaHari, " + "tanggal.hariKeDlmBulan as hari, "
+ "tanggal.namaBulan as bulan, " + "tanggal.tahunKalender as tahun, " + "tanggal.hariKeDlmBulan as tgl, " + "tanggal.namaBulan as bulan, " + "tanggal.tahunKalender as tahun, " + "tanggal.hariKeDlmBulan as tgl, "
+ "tanggal.tanggal as tanggal,to_char(tanggal.tanggal,'yyyy-MM-dd') as tanggal2) " + "from Kalender tanggal " + "tanggal.tanggal as tanggal,to_char(tanggal.tanggal,'yyyy-MM-dd') as tanggal2) "
+ "where to_char(tanggal.tanggal,'yyyy-MM-dd') between :startDate and :endDate " + "from Kalender tanggal " + "where to_char(tanggal.tanggal,'yyyy-MM-dd') between :startDate and :endDate "
+ "order by tanggal.tanggal asc") + "order by tanggal.tanggal asc")
public List<Map<String, Object>> findKalender(@Param("startDate") String startDate, public List<Map<String, Object>> findKalender(@Param("startDate") String startDate,
@Param("endDate") String endDate); @Param("endDate") String endDate);
@ -160,28 +160,21 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository<Monitorin
+ "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc")
public List<Map<String, Object>> findPegawaiAktifDanKaryawan(@Param("pegawaiId") Integer idPegawai); public List<Map<String, Object>> findPegawaiAktifDanKaryawan(@Param("pegawaiId") Integer idPegawai);
@Query("select new map(pegawai.id as pegawaiId," + "pegawai.nipPns as nip, " + "pegawai.namaLengkap as nama, " @Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai "
+ "jabatanInternal.namaJabatan as jabatanInternal, " + "ruangan.namaRuangan as namaRuangan, " + "left join mapPegawai.pegawai pegawai " + "left join pegawai.shiftKerja shiftKerja "
+ "unitKerja.name as unitKerja, " + "pegawai.idFinger as fingerId) "
+ "from Pegawai pegawai, MapPegawaiJabatanToUnitKerja mapPegawai " + "left join pegawai.ruangan ruangan "
+ "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja "
+ "left join mapPegawai.unitKerjaPegawai unitKerja " + "left join mapPegawai.jabatan jabatanInternal " + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where mapPegawai.statusEnabled is true "
+ "where pegawai.id = mapPegawai.pegawaiId " + "and mapPegawai.isPrimary is true " + "and unitKerja.id = :idUnitKerja " + "and pegawai.statusEnabled is not false "
+ "and mapPegawai.statusEnabled is true " + "and unitKerja.id = :idUnitKerja " + "and pegawai.idFinger is not null " + "order by pegawai.nama asc")
+ "and pegawai.statusEnabled is true " + "order by pegawai.nama asc") public List<Integer> findPegawaiAktifDanKaryawanByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja);
public List<Map<String, Object>> findPegawaiAktifDanKaryawanByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja);
@Query("select new map(pegawai.id as pegawaiId," + "pegawai.nipPns as nip, " + "pegawai.namaLengkap as nama, " @Query("select pegawai.id " + "from MapPegawaiJabatanToUnitKerja mapPegawai "
+ "jabatanInternal.namaJabatan as jabatanInternal, " + "ruangan.namaRuangan as namaRuangan, " + "left join mapPegawai.pegawai pegawai " + "left join pegawai.shiftKerja shiftKerja "
+ "unitKerja.name as unitKerja, " + "pegawai.idFinger as fingerId) "
+ "from Pegawai pegawai, MapPegawaiJabatanToUnitKerja mapPegawai " + "left join pegawai.ruangan ruangan "
+ "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja "
+ "left join mapPegawai.unitKerjaPegawai unitKerja " + "left join mapPegawai.jabatan jabatanInternal " + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where unitKerja.id = :idUnitKerja "
+ "where pegawai.id = mapPegawai.pegawaiId " + "and mapPegawai.isPrimary is true " + "and subUnitKerja.id = :idSubUnitKerja " + "and mapPegawai.statusEnabled is true "
+ "and mapPegawai.statusEnabled is true " + "and unitKerja.id = :idUnitKerja " + "and pegawai.idFinger is not null " + "and pegawai.statusEnabled is true " + "order by pegawai.nama asc")
+ "and subUnitKerja.id = :idSubUnitKerja " + "and pegawai.statusEnabled is true " public List<Integer> findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(
+ "order by pegawai.nama asc")
public List<Map<String, Object>> findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(
@Param("idUnitKerja") Integer idUnitKerja, @Param("idSubUnitKerja") Integer idSubUnitKerja); @Param("idUnitKerja") Integer idUnitKerja, @Param("idSubUnitKerja") Integer idSubUnitKerja);
@Query(" select pegawai.id" + " from Pegawai pegawai" + " left join pegawai.ruangan ruangan" @Query(" select pegawai.id" + " from Pegawai pegawai" + " left join pegawai.ruangan ruangan"

View File

@ -5,7 +5,6 @@ import java.math.RoundingMode;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.Month; import java.time.Month;
import java.time.ZoneId; import java.time.ZoneId;
@ -1356,7 +1355,8 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
List<Map<String, Object>> rawDataPresensi = new ArrayList<>(); List<Map<String, Object>> rawDataPresensi = new ArrayList<>();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
List<Integer> listIdShiftMalam = splitDataSettingDatafixed("daftarShiftMalam"); // List<Integer> listIdShiftMalam =
// splitDataSettingDatafixed("daftarShiftMalam");
String prevTglAwal = df.format(addOrMinDays(startDate, -1)); String prevTglAwal = df.format(addOrMinDays(startDate, -1));
String prevTglAkhir = df.format(addOrMinDays(endDate, 1)); String prevTglAkhir = df.format(addOrMinDays(endDate, 1));
@ -1452,20 +1452,19 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
String startDate, String endDate) { String startDate, String endDate) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> listRs = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> listRs = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> listPegawaiMonitoring = new ArrayList<>();
List<Integer> listIdPegawai = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(idPegawai)) { if (CommonUtil.isNotNullOrEmpty(idPegawai)) {
listPegawaiMonitoring = monitoringAbsenDao.findPegawaiAktifDanKaryawan(idPegawai); listIdPegawai.add(idPegawai);
} else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(subUnitKerjaId)) { } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(subUnitKerjaId)) {
listPegawaiMonitoring = monitoringAbsenDao listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId,
.findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerjaId, subUnitKerjaId); subUnitKerjaId);
} else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(subUnitKerjaId)) { } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(subUnitKerjaId)) {
listPegawaiMonitoring = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerjaId); listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerjaId);
} }
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate); for (Integer id : listIdPegawai) {
for (Map<String, Object> pegawaiMonitoring : listPegawaiMonitoring) { String idFinger = pegawaiDao.getidFinger(id);
String idFinger = pegawaiMonitoring.get("fingerId").toString();
Map<String, Object> rsMap = new HashMap<String, Object>(); Map<String, Object> rsMap = new HashMap<String, Object>();
List<Map<String, Object>> listkehadiran = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> listkehadiran = new ArrayList<Map<String, Object>>();
Integer harikerja = 0; Integer harikerja = 0;
@ -1493,7 +1492,12 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
DateFormat sdf = new SimpleDateFormat("HH.mm"); DateFormat sdf = new SimpleDateFormat("HH.mm");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat stf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); DateFormat stf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Map<String, Object> pegawaiMonitoring = new HashMap<>();
if (CommonUtil.isNotNullOrEmpty(idFinger)) {
pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger);
}
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate);
for (Map<String, Object> data : listKomponenJadwal) { for (Map<String, Object> data : listKomponenJadwal) {
String alasanCuti = ""; String alasanCuti = "";
// put everything data needs // put everything data needs
@ -1517,7 +1521,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
String jamPulang = (String) data.get("jamPulang"); String jamPulang = (String) data.get("jamPulang");
String tgl = df.format(tanggal); String tgl = df.format(tanggal);
data.put("dates", tanggal.getTime()); 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.put("tanggal", data.get("tgl").toString() + "-" + data.get("bulan").toString() + "-"
+ data.get("tahun").toString()); + data.get("tahun").toString());
@ -1529,10 +1533,9 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
sakit++; sakit++;
} }
if (!((String) data.get("namaShift")).equals("Libur")) { if (!((String) data.get("namaShift")).equals("Libur")) {
alasanCuti = this.wfh(Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()), tgl, alasanCuti = this.wfh(id, tgl, tanggal, tglRilisFiturPresensi);
tanggal, tglRilisFiturPresensi);
if (CommonUtil.isNullOrEmpty(alasanCuti)) { 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 // Ambil data monitoringAbsen
MonitoringAbsen monitoringAbsen = monitoringAbsenDao MonitoringAbsen monitoringAbsen = monitoringAbsenDao
.findByIdPegawaiAndTanggalMonitoringAbsen( .findByIdPegawaiAndTanggalMonitoringAbsen(id, data.get("tanggal").toString());
Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()),
data.get("tanggal").toString());
if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) {
if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) {
alasanCuti += monitoringAbsen.getAlasan(); alasanCuti += monitoringAbsen.getAlasan();
@ -1897,6 +1898,22 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
dataPM.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); 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("jamEfektif", jamEf);
dataPM.put("kelebihanJamKerja", kelebihanJamKerja); dataPM.put("kelebihanJamKerja", kelebihanJamKerja);
@ -2042,8 +2059,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
data.put("terlambat", (long) 0); data.put("terlambat", (long) 0);
} }
// Ambil data monitoringAbsen // Ambil data monitoringAbsen
MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen( MonitoringAbsen monitoringAbsen = monitoringAbsenDao.findByIdPegawaiAndTanggalMonitoringAbsen(id,
Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString()),
data.get("tanggal").toString()); data.get("tanggal").toString());
if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen)) {
if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) { if (CommonUtil.isNotNullOrEmpty(monitoringAbsen.getAlasan())) {
@ -2106,6 +2122,22 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
data.put("penanggungJawabSDM", pegawaiPenanggungJawabSDM); 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("jamEfektif", jamEf);
data.put("kelebihanJamKerja", kelebihanJamKerja); data.put("kelebihanJamKerja", kelebihanJamKerja);
@ -2140,7 +2172,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
rsMap.put("menitPulangAwal", jumlahPulangAwal); rsMap.put("menitPulangAwal", jumlahPulangAwal);
rsMap.put("jumlahCountPulangAwal", jumlahCountPulangAwal); rsMap.put("jumlahCountPulangAwal", jumlahCountPulangAwal);
rsMap.put("jumlahHariKerja", harikerja); rsMap.put("jumlahHariKerja", harikerja);
rsMap.put("idPegawai", Integer.valueOf(pegawaiMonitoring.get("pegawaiId").toString())); rsMap.put("idPegawai", id);
rsMap.put("mangkir", mangkir); rsMap.put("mangkir", mangkir);
rsMap.put("hariKerja", hariKerja); rsMap.put("hariKerja", hariKerja);
rsMap.put("listkehadiran", listkehadiran); rsMap.put("listkehadiran", listkehadiran);
@ -2148,7 +2180,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
listRs.addAll(listkehadiran); listRs.addAll(listkehadiran);
result.putAll(rsMap); result.putAll(rsMap);
} }
result.put("listkehadiran", listRs); result.put("listkehadiran", listRs);
return result; return result;

View File

@ -427,10 +427,9 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic
String endDate) { String endDate) {
Map<String, Object> temp = new HashMap<String, Object>(); Map<String, Object> temp = new HashMap<String, Object>();
List<Map<String, Object>> listkehadiran = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> listkehadiran = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> listPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(idRuangan); List<Integer> listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(idRuangan);
for (Map<String, Object> pegawai : listPegawai) { for (Integer idPegawai : listIdPegawai) {
temp = monitoringAbsenService.rekapitulasiKehadiranByPegawai( temp = monitoringAbsenService.rekapitulasiKehadiranByPegawai(idPegawai, startDate, endDate);
Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate);
if (CommonUtil.isNotNullOrEmpty(temp)) { if (CommonUtil.isNotNullOrEmpty(temp)) {
listkehadiran.add(temp); listkehadiran.add(temp);
} }

View File

@ -4630,19 +4630,16 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
Map<String, Object> kehadiran = new HashMap<String, Object>(); Map<String, Object> kehadiran = new HashMap<String, Object>();
if (CommonUtil.isNotNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { if (CommonUtil.isNotNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
List<Map<String, Object>> listPegawai = monitoringAbsenDao List<Integer> listIdPegawai = monitoringAbsenDao
.findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerja, subUnitKerja); .findPegawaiAktifDanKaryawanByUnitKerjaAndSubUnitKerja(unitKerja, subUnitKerja);
for (Map<String, Object> pegawai : listPegawai) { for (Integer id : listIdPegawai) {
kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, id, startDate, endDate);
Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate);
listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran")); listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran"));
} }
} else if (CommonUtil.isNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) { } else if (CommonUtil.isNullOrEmpty(subUnitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
List<Map<String, Object>> listPegawai = monitoringAbsenDao List<Integer> listIdPegawai = monitoringAbsenDao.findPegawaiAktifDanKaryawanByUnitKerja(unitKerja);
.findPegawaiAktifDanKaryawanByUnitKerja(unitKerja); for (Integer id : listIdPegawai) {
for (Map<String, Object> pegawai : listPegawai) { kehadiran = monitoringAbsenService.jumlahKehadiran(null, null, id, startDate, endDate);
kehadiran = monitoringAbsenService.jumlahKehadiran(null, null,
Integer.valueOf(pegawai.get("pegawaiId").toString()), startDate, endDate);
listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran")); listkehadiran.addAll((List<Map<String, Object>>) kehadiran.get("listkehadiran"));
} }
} else if (CommonUtil.isNotNullOrEmpty(idPegawai)) { } else if (CommonUtil.isNotNullOrEmpty(idPegawai)) {