From 00d820567c1929509b2b3f0022b95ec84b76d3ec Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 6 Apr 2022 08:19:56 +0700 Subject: [PATCH] Update LogbookKinerjaService Perbaikan subrutin perhitungan menit kerja untuk penerapan di bulan ramadhan di kontrak kinerja individu --- .../medifirst2000/constants/Master.java | 1 + .../impl/LogbookKinerjaServiceImpl.java | 33 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 4856396d..f637f235 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -8,6 +8,7 @@ public class Master { public static final boolean STATUS_ENABLE_TRUE = true; public static final Double MENIT_KERJA_HARIAN = 8.0 * 60.0; + public static final Double MENIT_KERJA_RAMADHAN = 6.5 * 60.0; public static final String TIDAK_ADA_PERUBAHAN_DATA = "Tidak Ada Perubahan Data!"; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java index f4a0ad25..f492202e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java @@ -19,6 +19,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.joda.time.Chronology; +import org.joda.time.LocalDate; +import org.joda.time.chrono.IslamicChronology; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @@ -170,8 +173,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb logbookKinerja.setJabatan(jabatan); logbookKinerja.setIndikatorKinerja(indikatorKinerja); if (vo.getIndikatorKinerja().getId().equals(Master.IndikatorKinerja.PEMENUHAN_JAM_KERJA)) { - Integer targetHariKerja = hitungTargetHariKerja(vo.getBulan()); - Double targetJamKerja = targetHariKerja.doubleValue() * Master.MENIT_KERJA_HARIAN; + Double targetJamKerja = hitungTargetMenitKerja(vo.getBulan()); logbookKinerja.setTarget(targetJamKerja); } logbookKinerja.setCapaian(0.0); @@ -459,6 +461,31 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + private Double hitungTargetMenitKerja(Date bulan) { + Double result = 0.0; + + Chronology hijri = IslamicChronology.getInstance(); + + DateFormat df = new SimpleDateFormat("yyyy-MM"); + + List targetPresensi = kalenderDao.getTargetKerja(df.format(bulan)); + Integer jumlahHariKerjaHarian = 0; + Integer jumlahHariKerjaRamadhan = 0; + for (Kalender kalender : targetPresensi) { + LocalDate hijriDate = new LocalDate(kalender.getTanggal().getTime(), hijri); + if (hijriDate.getMonthOfYear() == 9) { + jumlahHariKerjaRamadhan += 1; + } else { + jumlahHariKerjaHarian += 1; + } + } + + result += jumlahHariKerjaHarian.doubleValue() * Master.MENIT_KERJA_HARIAN; + result += jumlahHariKerjaRamadhan.doubleValue() * Master.MENIT_KERJA_RAMADHAN; + + return result; + } + @Override public Map findKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException { @@ -470,7 +497,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb DateFormat mf = new SimpleDateFormat("yyyy-MM"); Integer targetHariKerja = hitungTargetHariKerja(new Date(bulan)); - Double targetJamKerja = targetHariKerja.doubleValue() * Master.MENIT_KERJA_HARIAN; + Double targetJamKerja = hitungTargetMenitKerja(new Date(bulan)); List> listMap = logbookKinerjaDao.findIndikatorByJabatan(idJabatan, mf.format(new Date(bulan)));