|
|
|
@ -13,6 +13,8 @@ import com.jasamedika.medifirst2000.vo.*;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
|
|
|
import com.jasamedika.medifirst2000.util.DateUtil;
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
@ -25,12 +27,20 @@ import java.time.ZoneId;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
|
|
|
|
|
|
|
import static com.jasamedika.medifirst2000.constants.Master.KelompokJabatan.PENUNJANG_MEDIK;
|
|
|
|
import static com.jasamedika.medifirst2000.constants.Master.KelompokJabatan.PENUNJANG_MEDIK;
|
|
|
|
|
|
|
|
|
|
|
|
@Service("monitoringAbsenService")
|
|
|
|
@Service("monitoringAbsenService")
|
|
|
|
public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements MonitoringAbsenService {
|
|
|
|
public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements MonitoringAbsenService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringAbsenServiceImpl.class);
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private BaseConverterImpl<StrukHistoriVO, StrukHistori> strukHistoriConverter;
|
|
|
|
private BaseConverterImpl<StrukHistoriVO, StrukHistori> strukHistoriConverter;
|
|
|
|
|
|
|
|
|
|
|
|
@ -151,6 +161,9 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private LogbookKinerjaDao logbookKinerjaDao;
|
|
|
|
private LogbookKinerjaDao logbookKinerjaDao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private LogbookKinerjaDetailDao logbookKinerjaDetailDao;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Long reduceTime(Date jamAbsensi, Date jamJadwal) {
|
|
|
|
public Long reduceTime(Date jamAbsensi, Date jamJadwal) {
|
|
|
|
long diffMinutes = 0;
|
|
|
|
long diffMinutes = 0;
|
|
|
|
@ -198,6 +211,74 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
minutes = minutesAbsen;
|
|
|
|
minutes = minutesAbsen;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jadwalMasuk) && CommonUtil.isNotNullOrEmpty(jadwalPulang)) {
|
|
|
|
|
|
|
|
if ( (CommonUtil.isNullOrEmpty(jamAbsensiMasuk) && CommonUtil.isNotNullOrEmpty(jamAbsensiPulang)) || (CommonUtil.isNotNullOrEmpty(jamAbsensiMasuk) && CommonUtil.isNullOrEmpty(jamAbsensiPulang)) ) {
|
|
|
|
|
|
|
|
minutesJadwal = reduceTime(jadwalPulang, jadwalMasuk);
|
|
|
|
|
|
|
|
minutes = minutesJadwal / 2;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long menit = minutes % 60;// menit
|
|
|
|
|
|
|
|
Long jam = minutes / 60;// jam
|
|
|
|
|
|
|
|
jam_efektif = jam + ".";
|
|
|
|
|
|
|
|
String minute = Long.toString(menit);
|
|
|
|
|
|
|
|
if (minute.length() < 2) {
|
|
|
|
|
|
|
|
minute = "0" + minute;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
jam_efektif += minute;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Integer> countHari = countHariKerja(minutes, shift);
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(countHari)) {
|
|
|
|
|
|
|
|
result.putAll(countHari);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
result.put("jam_efektif", jam_efektif);
|
|
|
|
|
|
|
|
result.put("Minutes_Efektif", minutes);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String, Object> jamEfektifFactorRate(float factorRate, String shift) {
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
|
|
|
Long minutes = (long) 0;
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(factorRate)) {
|
|
|
|
|
|
|
|
minutes = (long) (factorRate * 60);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long menit = minutes % 60;// menit
|
|
|
|
|
|
|
|
Long jam = minutes / 60;// jam
|
|
|
|
|
|
|
|
String jam_efektif = jam + ".";
|
|
|
|
|
|
|
|
String minute = Long.toString(menit);
|
|
|
|
|
|
|
|
if (minute.length() < 2) {
|
|
|
|
|
|
|
|
minute = "0" + minute;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
jam_efektif += minute;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Integer> countHari = countHariKerja(minutes, shift);
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(countHari)) {
|
|
|
|
|
|
|
|
result.putAll(countHari);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.put("jam_efektif", jam_efektif);
|
|
|
|
|
|
|
|
result.put("Minutes_Efektif", minutes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String, Object> jamEfektifTunggal(Date jadwalPulang, Date jadwalMasuk, long waktuIstirahat, String shift) {
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
|
|
|
String jam_efektif;
|
|
|
|
|
|
|
|
long minutes;
|
|
|
|
|
|
|
|
Long minutesAbsen = (long) 0;
|
|
|
|
|
|
|
|
Long minutesJadwal = (long) 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jadwalMasuk) && CommonUtil.isNotNullOrEmpty(jadwalPulang)) {
|
|
|
|
|
|
|
|
minutesJadwal = reduceTime(jadwalPulang, jadwalMasuk);
|
|
|
|
|
|
|
|
if (minutesJadwal > 30) {
|
|
|
|
|
|
|
|
minutesJadwal = minutesJadwal - waktuIstirahat; // 30_adalah_waktu_istirahat
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
minutes = minutesJadwal / 2;
|
|
|
|
long menit = minutes % 60;// menit
|
|
|
|
long menit = minutes % 60;// menit
|
|
|
|
Long jam = minutes / 60;// jam
|
|
|
|
Long jam = minutes / 60;// jam
|
|
|
|
jam_efektif = jam + ".";
|
|
|
|
jam_efektif = jam + ".";
|
|
|
|
@ -1279,7 +1360,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
List<Map<String, Object>> rawDataJadwal = new ArrayList<>();
|
|
|
|
List<Map<String, Object>> rawDataJadwal = new ArrayList<>();
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
|
|
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));
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idUnitKerja) && CommonUtil.isNotNullOrEmpty(idSubunitKerja)
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idUnitKerja) && CommonUtil.isNotNullOrEmpty(idSubunitKerja)
|
|
|
|
@ -1368,12 +1449,12 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(readOnly = true)
|
|
|
|
@Transactional(readOnly = true)
|
|
|
|
public Map<String, Object> jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai,
|
|
|
|
public Map<String, Object> jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai,
|
|
|
|
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<>();
|
|
|
|
List<Map<String, Object>> listRs = new ArrayList<>();
|
|
|
|
List<Integer> listIdPegawaiFilter = new ArrayList<>();
|
|
|
|
List<Integer> listIdPegawaiFilter = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
|
|
List<Integer> listIdPegawai = new ArrayList<>();
|
|
|
|
List<Integer> listIdPegawai = new ArrayList<>();
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idPegawai)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idPegawai)) {
|
|
|
|
listIdPegawai.add(idPegawai);
|
|
|
|
listIdPegawai.add(idPegawai);
|
|
|
|
@ -1427,11 +1508,21 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
List<String> vpnIPXList = stringSplitDataSettingDatafixed("vpnAksesLuar");
|
|
|
|
List<String> vpnIPXList = stringSplitDataSettingDatafixed("vpnAksesLuar");
|
|
|
|
List<String> listIp = stringSplitDataSettingDatafixed("ip_addr");
|
|
|
|
List<String> listIp = stringSplitDataSettingDatafixed("ip_addr");
|
|
|
|
Map<String, Object> pegawaiMonitoring = new HashMap<>();
|
|
|
|
Map<String, Object> pegawaiMonitoring = new HashMap<>();
|
|
|
|
|
|
|
|
String[] listKetidakhadiran = {"L","PDK","I","CM","SKT","TL","CAP","CT","CB","S-P2"};
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idFinger)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(idFinger)) {
|
|
|
|
pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger);
|
|
|
|
pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate);
|
|
|
|
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Object[]> ListMasterShift = monitoringAbsenDao.getDataMasterShift();
|
|
|
|
|
|
|
|
List<Map<String, Object>> resultListMasterShift = ListMasterShift.stream().map(r -> {
|
|
|
|
|
|
|
|
Map<String, Object> m = new HashMap<>();
|
|
|
|
|
|
|
|
m.put("kodeShift", r[0]); // reportdisplay → kodeShift
|
|
|
|
|
|
|
|
m.put("namaShift", r[1]); // namashift → namaShift
|
|
|
|
|
|
|
|
return m;
|
|
|
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
for (Map<String, Object> data : listKomponenJadwal) {
|
|
|
|
for (Map<String, Object> data : listKomponenJadwal) {
|
|
|
|
String alasanCuti = "";
|
|
|
|
String alasanCuti = "";
|
|
|
|
// put everything data needs
|
|
|
|
// put everything data needs
|
|
|
|
@ -1489,6 +1580,13 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
e.printStackTrace();
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float rawFactorRate = (float) 0.0;
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && CommonUtil.isNotNullOrEmpty(data.get("factorRate"))) {
|
|
|
|
|
|
|
|
rawFactorRate = (float) listJadwal.get("factorRate");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data.put("factorRate", rawFactorRate);
|
|
|
|
data.put("jadwalMasuk", jamMasuk);
|
|
|
|
data.put("jadwalMasuk", jamMasuk);
|
|
|
|
data.put("jadwalPulang", jamPulang);
|
|
|
|
data.put("jadwalPulang", jamPulang);
|
|
|
|
data.put("idFinger", idFinger);
|
|
|
|
data.put("idFinger", idFinger);
|
|
|
|
@ -1708,12 +1806,11 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
Map<String, Object> jamEfektif = null;
|
|
|
|
Map<String, Object> jamEfektif = null;
|
|
|
|
|
|
|
|
|
|
|
|
if (i == 1) {
|
|
|
|
if (i == 1) {
|
|
|
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
|
|
|
//jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi");
|
|
|
|
(Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi");
|
|
|
|
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
|
|
|
} else if (i == 2) {
|
|
|
|
} else if (i == 2) {
|
|
|
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
|
|
|
//jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam, "Malam");
|
|
|
|
(Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam,
|
|
|
|
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Malam");
|
|
|
|
"Malam");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
|
|
@ -1759,16 +1856,63 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
hadir_tanpa_jadwal++;
|
|
|
|
hadir_tanpa_jadwal++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
if ((CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang"))
|
|
|
|
float factorRateX = (float) data.get("factorRate");
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(dataPM.get("absensiMasuk")))
|
|
|
|
|
|
|
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk)
|
|
|
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) && !Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift"))) {
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
//System.out.print(data.get("tanggal2"));
|
|
|
|
absenTunggal++;
|
|
|
|
try {
|
|
|
|
} else if ((CommonUtil.isNotNullOrEmpty(dataPM.get("absensiPulang"))
|
|
|
|
DateFormat sdfX = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
&& CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk")))
|
|
|
|
Date target = sdfX.parse( data.get("tanggal2").toString() );
|
|
|
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk)
|
|
|
|
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
|
|
Date twoDaysAgo = new Date(now.getTime() - (2L * 24 * 60 * 60 * 1000));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (target.before(twoDaysAgo) || target.equals(twoDaysAgo)) {
|
|
|
|
|
|
|
|
absenTunggal++;
|
|
|
|
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
|
|
|
|
jamEfektif = jamEfektifTunggal(jadwalPulang, jadwalMasuk, (long) data.get("waktuIstirahat"), (String) data.get("namaShift"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
data.putAll(jamEfektif);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jumlahTerlambat += (long) 0;
|
|
|
|
|
|
|
|
data.put("terlambat", "0");
|
|
|
|
|
|
|
|
data.put("telat", (long) 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
absenTunggal++;
|
|
|
|
absenTunggal++;
|
|
|
|
|
|
|
|
} else if ( CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && factorRateX > 0.0 && Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift")) ) {
|
|
|
|
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
|
|
|
|
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
data.putAll(jamEfektif);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1874,13 +2018,18 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
dataPM.put("verifikasi", "X");
|
|
|
|
dataPM.put("verifikasi", "X");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dataPM.put("jamEfektif", jamEf);
|
|
|
|
|
|
|
|
dataPM.put("kelebihanJamKerja", kelebihanJamKerja);
|
|
|
|
data.put("jamEfektif", jamEf);
|
|
|
|
dataPM.put("jumlahTerlambat", jumlahTerlambat.toString());
|
|
|
|
data.put("jam_efektif", jamEf);
|
|
|
|
dataPM.put("jumlahJamEfektif", jumlahJamEfektif.toString());
|
|
|
|
data.put("kelebihanJamKerja", kelebihanJamKerja);
|
|
|
|
dataPM.put("jumlahPulangAwal", jumlahPulangAwal.toString());
|
|
|
|
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
|
|
|
dataPM.put("alasan", alasanCuti);
|
|
|
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
|
|
|
listkehadiran.add(dataPM);
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
|
|
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
|
|
|
rsMap.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja);
|
|
|
|
rsMap.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja);
|
|
|
|
@ -1963,11 +2112,11 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
if (kelebihanJamKerja != 0L) {
|
|
|
|
if (kelebihanJamKerja != 0L) {
|
|
|
|
jumlahCountKelebihanJamKerja += 1;
|
|
|
|
jumlahCountKelebihanJamKerja += 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) {
|
|
|
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
|
|
|
//jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"), (String) data.get("namaShift"));
|
|
|
|
(Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"),
|
|
|
|
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), (String) data.get("namaShift"));
|
|
|
|
(String) data.get("namaShift"));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
|
|
@ -1996,7 +2145,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(listTrNo)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(listTrNo)) {
|
|
|
|
data.put("listTrNo", listTrNo);
|
|
|
|
data.put("listTrNo", listTrNo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNullOrEmpty(data.get("kodeShift"))){
|
|
|
|
if (CommonUtil.isNullOrEmpty(data.get("kodeShift"))){
|
|
|
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang"))
|
|
|
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang"))
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk")))
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk")))
|
|
|
|
@ -2010,14 +2159,64 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
hadir_tanpa_jadwal++;
|
|
|
|
hadir_tanpa_jadwal++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang"))
|
|
|
|
float factorRateX = (float) data.get("factorRate");
|
|
|
|
&& CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk")))
|
|
|
|
|
|
|
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) && !Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift"))) {
|
|
|
|
absenTunggal++;
|
|
|
|
//System.out.print(data.get("tanggal2"));
|
|
|
|
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang"))
|
|
|
|
try {
|
|
|
|
&& CommonUtil.isNullOrEmpty(data.get("absensiMasuk")))
|
|
|
|
DateFormat sdfX = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
Date target = sdfX.parse( data.get("tanggal2").toString() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
|
|
Date twoDaysAgo = new Date(now.getTime() - (2L * 24 * 60 * 60 * 1000));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (target.before(twoDaysAgo) || target.equals(twoDaysAgo)) {
|
|
|
|
|
|
|
|
absenTunggal++;
|
|
|
|
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
|
|
|
|
jamEfektif = jamEfektifTunggal(jadwalPulang, jadwalMasuk, (long) data.get("waktuIstirahat"), (String) data.get("namaShift"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
data.putAll(jamEfektif);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jumlahTerlambat += (long) 0;
|
|
|
|
|
|
|
|
data.put("terlambat", "0");
|
|
|
|
|
|
|
|
data.put("telat", (long) 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
|
|
absenTunggal++;
|
|
|
|
absenTunggal++;
|
|
|
|
|
|
|
|
} else if ( CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && factorRateX > 0.0 && Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift")) ) {
|
|
|
|
|
|
|
|
//System.out.print("Ini Gua Cuti 123");
|
|
|
|
|
|
|
|
Map<String, Object> jamEfektif = new HashMap<>();
|
|
|
|
|
|
|
|
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
data.putAll(jamEfektif);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -2122,6 +2321,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
data.put("jamEfektif", jamEf);
|
|
|
|
data.put("jamEfektif", jamEf);
|
|
|
|
|
|
|
|
data.put("jam_efektif", jamEf);
|
|
|
|
data.put("kelebihanJamKerja", kelebihanJamKerja);
|
|
|
|
data.put("kelebihanJamKerja", kelebihanJamKerja);
|
|
|
|
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
|
|
|
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
|
|
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
|
|
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
|
|
|
@ -2167,7 +2367,19 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
listInformasiAbsensiLainnya.put("absen_tunggal_tanpa_jadwal", absenTunggalNonJadwal);
|
|
|
|
listInformasiAbsensiLainnya.put("absen_tunggal_tanpa_jadwal", absenTunggalNonJadwal);
|
|
|
|
|
|
|
|
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(listkehadiran) && CommonUtil.isNotNullOrEmpty(groupKodeShift)) {
|
|
|
|
if (CommonUtil.isNotNullOrEmpty(listkehadiran) && CommonUtil.isNotNullOrEmpty(groupKodeShift)) {
|
|
|
|
dataShift.put(groupKodeShift, listkehadiran.stream().filter(p -> p.containsKey("kodeShift") && groupKodeShift.equals(p.get("kodeShift"))).count());
|
|
|
|
if (Arrays.asList(listKetidakhadiran).contains(groupKodeShift)) {
|
|
|
|
|
|
|
|
dataShift.put(groupKodeShift, listkehadiran.stream().filter(
|
|
|
|
|
|
|
|
p -> p.containsKey("kodeShift") &&
|
|
|
|
|
|
|
|
groupKodeShift.equals(p.get("kodeShift"))
|
|
|
|
|
|
|
|
).count());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
dataShift.put(groupKodeShift, listkehadiran.stream().filter(
|
|
|
|
|
|
|
|
p -> p.containsKey("kodeShift") &&
|
|
|
|
|
|
|
|
groupKodeShift.equals(p.get("kodeShift")) &&
|
|
|
|
|
|
|
|
!p.get("absensiMasuk").equals("-") &&
|
|
|
|
|
|
|
|
!p.get("absensiPulang").equals("-")
|
|
|
|
|
|
|
|
).count());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
listShiftArray.add(dataShift);
|
|
|
|
listShiftArray.add(dataShift);
|
|
|
|
@ -2186,6 +2398,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
rsMap.put("jumlahCountTerlambat", jumlahCountTerlambat);
|
|
|
|
rsMap.put("jumlahCountTerlambat", jumlahCountTerlambat);
|
|
|
|
rsMap.put("jumlahTerlambat", jumlahTerlambat / 60);
|
|
|
|
rsMap.put("jumlahTerlambat", jumlahTerlambat / 60);
|
|
|
|
rsMap.put("menitTerlambat", jumlahTerlambat);
|
|
|
|
rsMap.put("menitTerlambat", jumlahTerlambat);
|
|
|
|
|
|
|
|
rsMap.put("jumlahMenitEfektif", jumlahJamEfektif);
|
|
|
|
rsMap.put("jumlahJamEfektif", jumlahJamEfektif / 60);
|
|
|
|
rsMap.put("jumlahJamEfektif", jumlahJamEfektif / 60);
|
|
|
|
rsMap.put("jumlahPulangAwal", jumlahPulangAwal / 60);
|
|
|
|
rsMap.put("jumlahPulangAwal", jumlahPulangAwal / 60);
|
|
|
|
rsMap.put("menitPulangAwal", jumlahPulangAwal);
|
|
|
|
rsMap.put("menitPulangAwal", jumlahPulangAwal);
|
|
|
|
@ -2196,6 +2409,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
rsMap.put("hariKerja", hariKerja);
|
|
|
|
rsMap.put("hariKerja", hariKerja);
|
|
|
|
rsMap.put("listkehadiran", listkehadiran);
|
|
|
|
rsMap.put("listkehadiran", listkehadiran);
|
|
|
|
rsMap.put("totalQtyShift", newResultDataShift);
|
|
|
|
rsMap.put("totalQtyShift", newResultDataShift);
|
|
|
|
|
|
|
|
rsMap.put("masterShift", resultListMasterShift);
|
|
|
|
|
|
|
|
|
|
|
|
listRs.addAll(listkehadiran);
|
|
|
|
listRs.addAll(listkehadiran);
|
|
|
|
result.putAll(rsMap);
|
|
|
|
result.putAll(rsMap);
|
|
|
|
@ -2979,7 +3193,175 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|
|
|
result.put("listRekapKehadiran", listRekap);
|
|
|
|
result.put("listRekapKehadiran", listRekap);
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
|
|
|
|
public Map<String, Object> rekapitulasiCapaianHariDanJamKerjaPegawai(String tglAwal, String tglAkhir) {
|
|
|
|
|
|
|
|
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LocalDate localDate = LocalDate.now().minusMonths(1);
|
|
|
|
|
|
|
|
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
|
|
|
Date tglAwalDefault = DateUtil.startMonth(date);
|
|
|
|
|
|
|
|
Date tglAkhirDefault = DateUtil.endMonth(date);
|
|
|
|
|
|
|
|
String tglAwalString = df.format(tglAwalDefault);
|
|
|
|
|
|
|
|
String tglAkhirString = df.format(tglAkhirDefault);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Object[]> listTargetHariJamKerja = monitoringAbsenDao.getTargetHariJamKerja();
|
|
|
|
|
|
|
|
List<Map<String, Object>> resultListTargetHariJamKerja = listTargetHariJamKerja.stream().map(r -> {
|
|
|
|
|
|
|
|
Map<String, Object> m = new HashMap<>();
|
|
|
|
|
|
|
|
m.put("pegawaiId", r[0]);
|
|
|
|
|
|
|
|
m.put("namaLengkap", r[1]);
|
|
|
|
|
|
|
|
m.put("jumlahTargetHari", r[2]);
|
|
|
|
|
|
|
|
m.put("jumlahTargetMenit", r[3]);
|
|
|
|
|
|
|
|
m.put("objectjabatanfk", r[4]);
|
|
|
|
|
|
|
|
return m;
|
|
|
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExecutorService executorService = Executors.newFixedThreadPool(2);
|
|
|
|
|
|
|
|
CountDownLatch latch = new CountDownLatch(resultListTargetHariJamKerja.size());
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
|
|
|
List<Map<String, Object>> listRekap = Collections.synchronizedList(new ArrayList<>());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
for (Map<String, Object> data : resultListTargetHariJamKerja) {
|
|
|
|
|
|
|
|
executorService.execute(() -> {
|
|
|
|
|
|
|
|
LOGGER.info("Simpan rekap absensi {}", data.get("namaLengkap"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> kehadiranByPegawai = this.simpanLogbookKinerja(data, tglAwalString, tglAkhirString);
|
|
|
|
|
|
|
|
listRekap.add(kehadiranByPegawai);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
latch.countDown();
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
latch.await();
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
Thread.currentThread().interrupt();
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
executorService.shutdown();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.put("listRekapKehadiran", listRekap);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
|
|
|
|
|
|
public Map<String, Object> simpanLogbookKinerja(Map<String, Object> data, String tglAwalString, String tglAkhirString) {
|
|
|
|
|
|
|
|
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
Short kdprofile = 0;
|
|
|
|
|
|
|
|
boolean statusenabled = true;
|
|
|
|
|
|
|
|
boolean statusverifikasi = true;
|
|
|
|
|
|
|
|
Integer pegawaiId = (Integer) data.get("pegawaiId");
|
|
|
|
|
|
|
|
Pegawai pegawaiObject = new Pegawai();
|
|
|
|
|
|
|
|
pegawaiObject.setId(pegawaiId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer jabatanId = (Integer) data.get("objectjabatanfk");
|
|
|
|
|
|
|
|
Jabatan jabatanObject = new Jabatan();
|
|
|
|
|
|
|
|
jabatanObject.setId(jabatanId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String namaLengkap = (String) data.get("namaLengkap");
|
|
|
|
|
|
|
|
Date bulan = null;
|
|
|
|
|
|
|
|
Double capaianLogbookKinerja = null;
|
|
|
|
|
|
|
|
Double bobot = null;
|
|
|
|
|
|
|
|
Integer indikatorLogbookKinerja = null;
|
|
|
|
|
|
|
|
Double targetLogbookKinerja = null;
|
|
|
|
|
|
|
|
String catatan = "-";
|
|
|
|
|
|
|
|
String namakegiatan = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
bulan = df.parse(tglAwalString);
|
|
|
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> kehadiranByPegawai = this.jumlahKehadiran(null, null, pegawaiId, tglAwalString, tglAkhirString);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
capaianLogbookKinerja = ((Number) kehadiranByPegawai.get("hariKerja")).doubleValue(); // Untuk Capaian Row Insert Hari Kerja
|
|
|
|
|
|
|
|
bobot = (double) Master.IndikatorKinerja.BOBOT_HARI_KERJA;
|
|
|
|
|
|
|
|
indikatorLogbookKinerja = Master.IndikatorKinerja.PEMENUHAN_HARI_KERJA;
|
|
|
|
|
|
|
|
IndikatorKinerja indikatorLogbookKinerjaObject = new IndikatorKinerja();
|
|
|
|
|
|
|
|
indikatorLogbookKinerjaObject.setId(indikatorLogbookKinerja);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
targetLogbookKinerja = ((Number) data.get("jumlahTargetHari")).doubleValue();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ===============================
|
|
|
|
|
|
|
|
// 1. INSERT LOGBOOK HARI KERJA
|
|
|
|
|
|
|
|
// ===============================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LogbookKinerja logbookHariKerja = new LogbookKinerja();
|
|
|
|
|
|
|
|
logbookHariKerja.setBulan(bulan);
|
|
|
|
|
|
|
|
logbookHariKerja.setKdProfile(kdprofile);
|
|
|
|
|
|
|
|
logbookHariKerja.setStatusEnabled(statusenabled);
|
|
|
|
|
|
|
|
logbookHariKerja.setTarget(targetLogbookKinerja);
|
|
|
|
|
|
|
|
logbookHariKerja.setBobot(bobot);
|
|
|
|
|
|
|
|
logbookHariKerja.setCapaian(capaianLogbookKinerja);
|
|
|
|
|
|
|
|
logbookHariKerja.setStatusVerifikasi(statusverifikasi);
|
|
|
|
|
|
|
|
logbookHariKerja.setPegawai(pegawaiObject);
|
|
|
|
|
|
|
|
logbookHariKerja.setJabatan(jabatanObject);
|
|
|
|
|
|
|
|
logbookHariKerja.setIndikatorKinerja(indikatorLogbookKinerjaObject);
|
|
|
|
|
|
|
|
logbookHariKerja = logbookKinerjaDao.save(logbookHariKerja);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namakegiatan = "Hari Kerja Periode "+ tglAwalString +" s/d "+tglAkhirString;
|
|
|
|
|
|
|
|
LogbookKinerjaDetail detailHariKerja = new LogbookKinerjaDetail();
|
|
|
|
|
|
|
|
detailHariKerja.setKdProfile(kdprofile);
|
|
|
|
|
|
|
|
detailHariKerja.setStatusEnabled(statusenabled);
|
|
|
|
|
|
|
|
detailHariKerja.setNamaKegiatan(namakegiatan);
|
|
|
|
|
|
|
|
detailHariKerja.setCapaian(capaianLogbookKinerja);
|
|
|
|
|
|
|
|
detailHariKerja.setCatatan(catatan);
|
|
|
|
|
|
|
|
detailHariKerja.setTanggalKegiatan(bulan);
|
|
|
|
|
|
|
|
detailHariKerja.setStatusVerifikasi(statusverifikasi);
|
|
|
|
|
|
|
|
detailHariKerja.setLogbookKinerja(logbookHariKerja);
|
|
|
|
|
|
|
|
logbookKinerjaDetailDao.save(detailHariKerja);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ===============================
|
|
|
|
|
|
|
|
// 1. INSERT LOGBOOK JAM KERJA
|
|
|
|
|
|
|
|
// ===============================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
capaianLogbookKinerja = ((Number) kehadiranByPegawai.get("jumlahMenitEfektif")).doubleValue(); // Untuk Capaian Row Insert Jam Kerja
|
|
|
|
|
|
|
|
bobot = (double) Master.IndikatorKinerja.BOBOT_JAM_KERJA;
|
|
|
|
|
|
|
|
indikatorLogbookKinerja = Master.IndikatorKinerja.PEMENUHAN_JAM_KERJA;
|
|
|
|
|
|
|
|
IndikatorKinerja indikatorLogbookKinerjaJamObject = new IndikatorKinerja();
|
|
|
|
|
|
|
|
indikatorLogbookKinerjaJamObject.setId(indikatorLogbookKinerja);
|
|
|
|
|
|
|
|
targetLogbookKinerja = ((Number) data.get("jumlahTargetMenit")).doubleValue();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LogbookKinerja logbookJamKerja = new LogbookKinerja();
|
|
|
|
|
|
|
|
logbookJamKerja.setBulan(bulan);
|
|
|
|
|
|
|
|
logbookJamKerja.setKdProfile(kdprofile);
|
|
|
|
|
|
|
|
logbookJamKerja.setStatusEnabled(statusenabled);
|
|
|
|
|
|
|
|
logbookJamKerja.setTarget(targetLogbookKinerja);
|
|
|
|
|
|
|
|
logbookJamKerja.setBobot(bobot);
|
|
|
|
|
|
|
|
logbookJamKerja.setCapaian(capaianLogbookKinerja);
|
|
|
|
|
|
|
|
logbookJamKerja.setStatusVerifikasi(statusverifikasi);
|
|
|
|
|
|
|
|
logbookJamKerja.setPegawai(pegawaiObject);
|
|
|
|
|
|
|
|
logbookJamKerja.setJabatan(jabatanObject);
|
|
|
|
|
|
|
|
logbookJamKerja.setIndikatorKinerja(indikatorLogbookKinerjaJamObject);
|
|
|
|
|
|
|
|
logbookJamKerja = logbookKinerjaDao.save(logbookJamKerja);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namakegiatan = "Hari Kerja Periode "+ tglAwalString +" s/d "+tglAkhirString;
|
|
|
|
|
|
|
|
LogbookKinerjaDetail detailJamKerja = new LogbookKinerjaDetail();
|
|
|
|
|
|
|
|
detailJamKerja.setKdProfile(kdprofile);
|
|
|
|
|
|
|
|
detailJamKerja.setStatusEnabled(statusenabled);
|
|
|
|
|
|
|
|
detailJamKerja.setNamaKegiatan(namakegiatan);
|
|
|
|
|
|
|
|
detailJamKerja.setCapaian(capaianLogbookKinerja);
|
|
|
|
|
|
|
|
detailJamKerja.setCatatan(catatan);
|
|
|
|
|
|
|
|
detailJamKerja.setTanggalKegiatan(bulan);
|
|
|
|
|
|
|
|
detailJamKerja.setStatusVerifikasi(statusverifikasi);
|
|
|
|
|
|
|
|
detailJamKerja.setLogbookKinerja(logbookJamKerja);
|
|
|
|
|
|
|
|
logbookKinerjaDetailDao.save(detailJamKerja);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> mapFilter = new HashMap<>();
|
|
|
|
|
|
|
|
mapFilter.put("idPegawai", kehadiranByPegawai.get("idPegawai"));
|
|
|
|
|
|
|
|
mapFilter.put("namaLengkap", namaLengkap);
|
|
|
|
|
|
|
|
mapFilter.put("hariKerja", kehadiranByPegawai.get("hariKerja"));
|
|
|
|
|
|
|
|
mapFilter.put("jumlahMenitEfektif", kehadiranByPegawai.get("jumlahMenitEfektif"));
|
|
|
|
|
|
|
|
mapFilter.put("menitTerlambat", kehadiranByPegawai.get("menitTerlambat"));
|
|
|
|
|
|
|
|
mapFilter.put("jumlahKelebihanMenitKerja", kehadiranByPegawai.get("jumlahKelebihanMenitKerja"));
|
|
|
|
|
|
|
|
mapFilter.put("jumlahTargetHariKerja", data.get("jumlahTargetHari"));
|
|
|
|
|
|
|
|
mapFilter.put("jumlahTargetMenitKerja", data.get("jumlahTargetMenit"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return mapFilter;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional
|
|
|
|
@Transactional
|
|
|
|
public Map<String, Object> rekapitulasiKehadiranByUnitKerja(Integer idUnitKerja, String startDate, String endDate) {
|
|
|
|
public Map<String, Object> rekapitulasiKehadiranByUnitKerja(Integer idUnitKerja, String startDate, String endDate) {
|
|
|
|
|