From db0fe43262cef56f48da19536d29ce49fac26465 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Sat, 27 Mar 2021 21:00:13 +0700 Subject: [PATCH] - perbaikan evaluasi jabatan karena relasi grade - pembuatan fungsi simpan master anggaran remunerasi - penyesuaian dashboard kinerja --- .../medifirst2000/dao/LogbookKinerjaDao.java | 15 ++-- .../impl/EvaluasiJabatanServiceImpl.java | 2 +- .../impl/LogbookKinerjaServiceImpl.java | 72 +++++++++++-------- 3 files changed, 51 insertions(+), 38 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 74912e21..b7c7962d 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 @@ -65,17 +65,18 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findKontrakKinerja(@Param("indikatorId") Integer idIndikator); - @Query("select new Map(lk.noRec as noRec," + "pg.id as idPegawai,pg.namaLengkap as namaPegawai," + @Query("select new Map(lk.noRec as noRec," + + "pg.id as idPegawai,pg.namaLengkap as namaPegawai,coalesce(pg.nilaiJabatan,0) as nilaiJabatan," + "jb.id as idJabatan,jb.namaJabatan as namaJabatan," + "ik.jenisIndikator as idJenisIndikator," + "(case when ik.jenisIndikator = 1 then 'Kuantitas' " + "when ik.jenisIndikator = 2 then 'Kualitas'" + " when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator," + "ik.id as idIndikator,ik.namaIndikator as namaIndikator," - + "si.id as satuanId,si.satuanIndikator as satuanIndikator," + "lk.capaian/lk.target*100 as persenCapaian) " - + "from LogbookKinerja lk " + "inner join lk.indikatorKinerja ik " + "inner join ik.satuanIndikator si " - + "inner join lk.pegawai pg " + "inner join lk.jabatan jb " + "where lk.statusEnabled is true " - + "and ik.statusEnabled is true " + "and lk.statusVerifikasi is true " + "and ik.statusVerifikasi is true " - + "and si.statusEnabled is true " + "and lk.pegawaiId = :pegawaiId " + "and lk.jabatanId = :jabatanId " - + "and to_char(lk.bulan,'yyyy-MM') = :bulan") + + "si.id as satuanId,si.satuanIndikator as satuanIndikator," + "lk.capaian/lk.target as fragCapaian," + + "lk.bobot as bobot) " + "from LogbookKinerja lk " + "inner join lk.indikatorKinerja ik " + + "inner join ik.satuanIndikator si " + "inner join lk.pegawai pg " + "inner join lk.jabatan jb " + + "where lk.statusEnabled is true " + "and ik.statusEnabled is true " + "and lk.statusVerifikasi is true " + + "and ik.statusVerifikasi is true " + "and si.statusEnabled is true " + "and lk.pegawaiId = :pegawaiId " + + "and lk.jabatanId = :jabatanId " + "and to_char(lk.bulan,'yyyy-MM') = :bulan") List> findLogbookKinerja(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/EvaluasiJabatanServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/EvaluasiJabatanServiceImpl.java index 9bc77b8d..a13970f3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/EvaluasiJabatanServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/EvaluasiJabatanServiceImpl.java @@ -341,7 +341,7 @@ public class EvaluasiJabatanServiceImpl extends BaseVoServiceImpl implements Eva result.put("result", total); if (CommonUtil.isNotNullOrEmpty(getGrade)) { - result.put("grade", getGrade.getGrade()); + result.put("grade", getGrade.getGradeDesc()); result.put("detailGrade", getGrade.getDetailKelompokJabatan()); } else { result.put("grade", ""); 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 405fdb53..75c3277a 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,7 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.AnggaranRemunerasiDao; import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDao; import com.jasamedika.medifirst2000.entities.IndikatorKinerja; @@ -59,6 +60,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Autowired private IndikatorKinerjaDao indikatorKinerjaDao; + @Autowired + private AnggaranRemunerasiDao anggaranRemunerasiDao; + @Override public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException { Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); @@ -301,6 +305,15 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + public Map findAnggaranRemunerasi() throws JpaSystemException { + Map result = new HashMap<>(); + + List> data = anggaranRemunerasiDao.findTahunIni(); + result = data.get(0); + + return result; + } + @Override public Map findLogbookKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException { @@ -308,7 +321,6 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List> listJenisIndikator = new ArrayList<>(); DateFormat df = new SimpleDateFormat("yyyy-MM"); double totAllPersen = 0.0; - int jmlAllJenisIndikator = Arrays.asList(Master.JENIS_INDIKATOR).size(); DecimalFormatSymbols formatRp = new DecimalFormatSymbols(); formatRp.setCurrencySymbol("Rp"); @@ -320,55 +332,55 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List> rs = logbookKinerjaDao.findLogbookKinerja(idPegawai, idJabatan, df.format(new Date(bulan))); + + double nilaiJabatan = Double.valueOf(rs.get(0).get("nilaiJabatan").toString()); + double pir = Double.valueOf(findAnggaranRemunerasi().get("pir").toString()); + for (String ji : Arrays.asList(Master.JENIS_INDIKATOR)) { - double totPersen = 0.0; - int jmlIndikator = 0; + double hasil = 0.0; List> data = new ArrayList<>(); Map jenisIndikator = new HashMap<>(); jenisIndikator.put("jenisIndikator", ji); for (Map map : rs) { if (map.get("jenisIndikator").equals(ji)) { - jmlIndikator++; - totPersen += new BigDecimal(Double.valueOf(map.get("persenCapaian").toString())) - .setScale(2, RoundingMode.HALF_UP).doubleValue(); - + hasil += Double.valueOf(map.get("fragCapaian").toString()) + * Double.valueOf(map.get("bobot").toString()); map.put("persenCapaianDibulatkan", - new BigDecimal(Double.valueOf(map.get("persenCapaian").toString())).setScale(2, + new BigDecimal(Double.valueOf(map.get("fragCapaian").toString()) * 100).setScale(2, RoundingMode.HALF_UP)); data.add(map); } } - // divided by zero exception - if (jmlIndikator == 0) { - jmlIndikator = 1; + if (ji.equals("Kuantitas")) { + totAllPersen += hasil; + jenisIndikator.put("persenCapaian", (100.0 / 40.0) * hasil); + jenisIndikator.put("persenCapaianDibulatkan", + new BigDecimal(Double.valueOf((100.0 / 40.0) * hasil)).setScale(2, RoundingMode.HALF_UP)); + } else if (ji.equals("Kualitas")) { + totAllPersen += hasil; + jenisIndikator.put("persenCapaian", (100.0 / 30.0) * hasil); + jenisIndikator.put("persenCapaianDibulatkan", + new BigDecimal(Double.valueOf((100.0 / 30.0) * hasil)).setScale(2, RoundingMode.HALF_UP)); + } else if (ji.equals("Perilaku")) { + totAllPersen += hasil; + jenisIndikator.put("persenCapaian", (100.0 / 30.0) * hasil); + jenisIndikator.put("persenCapaianDibulatkan", + new BigDecimal(Double.valueOf((100.0 / 30.0) * hasil)).setScale(2, RoundingMode.HALF_UP)); } - - totAllPersen += new BigDecimal(Double.valueOf(totPersen / jmlIndikator)).setScale(2, RoundingMode.HALF_UP) - .doubleValue(); - jenisIndikator.put("data", data); - jenisIndikator.put("persenCapaian", totPersen / jmlIndikator); - jenisIndikator.put("persenCapaianDibulatkan", - new BigDecimal(Double.valueOf(totPersen / jmlIndikator)).setScale(2, RoundingMode.HALF_UP)); listJenisIndikator.add(jenisIndikator); } - // divided by zero exception - if (jmlAllJenisIndikator == 0) { - jmlAllJenisIndikator = 1; - } - result.put("listJenisIndikator", listJenisIndikator); - result.put("rupiahCapaian", (totAllPersen / jmlAllJenisIndikator) / 100 * 9999999); - result.put("rupiahCapaianFormat", - kursINA.format((totAllPersen / jmlAllJenisIndikator) / 100 * 9999999).toString()); - result.put("rupiahTarget", 9999999); - result.put("rupiahTargetFormat", kursINA.format(9999999).toString()); - result.put("persenCapaian", totAllPersen / jmlAllJenisIndikator); + result.put("rupiahCapaian", totAllPersen / 100 * nilaiJabatan * 3 * pir); + result.put("rupiahCapaianFormat", kursINA.format(totAllPersen / 100 * nilaiJabatan * 3 * pir).toString()); + result.put("rupiahTarget", nilaiJabatan * 3 * pir); + result.put("rupiahTargetFormat", kursINA.format(nilaiJabatan * 3 * pir).toString()); + result.put("persenCapaian", totAllPersen); result.put("persenCapaianDibulatkan", - new BigDecimal(Double.valueOf(totAllPersen / jmlAllJenisIndikator)).setScale(2, RoundingMode.HALF_UP)); + new BigDecimal(Double.valueOf(totAllPersen)).setScale(2, RoundingMode.HALF_UP)); return result; }