- perbaikan evaluasi jabatan karena relasi grade

- pembuatan fungsi simpan master anggaran remunerasi
- penyesuaian dashboard kinerja
This commit is contained in:
salmanoe 2021-03-27 21:00:13 +07:00
parent 4b1d3cb90e
commit db0fe43262
3 changed files with 51 additions and 38 deletions

View File

@ -65,17 +65,18 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository<LogbookKin
+ "inner join lk.indikatorKinerja ik " + "where ik.id = :indikatorId")
List<Map<String, Object>> 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<Map<String, Object>> findLogbookKinerja(@Param("pegawaiId") Integer idPegawai,
@Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan);

View File

@ -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", "");

View File

@ -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<String, Object> findAnggaranRemunerasi() throws JpaSystemException {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> data = anggaranRemunerasiDao.findTahunIni();
result = data.get(0);
return result;
}
@Override
public Map<String, Object> findLogbookKinerja(Integer idPegawai, Integer idJabatan, Long bulan)
throws JpaSystemException {
@ -308,7 +321,6 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> jenisIndikator = new HashMap<>();
jenisIndikator.put("jenisIndikator", ji);
for (Map<String, Object> 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;
}