- perbaikan service mendapatkan nilai pir sesuai tahun yang dipilih
- pembuatan service penilaian kinerja individu - pembautan service rekapitulasi penilaian kinerja individu - pembuatan service mendapatkan nilai iki acuan dari persen capaian kinerja - pendaftaran tabel acuan iki ke dalam konfigurasi hibernate
This commit is contained in:
parent
b50c762870
commit
a46e4f3ed1
@ -265,16 +265,19 @@ public class Master {
|
||||
|
||||
public static final class Remunerasi {
|
||||
public static final Integer[] JENIS_INDIKATOR = { 1, 2, 3 };
|
||||
|
||||
|
||||
public static final Double BOBOT_KUANTITAS = 40.0;
|
||||
public static final Double BOBOT_KUALITAS = 30.0;
|
||||
public static final Double BOBOT_PERILAKU = 30.0;
|
||||
|
||||
public static final Double IKI_STANDAR = 1.0;
|
||||
|
||||
public static final Double PERSEN_SKOR_ASISTEN_SPESIALIS = 0.3;
|
||||
public static final Double PERSEN_SKOR_EKSEKUTIF = 1.15;
|
||||
public static final Double IKU = 1.0;
|
||||
|
||||
public static final Double PERSEN_P1 = 0.3;
|
||||
public static final Double PERSEN_P2 = 0.7;
|
||||
|
||||
public static final Double PERSEN_SKOR_ASISTEN_SPESIALIS = 0.3;
|
||||
public static final Double PERSEN_SKOR_EKSEKUTIF = 1.15;
|
||||
}
|
||||
|
||||
public static final class Ruangan {
|
||||
|
||||
@ -20,15 +20,30 @@ public interface AnggaranRemunerasiDao extends PagingAndSortingRepository<Anggar
|
||||
+ "and to_char(ar.tahun,'yyyy') = to_char(now(),'yyyy') " + "order by ar.tanggalPembaharuanData desc")
|
||||
List<Map<String, Object>> findTahunIni();
|
||||
|
||||
@Query("select new Map(ar.anggaranRemunTahun as anggaranTahun," + "ar.anggaranRemunBulan as anggaranBulan,"
|
||||
+ "ar.poinIndeksRupiah as pir," + "ar.gajiHonorarium as plafonGaji," + "ar.maxInsentif as plafonInsentif,"
|
||||
+ "ar.tanggalPembaharuanData as tglPembaharuanData) " + "from AnggaranRemunerasi ar, "
|
||||
+ "MapPegawaiJabatanToUnitKerja mj " + "inner join ar.grade gr " + "inner join mj.grade nj "
|
||||
+ "where nj.gradeId = gr.id " + "and ar.statusEnabled is true " + "and mj.statusEnabled is true "
|
||||
String strQryAnggaran = "select new Map(pg.id as pegawaiId,pg.namaLengkap as namaLengkap,"
|
||||
+ "mj.jabatanId as jabatanId," + "ar.anggaranRemunTahun as anggaranTahun,"
|
||||
+ "ar.anggaranRemunBulan as anggaranBulan," + "ar.poinIndeksRupiah as pir,"
|
||||
+ "ar.gajiHonorarium as plafonGaji," + "ar.maxInsentif as plafonInsentif,"
|
||||
+ "ar.tanggalPembaharuanData as tglPembaharuanData) "
|
||||
+ "from AnggaranRemunerasi ar, MapPegawaiJabatanToUnitKerja mj " + "inner join ar.grade gr "
|
||||
+ "inner join mj.pegawai pg " + "inner join mj.grade nj " + "where nj.gradeId = gr.id "
|
||||
+ "and ar.statusEnabled is true " + "and mj.statusEnabled is true " + "and pg.statusEnabled is true "
|
||||
+ "and gr.statusEnabled is true " + "and nj.statusEnabled is true "
|
||||
+ "and to_char(ar.tahun,'yyyy') = to_char(now(),'yyyy') " + "and mj.pegawaiId = :pegawaiId "
|
||||
+ "and mj.jabatanId = :jabatanId " + "order by ar.tanggalPembaharuanData desc")
|
||||
List<Map<String, Object>> findTahunIniByPegawai(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("jabatanId") Integer idJabatan);
|
||||
+ "and to_char(ar.tahun,'yyyy') = :tahun ";
|
||||
|
||||
String cdtPegawai = "and mj.pegawaiId = :pegawaiId ";
|
||||
|
||||
String cdtJabatan = "and mj.jabatanId = :jabatanId ";
|
||||
|
||||
String sortDateUpdate = "order by ar.tanggalPembaharuanData desc";
|
||||
|
||||
String sortPegawai = "order by pg.namaLengkap asc, ar.tanggalPembaharuanData desc";
|
||||
|
||||
@Query(strQryAnggaran + cdtPegawai + cdtJabatan + sortDateUpdate)
|
||||
List<Map<String, Object>> findAnggaran(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan,
|
||||
@Param("tahun") String tahun);
|
||||
|
||||
@Query(strQryAnggaran + sortPegawai)
|
||||
List<Map<String, Object>> findAnggaran(@Param("tahun") String tahun);
|
||||
|
||||
}
|
||||
|
||||
@ -119,4 +119,61 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository<LogbookKin
|
||||
List<Map<String, Object>> findUsedKontrakByMapping(@Param("indikatorId") Integer idIndikator,
|
||||
@Param("jabatanId") Integer idJabatan);
|
||||
|
||||
@Query("select new Map(ikm.jenisIndikator as jenisIndikatorId,"
|
||||
+ "(case when ikm.jenisIndikator = 1 then 'Kuantitas' " + "when ikm.jenisIndikator = 2 then 'Kualitas' "
|
||||
+ "when ikm.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
|
||||
+ "ikm.id as indikatorId,ikm.namaIndikator as namaIndikator," + "lkt.bobot as bobot,"
|
||||
+ "lkt.target as target," + "lkt.capaian as realisasi) " + "from LogbookKinerja lkt "
|
||||
+ "inner join lkt.indikatorKinerja ikm "
|
||||
+ "where lkt.statusEnabled is true and lkt.statusVerifikasi is true "
|
||||
+ "and ikm.statusEnabled is true and ikm.statusVerifikasi is true " + "and lkt.pegawaiId = :pegawaiId "
|
||||
+ "and lkt.jabatanId = :jabatanId " + "and to_char(lkt.bulan,'yyyy-MM') = :bulan")
|
||||
List<Map<String, Object>> findPenilaianKinerja(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan);
|
||||
|
||||
String strQryIKI = "select new Map(uk.id as unitKerjaId,uk.name as unitKerja,"
|
||||
+ "sk.id as subunitKerjaId,sk.name as subunitKerja," + "pg.id as pegawaiId,pg.namaLengkap as namaLengkap,"
|
||||
+ "jb.id as jabatanId,jb.namaJabatan as namaJabatan,mj.nilaiJabatan as nilaiJabatan,"
|
||||
+ "ikm.jenisIndikator as jenisIndikatorId," + "(case when ikm.jenisIndikator = 1 then 'Kuantitas' "
|
||||
+ "when ikm.jenisIndikator = 2 then 'Kualitas' "
|
||||
+ "when ikm.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
|
||||
+ "ikm.id as indikatorId,ikm.namaIndikator as namaIndikator,"
|
||||
+ "lkt.bobot as bobot,lkt.target as target,lkt.capaian as realisasi) "
|
||||
+ "from LogbookKinerja lkt, MapPegawaiJabatanToUnitKerja mj " + "inner join lkt.indikatorKinerja ikm "
|
||||
+ "inner join mj.pegawai pg " + "inner join mj.jabatan jb " + "inner join mj.unitKerjaPegawai uk "
|
||||
+ "inner join mj.subUnitKerjaPegawai sk " + "where lkt.pegawaiId = mj.pegawaiId "
|
||||
+ "and lkt.pegawaiId = pg.id " + "and lkt.jabatanId = mj.jabatanId " + "and lkt.jabatanId = jb.id "
|
||||
+ "and uk.id = sk.unitKerjaId " + "and lkt.statusEnabled is true and lkt.statusVerifikasi is true "
|
||||
+ "and mj.statusEnabled is true " + "and ikm.statusEnabled is true and ikm.statusVerifikasi is true "
|
||||
+ "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and uk.statusEnabled is true "
|
||||
+ "and sk.statusEnabled is true " + "and to_char(lkt.bulan,'yyyy-MM') = :bulan ";
|
||||
|
||||
String cdtUnitKerja = "and uk.id = :unitKerjaId ";
|
||||
|
||||
String cdtSubunitKerja = "and sk.id = :subunitKerjaId ";
|
||||
|
||||
String cdtPegawai = "and pg.id = :pegawaiId ";
|
||||
|
||||
String sortIKI = "order by uk.name, sk.name, pg.namaLengkap";
|
||||
|
||||
@Query(strQryIKI + sortIKI)
|
||||
List<Map<String, Object>> findPenilaianKinerja(@Param("bulan") String bulan);
|
||||
|
||||
@Query(strQryIKI + cdtUnitKerja + sortIKI)
|
||||
List<Map<String, Object>> findPenilaianKinerjaUnitKerja(@Param("bulan") String bulan,
|
||||
@Param("unitKerjaId") Integer idUnitKerja);
|
||||
|
||||
@Query(strQryIKI + cdtUnitKerja + cdtSubunitKerja + sortIKI)
|
||||
List<Map<String, Object>> findPenilaianKinerjaSubunitKerja(@Param("bulan") String bulan,
|
||||
@Param("unitKerjaId") Integer idUnitKerja, @Param("subunitKerjaId") Integer idSubunitKerja);
|
||||
|
||||
@Query(strQryIKI + cdtPegawai + sortIKI)
|
||||
List<Map<String, Object>> findPenilaianKinerjaPegawai(@Param("bulan") String bulan,
|
||||
@Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
@Query(strQryIKI + cdtUnitKerja + cdtSubunitKerja + cdtPegawai + sortIKI)
|
||||
List<Map<String, Object>> findPenilaianKinerjaPegawai(@Param("bulan") String bulan,
|
||||
@Param("unitKerjaId") Integer idUnitKerja, @Param("subunitKerjaId") Integer idSubunitKerja,
|
||||
@Param("pegawaiId") Integer idPegawai);
|
||||
|
||||
}
|
||||
|
||||
@ -1,16 +1,29 @@
|
||||
package com.jasamedika.medifirst2000.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.PagingAndSortingRepository;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.jasamedika.medifirst2000.entities.TabelAcuanIndeksIKI;
|
||||
|
||||
public interface TabelAcuanIndeksIKIDao extends PagingAndSortingRepository<TabelAcuanIndeksIKI, String>{
|
||||
|
||||
@Query("select tabelAcuanIndeksIKI "+
|
||||
"from TabelAcuanIndeksIKI tabelAcuanIndeksIKI ")
|
||||
@Repository("AcuanIndeksIKIDao")
|
||||
public interface TabelAcuanIndeksIKIDao extends PagingAndSortingRepository<TabelAcuanIndeksIKI, String> {
|
||||
|
||||
@Query("select tabelAcuanIndeksIKI " + "from TabelAcuanIndeksIKI tabelAcuanIndeksIKI ")
|
||||
public List<TabelAcuanIndeksIKI> findAllAcuan();
|
||||
|
||||
@Query("select aiki.indeks 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);
|
||||
|
||||
@Query("select new Map(aiki.nilaiBawah as nilaiBawah,aiki.nilaiAtas as nilaiAtas,"
|
||||
+ "aiki.indeks as iki,aiki.kriteria as kriteria) " + "from TabelAcuanIndeksIKI aiki "
|
||||
+ "where aiki.statusEnabled is true " + "order by aiki.indeks")
|
||||
public List<Map<String, Object>> findAllAcuanIndeks();
|
||||
|
||||
}
|
||||
|
||||
@ -38,4 +38,10 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
|
||||
public List<Map<String, Object>> findDetailPasienLogbook(Integer idPegawai, Integer idIndikator, Integer idProduk,
|
||||
String tglPelayanan, Integer idJenisPetugas, Double skor);
|
||||
|
||||
public Map<String, Object> findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan)
|
||||
throws JpaSystemException;
|
||||
|
||||
public List<Map<String, Object>> findRekapPenilaianKinerja(Long bulan, Integer idUnitKerja, Integer idSubunitKerja,
|
||||
Integer idPegawai) throws JpaSystemException;
|
||||
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao;
|
||||
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
|
||||
import com.jasamedika.medifirst2000.dao.PegawaiDao;
|
||||
import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao;
|
||||
import com.jasamedika.medifirst2000.dao.TabelAcuanIndeksIKIDao;
|
||||
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
|
||||
import com.jasamedika.medifirst2000.entities.Jabatan;
|
||||
import com.jasamedika.medifirst2000.entities.LogbookKinerja;
|
||||
@ -89,6 +90,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
@Autowired
|
||||
private IndikatorKinerjaDetailDao indikatorKinerjaDetailDao;
|
||||
|
||||
@Autowired
|
||||
private TabelAcuanIndeksIKIDao tabelAcuanIndeksIKIDao;
|
||||
|
||||
@Override
|
||||
public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
|
||||
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
|
||||
@ -348,11 +352,11 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
}
|
||||
|
||||
if (idJenisIndikator.equals(1)) {
|
||||
result.put("Kuantitas", resByJenisIndikator);
|
||||
result.put("kuantitas", resByJenisIndikator);
|
||||
} else if (idJenisIndikator.equals(2)) {
|
||||
result.put("Kualitas", resByJenisIndikator);
|
||||
result.put("kualitas", resByJenisIndikator);
|
||||
} else if (idJenisIndikator.equals(3)) {
|
||||
result.put("Perilaku", resByJenisIndikator);
|
||||
result.put("perilaku", resByJenisIndikator);
|
||||
}
|
||||
}
|
||||
|
||||
@ -366,10 +370,11 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
return result;
|
||||
}
|
||||
|
||||
public Map<String, Object> findAnggaranRemunerasi(Integer idPegawai, Integer idJabatan) throws JpaSystemException {
|
||||
public Map<String, Object> findAnggaranRemunerasi(Integer idPegawai, Integer idJabatan, String tahun)
|
||||
throws JpaSystemException {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
List<Map<String, Object>> data = anggaranRemunerasiDao.findTahunIniByPegawai(idPegawai, idJabatan);
|
||||
List<Map<String, Object>> data = anggaranRemunerasiDao.findAnggaran(idPegawai, idJabatan, tahun);
|
||||
if (CommonUtil.isNotNullOrEmpty(data) && data.size() > 0) {
|
||||
result = data.get(0);
|
||||
}
|
||||
@ -382,7 +387,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
throws JpaSystemException {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
List<Map<String, Object>> listJenisIndikator = new ArrayList<>();
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat yf = new SimpleDateFormat("yyyy");
|
||||
double totAllPersen = 0.0;
|
||||
double nilaiJabatan = 0.0;
|
||||
double pir = 0.0;
|
||||
@ -398,8 +404,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
kursINA.setDecimalFormatSymbols(formatRp);
|
||||
|
||||
List<Map<String, Object>> rs = logbookKinerjaDao.findLogbookKinerja(idPegawai, idJabatan,
|
||||
df.format(new Date(bulan)));
|
||||
Map<String, Object> anggaran = findAnggaranRemunerasi(idPegawai, idJabatan);
|
||||
mf.format(new Date(bulan)));
|
||||
Map<String, Object> anggaran = findAnggaranRemunerasi(idPegawai, idJabatan, yf.format(new Date(bulan)));
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(rs) && rs.size() > 0) {
|
||||
nilaiJabatan = Double.valueOf(rs.get(0).get("nilaiJabatan").toString());
|
||||
@ -466,25 +472,32 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
listJenisIndikator.add(jenisIndikator);
|
||||
}
|
||||
|
||||
Double iki = tabelAcuanIndeksIKIDao.findIKI(totAllPersen);
|
||||
if (CommonUtil.isNullOrEmpty(iki)) {
|
||||
iki = 0.0;
|
||||
}
|
||||
|
||||
double targetRupiahP1 = nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1;
|
||||
double targetRupiahP2 = nilaiJabatan * Master.Remunerasi.IKU * Master.Remunerasi.IKI_STANDAR * pir
|
||||
* Master.Remunerasi.PERSEN_P2;
|
||||
|
||||
double capaianRupiahP1 = nilaiJabatan * iki * pir * Master.Remunerasi.PERSEN_P1;
|
||||
double capaianRupiahP2 = nilaiJabatan * Master.Remunerasi.IKU * iki * pir * Master.Remunerasi.PERSEN_P2;
|
||||
|
||||
result.put("listJenisIndikator", listJenisIndikator);
|
||||
result.put("rupiahCapaianP1", totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir
|
||||
* Master.Remunerasi.PERSEN_P1);
|
||||
result.put("rupiahCapaianP1Format", kursINA.format(
|
||||
totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1)
|
||||
.toString());
|
||||
|
||||
result.put("plafonP1", kursINA.format(plafonGaji).toString());
|
||||
result.put("rupiahCapaianP2", totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir
|
||||
* Master.Remunerasi.PERSEN_P2);
|
||||
result.put("rupiahCapaianP2Format", kursINA.format(
|
||||
totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P2)
|
||||
.toString());
|
||||
result.put("rupiahTargetP1", targetRupiahP1);
|
||||
result.put("rupiahTargetFormatP1", kursINA.format(targetRupiahP1).toString());
|
||||
result.put("rupiahCapaianP1", capaianRupiahP1);
|
||||
result.put("rupiahCapaianP1Format", kursINA.format(capaianRupiahP1).toString());
|
||||
|
||||
result.put("plafonP2", kursINA.format(plafonInsentif).toString());
|
||||
result.put("rupiahTargetP1", nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1);
|
||||
result.put("rupiahTargetFormatP1", kursINA
|
||||
.format(nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1).toString());
|
||||
result.put("rupiahTargetP2", nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P2);
|
||||
result.put("rupiahTargetFormatP2", kursINA
|
||||
.format(nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P2).toString());
|
||||
result.put("rupiahTargetP2", targetRupiahP2);
|
||||
result.put("rupiahTargetFormatP2", kursINA.format(targetRupiahP2).toString());
|
||||
result.put("rupiahCapaianP2", capaianRupiahP2);
|
||||
result.put("rupiahCapaianP2Format", kursINA.format(capaianRupiahP2).toString());
|
||||
|
||||
result.put("persenCapaian", totAllPersen);
|
||||
result.put("persenCapaianDibulatkan",
|
||||
new BigDecimal(Double.valueOf(totAllPersen)).setScale(2, RoundingMode.HALF_UP));
|
||||
@ -1098,4 +1111,228 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findPenilaianKinerja(Integer idPegawai, Integer idJabatan, Long bulan)
|
||||
throws JpaSystemException {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
df.setRoundingMode(RoundingMode.HALF_UP);
|
||||
|
||||
List<Map<String, Object>> data = logbookKinerjaDao.findPenilaianKinerja(idPegawai, idJabatan,
|
||||
mf.format(new Date(bulan)));
|
||||
|
||||
double tBobot = 0.00;
|
||||
double tHasil = 0.00;
|
||||
for (Integer idJenisIndikator : Arrays.asList(Master.Remunerasi.JENIS_INDIKATOR)) {
|
||||
Map<String, Object> jiData = new HashMap<>();
|
||||
List<Map<String, Object>> jiDetail = new ArrayList<>();
|
||||
double jiBobot = 0.00;
|
||||
double jiHasil = 0.00;
|
||||
for (Map<String, Object> map : data) {
|
||||
if (idJenisIndikator.equals(map.get("jenisIndikatorId"))) {
|
||||
String nilai = df.format(Double.valueOf(map.get("realisasi").toString())
|
||||
/ Double.valueOf(map.get("target").toString()));
|
||||
String hasil = df.format(Double.parseDouble(nilai) * Double.valueOf(map.get("bobot").toString()));
|
||||
map.put("nilai", Double.parseDouble(nilai));
|
||||
map.put("hasil", Double.parseDouble(hasil));
|
||||
jiDetail.add(map);
|
||||
|
||||
jiBobot += Double.valueOf(map.get("bobot").toString());
|
||||
jiHasil += Double.valueOf(map.get("hasil").toString());
|
||||
|
||||
tBobot += Double.valueOf(map.get("bobot").toString());
|
||||
tHasil += Double.valueOf(map.get("hasil").toString());
|
||||
}
|
||||
}
|
||||
jiData.put("detail", jiDetail);
|
||||
jiData.put("stBobot", jiBobot);
|
||||
jiData.put("stHasil", jiHasil);
|
||||
|
||||
if (idJenisIndikator == 1) {
|
||||
result.put("kuantitas", jiData);
|
||||
} else if (idJenisIndikator == 2) {
|
||||
result.put("kualitas", jiData);
|
||||
} else if (idJenisIndikator == 3) {
|
||||
result.put("perilaku", jiData);
|
||||
}
|
||||
}
|
||||
Double iki = tabelAcuanIndeksIKIDao.findIKI(Double.parseDouble(df.format(tHasil)));
|
||||
if (CommonUtil.isNullOrEmpty(iki)) {
|
||||
iki = 0.00;
|
||||
}
|
||||
|
||||
result.put("tBobot", tBobot);
|
||||
result.put("tHasil", Double.parseDouble(df.format(tHasil)));
|
||||
result.put("iki", iki);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findRekapPenilaianKinerja(Long bulan, Integer idUnitKerja, Integer idSubunitKerja,
|
||||
Integer idPegawai) throws JpaSystemException {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<Map<String, Object>> data = new ArrayList<>();
|
||||
List<Map<String, Object>> recapData = new ArrayList<>();
|
||||
List<Integer> listIdUnitKerja = new ArrayList<>();
|
||||
List<Integer> listIdSubunitKerja = new ArrayList<>();
|
||||
List<Integer> listIdPegawai = new ArrayList<>();
|
||||
List<Integer> listIdJabatan = new ArrayList<>();
|
||||
|
||||
DecimalFormatSymbols formatRp = new DecimalFormatSymbols();
|
||||
formatRp.setCurrencySymbol("Rp");
|
||||
formatRp.setMonetaryDecimalSeparator(',');
|
||||
formatRp.setGroupingSeparator('.');
|
||||
|
||||
DecimalFormat kursINA = (DecimalFormat) DecimalFormat.getCurrencyInstance();
|
||||
kursINA.setDecimalFormatSymbols(formatRp);
|
||||
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat yf = new SimpleDateFormat("yyyy");
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
df.setRoundingMode(RoundingMode.HALF_UP);
|
||||
|
||||
List<Map<String, Object>> anggaran = anggaranRemunerasiDao.findAnggaran(yf.format(new Date(bulan)));
|
||||
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao.findAllAcuanIndeks();
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(bulan) && CommonUtil.isNullOrEmpty(idUnitKerja)
|
||||
&& CommonUtil.isNullOrEmpty(idSubunitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
|
||||
data = logbookKinerjaDao.findPenilaianKinerja(mf.format(new Date(bulan)));
|
||||
} else if (CommonUtil.isNotNullOrEmpty(bulan) && CommonUtil.isNotNullOrEmpty(idUnitKerja)
|
||||
&& CommonUtil.isNullOrEmpty(idSubunitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
|
||||
data = logbookKinerjaDao.findPenilaianKinerjaUnitKerja(mf.format(new Date(bulan)), idUnitKerja);
|
||||
} else if (CommonUtil.isNotNullOrEmpty(bulan) && CommonUtil.isNotNullOrEmpty(idUnitKerja)
|
||||
&& CommonUtil.isNotNullOrEmpty(idSubunitKerja) && CommonUtil.isNullOrEmpty(idPegawai)) {
|
||||
data = logbookKinerjaDao.findPenilaianKinerjaSubunitKerja(mf.format(new Date(bulan)), idUnitKerja,
|
||||
idSubunitKerja);
|
||||
} else if (CommonUtil.isNotNullOrEmpty(bulan) && CommonUtil.isNullOrEmpty(idUnitKerja)
|
||||
&& CommonUtil.isNullOrEmpty(idSubunitKerja) && CommonUtil.isNotNullOrEmpty(idPegawai)) {
|
||||
data = logbookKinerjaDao.findPenilaianKinerjaPegawai(mf.format(new Date(bulan)), idPegawai);
|
||||
} else if (CommonUtil.isNotNullOrEmpty(bulan) && CommonUtil.isNotNullOrEmpty(idUnitKerja)
|
||||
&& CommonUtil.isNotNullOrEmpty(idSubunitKerja) && CommonUtil.isNotNullOrEmpty(idPegawai)) {
|
||||
data = logbookKinerjaDao.findPenilaianKinerjaPegawai(mf.format(new Date(bulan)), idUnitKerja,
|
||||
idSubunitKerja, idPegawai);
|
||||
}
|
||||
|
||||
for (Map<String, Object> map : data) {
|
||||
if (!listIdUnitKerja.contains(map.get("unitKerjaId"))) {
|
||||
listIdUnitKerja.add(Integer.valueOf(map.get("unitKerjaId").toString()));
|
||||
}
|
||||
if (!listIdSubunitKerja.contains(map.get("subunitKerjaId"))) {
|
||||
listIdSubunitKerja.add(Integer.valueOf(map.get("subunitKerjaId").toString()));
|
||||
}
|
||||
if (!listIdPegawai.contains(map.get("pegawaiId"))) {
|
||||
listIdPegawai.add(Integer.valueOf(map.get("pegawaiId").toString()));
|
||||
}
|
||||
if (!listIdJabatan.contains(map.get("jabatanId"))) {
|
||||
listIdJabatan.add(Integer.valueOf(map.get("jabatanId").toString()));
|
||||
}
|
||||
}
|
||||
|
||||
for (Integer idUK : listIdUnitKerja) {
|
||||
for (Integer idSK : listIdSubunitKerja) {
|
||||
for (Integer idP : listIdPegawai) {
|
||||
for (Integer idJ : listIdJabatan) {
|
||||
Map<String, Object> rsMap = new HashMap<>();
|
||||
double tHasil = 0.00;
|
||||
for (Integer idJI : Arrays.asList(Master.Remunerasi.JENIS_INDIKATOR)) {
|
||||
double jiBobot = 0.00;
|
||||
double jiHasil = 0.00;
|
||||
for (Map<String, Object> map : data) {
|
||||
if (idUK.equals(map.get("unitKerjaId")) && idSK.equals(map.get("subunitKerjaId"))
|
||||
&& idP.equals(map.get("pegawaiId")) && idJ.equals(map.get("jabatanId"))
|
||||
&& idJI.equals(map.get("jenisIndikatorId"))) {
|
||||
String nilai = df.format(Double.valueOf(map.get("realisasi").toString())
|
||||
/ Double.valueOf(map.get("target").toString()));
|
||||
String hasil = df.format(
|
||||
Double.parseDouble(nilai) * Double.valueOf(map.get("bobot").toString()));
|
||||
|
||||
jiBobot += Double.valueOf(map.get("bobot").toString());
|
||||
jiHasil += Double.parseDouble(hasil);
|
||||
tHasil += Double.parseDouble(hasil);
|
||||
|
||||
rsMap.put("unitKerjaId", map.get("unitKerjaId"));
|
||||
rsMap.put("unitKerja", map.get("unitKerja"));
|
||||
rsMap.put("subunitKerjaId", map.get("subunitKerjaId"));
|
||||
rsMap.put("subunitKerja", map.get("subunitKerja"));
|
||||
rsMap.put("pegawaiId", map.get("pegawaiId"));
|
||||
rsMap.put("namaLengkap", map.get("namaLengkap"));
|
||||
rsMap.put("jabatanId", map.get("jabatanId"));
|
||||
rsMap.put("namaJabatan", map.get("namaJabatan"));
|
||||
rsMap.put("nilaiJabatan", map.get("nilaiJabatan"));
|
||||
}
|
||||
}
|
||||
if (idJI == 1) {
|
||||
rsMap.put("bobotKuantitas", jiBobot);
|
||||
rsMap.put("hasilKuantitas", jiHasil);
|
||||
} else if (idJI == 2) {
|
||||
rsMap.put("bobotKualitas", jiBobot);
|
||||
rsMap.put("hasilKualitas", jiHasil);
|
||||
} else if (idJI == 3) {
|
||||
rsMap.put("bobotPerilaku", jiBobot);
|
||||
rsMap.put("hasilPerilaku", jiHasil);
|
||||
}
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(rsMap.get("unitKerjaId"))
|
||||
&& CommonUtil.isNotNullOrEmpty(rsMap.get("subunitKerjaId"))
|
||||
&& CommonUtil.isNotNullOrEmpty(rsMap.get("pegawaiId"))
|
||||
&& CommonUtil.isNotNullOrEmpty(rsMap.get("jabatanId"))
|
||||
&& CommonUtil.isNotNullOrEmpty(rsMap.get("nilaiJabatan"))) {
|
||||
Double iki = 0.00;
|
||||
String kriteria = "";
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) <= Double
|
||||
.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
rsMap.put("totalHasil", Double.parseDouble(df.format(tHasil)));
|
||||
rsMap.put("iki", iki);
|
||||
rsMap.put("kriteria", kriteria);
|
||||
|
||||
recapData.add(rsMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (Map<String, Object> rd : recapData) {
|
||||
for (Map<String, Object> ag : anggaran) {
|
||||
if (rd.get("pegawaiId").equals(ag.get("pegawaiId"))
|
||||
&& rd.get("jabatanId").equals(ag.get("jabatanId"))) {
|
||||
rd.put("pir", ag.get("pir"));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
double p1 = Double.valueOf(rd.get("nilaiJabatan").toString()) * Double.valueOf(rd.get("iki").toString())
|
||||
* Double.valueOf(rd.get("pir").toString()) * Master.Remunerasi.PERSEN_P1;
|
||||
double p2 = Double.valueOf(rd.get("nilaiJabatan").toString()) * Double.valueOf(rd.get("iki").toString())
|
||||
* Master.Remunerasi.IKU * Double.valueOf(rd.get("pir").toString()) * Master.Remunerasi.PERSEN_P2;
|
||||
|
||||
rd.put("p1", p1);
|
||||
rd.put("p2", p2);
|
||||
|
||||
rd.put("rpP1", kursINA.format(p1).toString());
|
||||
rd.put("rpP2", kursINA.format(p2).toString());
|
||||
|
||||
result.add(rd);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -688,5 +688,6 @@
|
||||
<mapping class="com.jasamedika.medifirst2000.entities.BobotJenisIndikator"/>
|
||||
<mapping class="com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail"/>
|
||||
<mapping class="com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter"/>
|
||||
<mapping class="com.jasamedika.medifirst2000.entities.TabelAcuanIndeksIKI"/>
|
||||
</session-factory>
|
||||
</hibernate-configuration>
|
||||
|
||||
@ -1178,4 +1178,48 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-penilaian-kinerja-individu", method = RequestMethod.GET)
|
||||
public ResponseEntity<Map<String, Object>> getPenilaianKinerjaIndividu(HttpServletRequest request,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
|
||||
@RequestParam(value = "jabatanId", required = true) Integer idJabatan,
|
||||
@RequestParam(value = "bulan", required = true) Long bulan) {
|
||||
try {
|
||||
Map<String, Object> result = logbookKinerjaService.findPenilaianKinerja(idPegawai, idJabatan, bulan);
|
||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
|
||||
} catch (ServiceVOException sve) {
|
||||
LOGGER.error("Got exception {} when get penilaian kinerja individu", sve.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
|
||||
} catch (JpaSystemException jse) {
|
||||
LOGGER.error("Got exception {} when get penilaian kinerja individu", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-rekap-penilaian-kinerja-individu", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getRekapPenilaianKinerjaIndividu(HttpServletRequest request,
|
||||
@RequestParam(value = "bulan", required = true) Long bulan,
|
||||
@RequestParam(value = "unitKerjaId", required = false) Integer idUnitKerja,
|
||||
@RequestParam(value = "subunitKerjaId", required = false) Integer idSubunitKerja,
|
||||
@RequestParam(value = "pegawaiId", required = false) Integer idPegawai) {
|
||||
try {
|
||||
List<Map<String, Object>> result = logbookKinerjaService.findRekapPenilaianKinerja(bulan, idUnitKerja,
|
||||
idSubunitKerja, idPegawai);
|
||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
|
||||
} catch (ServiceVOException sve) {
|
||||
LOGGER.error("Got exception {} when get rekapitulasi penilaian kinerja individu", sve.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
|
||||
} catch (JpaSystemException jse) {
|
||||
LOGGER.error("Got exception {} when get rekapitulasi penilaian kinerja individu", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user