From 7d11d54ded6288d9c0e24ce562be929bd246581f Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 29 Jun 2021 21:28:40 +0700 Subject: [PATCH] - penambahan tanggal masuk pegawai untuk validasi simpan kontrak kinerja individu - penambahan kriteria penilaian kinerja individu - perbaikan pembulatan desimal di dashboard pencatatan kinerja - penerapan asumsi berlaku sip dan str sampai 1 tahun karena pandemi covid-19 --- .../medifirst2000/dao/LogbookKinerjaDao.java | 8 ++--- .../medifirst2000/dao/PegawaiDao.java | 2 +- .../dao/TabelAcuanIndeksIKIDao.java | 6 ++-- .../impl/LogbookKinerjaServiceImpl.java | 20 ++++++++----- .../impl/RekamDataPegawaiServiceImpl.java | 29 +++++++++++++++++-- 5 files changed, 48 insertions(+), 17 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java index e146ae78..65651c68 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java @@ -74,7 +74,7 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findLogbookKinerja(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan); - @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId)") List> findAksesPegawaiByStaf(@Param("pegawaiId") Integer idPegawai, @Param("listKategoryPegawaiId") List listIdKategoriPegawai); - @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap) " + @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap,pgb.tglMasuk as tglMasuk) " + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mja " + "inner join mjp.pegawai pgb " + "inner join mjp.atasanLangsung pg " + "inner join mja.jabatan jb " + "where mjp.atasanLangsungId = mja.pegawaiId " + "and mja.pegawaiId = pg.id " @@ -102,7 +102,7 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findAksesPegawaiByAtasan(@Param("pegawaiId") Integer idPegawai, @Param("listKategoryPegawaiId") List listIdKategoriPegawai); - @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap) " + @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap,pgb.tglMasuk as tglMasuk) " + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mjn " + "inner join mjp.pegawai pgb " + "inner join mjp.pejabatPenilai pg " + "inner join mjn.jabatan jb " + "where mjp.pejabatPenilaiId = mjn.pegawaiId " + "and mjn.pegawaiId = pg.id " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java index 49348ebf..cd6dc805 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java @@ -1062,7 +1062,7 @@ public interface PegawaiDao extends PagingAndSortingRepository @Query("select new Map(pg.id as id,pg.shiftKerjaId as shiftKerjaId) from Pegawai pg where pg.statusEnabled is true and pg.id in (:listIdPegawai)") public List> getListKelompokShiftKerja(@Param("listIdPegawai") List listIdPegawai); - @Query("select new Map (pg.id as id,pg.namaLengkap as namaLengkap) " + "from Pegawai pg " + @Query("select new Map (pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) " + "from Pegawai pg " + "where pg.statusEnabled is true " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId)") public List> findPegawaiByListKategori( @Param("listKategoryPegawaiId") List listIdKategoriPegawai); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TabelAcuanIndeksIKIDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TabelAcuanIndeksIKIDao.java index 0ad6865a..f272337a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TabelAcuanIndeksIKIDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TabelAcuanIndeksIKIDao.java @@ -16,10 +16,10 @@ public interface TabelAcuanIndeksIKIDao extends PagingAndSortingRepository findAllAcuan(); - @Query("select aiki.indeks from TabelAcuanIndeksIKI aiki " + "where aiki.statusEnabled is true " - + "and ((:hasil between aiki.nilaiBawah and aiki.nilaiAtas) " + @Query("select new Map(aiki.indeks as indeks,aiki.kriteria as kriteria) " + "from TabelAcuanIndeksIKI aiki " + + "where aiki.statusEnabled is true " + "and ((:hasil between aiki.nilaiBawah and aiki.nilaiAtas) " + "or (:hasil > 1000 and aiki.nilaiAtas = 1000))") - public Double findIKI(@Param("hasil") Double hasil); + public Map findIKI(@Param("hasil") Double hasil); @Query("select new Map(aiki.nilaiBawah as nilaiBawah,aiki.nilaiAtas as nilaiAtas," + "aiki.indeks as iki,aiki.kriteria as kriteria) " + "from TabelAcuanIndeksIKI aiki " 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 4a33620c..2b498aad 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 @@ -441,7 +441,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb RoundingMode.HALF_UP)); data.add(map); } else { - hasil += Double.valueOf(map.get("fragCapaian").toString()) + hasil += Double.parseDouble(df.format(Double.valueOf(map.get("fragCapaian").toString()))) * Double.valueOf(map.get("bobot").toString()); map.put("persenCapaianDibulatkan", new BigDecimal(Double.valueOf(map.get("fragCapaian").toString()) * 100).setScale(2, @@ -475,9 +475,10 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb listJenisIndikator.add(jenisIndikator); } - Double iki = tabelAcuanIndeksIKIDao.findIKI(totAllPersen); - if (CommonUtil.isNullOrEmpty(iki)) { - iki = 0.0; + Double iki = 0.0; + Map acuanIndeks = tabelAcuanIndeksIKIDao.findIKI(totAllPersen); + if (CommonUtil.isNotNullOrEmpty(acuanIndeks)) { + iki = Double.valueOf(acuanIndeks.get("indeks").toString()); } double targetRupiahP1 = nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1; @@ -1162,14 +1163,19 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb result.put("perilaku", jiData); } } - Double iki = tabelAcuanIndeksIKIDao.findIKI(Double.parseDouble(df.format(tHasil))); - if (CommonUtil.isNullOrEmpty(iki)) { - iki = 0.00; + + Double iki = 0.0; + String kriteria = "-"; + Map acuanIndeks = tabelAcuanIndeksIKIDao.findIKI(Double.parseDouble(df.format(tHasil))); + if (CommonUtil.isNotNullOrEmpty(acuanIndeks)) { + iki = Double.valueOf(acuanIndeks.get("indeks").toString()); + kriteria = acuanIndeks.get("kriteria").toString(); } result.put("tBobot", tBobot); result.put("tHasil", Double.parseDouble(df.format(tHasil))); result.put("iki", iki); + result.put("kriteria", kriteria); return result; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java index 342cac4b..cafd045b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java @@ -5,6 +5,8 @@ import java.security.NoSuchAlgorithmException; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -2870,9 +2872,25 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re public Map getpegawaiSipStrExpiredByPegawai() { Map result = new HashMap<>(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime today = LocalDateTime.now(); + + LocalDateTime PSBBDate = LocalDateTime.of(2020, 9, 14, 0, 0, 0); + LocalDateTime PSBBEnd = LocalDateTime.parse(GetSettingDataFixed("psbbperiod"), dtf); + LoginUser loginUser = loginUserService.getLoginUser(); - Map sip = pegawaiDao.findSipExpiredByPegawai(getNextSixMonth(), loginUser.getPegawai().getId()); - Map str = pegawaiDao.findStrExpiredByPegawai(getNextSixMonth(), loginUser.getPegawai().getId()); + + Map sip = new HashMap<>(); + Map str = new HashMap<>(); + if ((today.equals(PSBBDate) || today.isAfter(PSBBDate)) && (today.isBefore(PSBBEnd) || today.equals(PSBBEnd))) { + sip = pegawaiDao.findSipExpiredByPegawai(getPreviousSixMonth(), loginUser.getPegawai().getId()); + str = pegawaiDao.findStrExpiredByPegawai(getPreviousSixMonth(), loginUser.getPegawai().getId()); + } else { + sip = pegawaiDao.findSipExpiredByPegawai(getNextSixMonth(), loginUser.getPegawai().getId()); + str = pegawaiDao.findStrExpiredByPegawai(getNextSixMonth(), loginUser.getPegawai().getId()); + } + if (CommonUtil.isNotNullOrEmpty(sip) && CommonUtil.isNotNullOrEmpty(str)) { result.putAll(sip); result.put("tglBerakhirStr", str.get("tglBerakhirStr")); @@ -2894,6 +2912,13 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re return cal.getTime(); } + public Date getPreviousSixMonth() { + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.add(Calendar.MONTH, -5); + return cal.getTime(); + } + @Transactional(readOnly = false) public void disableIsprimary(Integer idPegawai, Integer id) { mapPegawaiJabatanToUnitKerjaDao.changeIsNotPrimary(idPegawai, id);