- pemisahan label rupiah capaian untuk info syarat dan ketentuan P1 dan P2
- pembuatan service daftar indikator usulan baru di kontrak kinerja - pembuatan formula indikator dengan satuan yang hitungannya harus rata-rata - penambahan informasi tanggal batas akhir verifikasi catatan kegiatan harian
This commit is contained in:
parent
5d76c8e23c
commit
cb05042a90
@ -252,6 +252,9 @@ public class Master {
|
||||
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_P1 = 0.3;
|
||||
public static final Double PERSEN_P2 = 0.7;
|
||||
}
|
||||
|
||||
public static final class Ruangan {
|
||||
@ -267,6 +270,10 @@ public class Master {
|
||||
public static final int RADIOLOGI = 35;
|
||||
}
|
||||
|
||||
public static final class SatuanIndikator {
|
||||
public static final Integer[] RATA_RATA = { 11743 };
|
||||
}
|
||||
|
||||
public static final class ShiftKerja {
|
||||
public static final Integer[] HOLIDAY_INCLUDED = { 7, 13, 67, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
|
||||
83 };
|
||||
|
||||
@ -5,6 +5,7 @@ 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.AnggaranRemunerasi;
|
||||
@ -19,4 +20,15 @@ public interface AnggaranRemunerasiDao extends PagingAndSortingRepository<Anggar
|
||||
+ "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 "
|
||||
+ "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);
|
||||
|
||||
}
|
||||
|
||||
@ -59,4 +59,13 @@ public interface IndikatorKinerjaJabatanDao extends PagingAndSortingRepository<I
|
||||
List<Map<String, Object>> findDupMap(@Param("indikatorId") Integer idIndikator,
|
||||
@Param("jabatanId") Integer idJabatan, @Param("tglBerlaku") Date tglBerlaku);
|
||||
|
||||
@Query("select distinct new Map(ikm.id as id,ikm.namaIndikator as namaIndikator,jb.levelJabatan as levelJabatan) "
|
||||
+ "from IndikatorKinerjaJabatan ikt " + "inner join ikt.indikatorKinerja ikm "
|
||||
+ "inner join ikt.jabatan jb " + "where ikt.statusEnabled is true " + "and ikm.statusEnabled is true "
|
||||
+ "and jb.statusEnabled is true "
|
||||
+ "and to_char(ikt.tanggalMulaiBerlaku,'yyyy-MM') <= to_char(now(),'yyyy-MM') "
|
||||
+ "and ikm.jenisIndikator = :jenisIndikator " + "and jb.unitKerjaId = :unitKerjaId")
|
||||
List<Map<String, Object>> findIndikatorByUnit(@Param("jenisIndikator") Integer jenisIndikator,
|
||||
@Param("unitKerjaId") Integer idUnitKerja);
|
||||
|
||||
}
|
||||
|
||||
@ -31,4 +31,12 @@ public interface LogbookKinerjaDetailDao extends PagingAndSortingRepository<Logb
|
||||
List<Map<String, Object>> findWorkingRecord(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan);
|
||||
|
||||
@Query("select new Map(lkd.logbookIndikatorId as logbookId,avg(lkd.capaian) as avgCapaian,ikm.satuanIndikatorId as satuanId) "
|
||||
+ "from LogbookKinerjaDetail lkd " + "inner join lkd.logbookKinerja lk "
|
||||
+ "inner join lk.indikatorKinerja ikm " + "where lkd.statusEnabled is true "
|
||||
+ "and lk.statusEnabled is true " + "and ikm.statusEnabled is true " + "and lk.noRec = :noRec "
|
||||
+ "and ikm.satuanIndikatorId in (:listSatuanId) " + "group by lkd.logbookIndikatorId")
|
||||
List<Map<String, Object>> findAvgCapaianByKontrak(@Param("noRec") String noRec,
|
||||
@Param("listSatuanId") List<Integer> listIdSatuan);
|
||||
|
||||
}
|
||||
|
||||
@ -22,4 +22,7 @@ public interface IndikatorKinerjaJabatanService
|
||||
public List<Map<String, Object>> findDupMap(Integer idIndikator, Integer idJabatan, Long tglBerlaku)
|
||||
throws JpaSystemException;
|
||||
|
||||
public List<Map<String, Object>> findIndikatorByUnit(Integer jenisIndikator, Integer idUnitKerja,
|
||||
Integer levelJabatan) throws JpaSystemException;
|
||||
|
||||
}
|
||||
|
||||
@ -3,14 +3,17 @@ package com.jasamedika.medifirst2000.service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
|
||||
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail;
|
||||
import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO;
|
||||
|
||||
public interface LogbookKinerjaDetailService
|
||||
extends BaseVoService<LogbookKinerjaDetail, LogbookKinerjaDetailVO, String> {
|
||||
|
||||
List<Map<String, Object>> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan);
|
||||
|
||||
List<Map<String, Object>> findAksesPegawai(Integer idPegawai);
|
||||
public List<Map<String, Object>> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan)
|
||||
throws JpaSystemException;
|
||||
|
||||
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai) throws JpaSystemException;
|
||||
|
||||
}
|
||||
|
||||
@ -394,4 +394,37 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findIndikatorByUnit(Integer jenisIndikator, Integer idUnitKerja,
|
||||
Integer levelJabatan) throws JpaSystemException {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<Integer> listIdIndikator = new ArrayList<>();
|
||||
|
||||
List<Map<String, Object>> data = indikatorKinerjaJabatanDao.findIndikatorByUnit(jenisIndikator, idUnitKerja);
|
||||
|
||||
if (levelJabatan > 1) {
|
||||
for (Map<String, Object> map : data) {
|
||||
if (map.get("levelJabatan").equals(levelJabatan) || map.get("levelJabatan").equals(levelJabatan - 1)) {
|
||||
if (!listIdIndikator.contains(map.get("id"))) {
|
||||
listIdIndikator.add(Integer.valueOf(map.get("id").toString()));
|
||||
map.remove("levelJabatan");
|
||||
result.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (Map<String, Object> map : data) {
|
||||
if (map.get("levelJabatan").equals(levelJabatan)) {
|
||||
if (!listIdIndikator.contains(map.get("id"))) {
|
||||
listIdIndikator.add(Integer.valueOf(map.get("id").toString()));
|
||||
map.remove("levelJabatan");
|
||||
result.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,10 @@ package com.jasamedika.medifirst2000.service.impl;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
@ -44,6 +48,10 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
LogbookKinerjaDetail logbookKinerjaDetail = logbookKinerjaDetailConverter.transferVOToModel(vo,
|
||||
new LogbookKinerjaDetail());
|
||||
|
||||
/**
|
||||
* menghitung capaian indikator satuan yang harus dihitung secara
|
||||
* akumulatif
|
||||
*/
|
||||
if (vo.getStatusEnabled() && vo.getStatusVerifikasi()) {
|
||||
logbookKinerja.setCapaian(logbookKinerja.getCapaian() + vo.getCapaian());
|
||||
}
|
||||
@ -53,6 +61,24 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
logbookKinerjaDao.save(logbookKinerja);
|
||||
LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetail);
|
||||
|
||||
/**
|
||||
* menghitung capaian indikator satuan yang harus dihitung secara
|
||||
* rata-rata
|
||||
*/
|
||||
if (CommonUtil.isNotNullOrEmpty(resultModel)) {
|
||||
List<Map<String, Object>> dataSatuanRatarata = logbookKinerjaDetailDao.findAvgCapaianByKontrak(
|
||||
vo.getLogbookKinerja().getNoRec(), Arrays.asList(Master.SatuanIndikator.RATA_RATA));
|
||||
if (CommonUtil.isNotNullOrEmpty(dataSatuanRatarata)) {
|
||||
List<LogbookKinerja> models = new ArrayList<>();
|
||||
for (Map<String, Object> map : dataSatuanRatarata) {
|
||||
LogbookKinerja model = logbookKinerjaDao.findOne(map.get("logbookId").toString());
|
||||
model.setCapaian(Double.valueOf(map.get("avgCapaian").toString()));
|
||||
models.add(model);
|
||||
}
|
||||
logbookKinerjaDao.save(models);
|
||||
}
|
||||
}
|
||||
|
||||
LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO();
|
||||
resultVO = logbookKinerjaDetailConverter.transferModelToVO(resultModel, resultVO);
|
||||
|
||||
@ -64,6 +90,10 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(vo.getLogbookKinerja().getNoRec());
|
||||
LogbookKinerjaDetail logbookKinerjaDetailLama = logbookKinerjaDetailDao.findOne(vo.getNoRec());
|
||||
|
||||
/**
|
||||
* menghitung indikator capaian satuan yang harus dihitung secara
|
||||
* akumulatif
|
||||
*/
|
||||
if (!vo.getStatusEnabled() && !vo.getStatusVerifikasi()) {
|
||||
logbookKinerja.setCapaian(logbookKinerja.getCapaian() - vo.getCapaian());
|
||||
} else if (vo.getStatusEnabled() && vo.getStatusVerifikasi()) {
|
||||
@ -76,10 +106,28 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
logbookKinerjaDetailBaru.setLogbookKinerja(logbookKinerja);
|
||||
|
||||
logbookKinerjaDao.save(logbookKinerja);
|
||||
LogbookKinerjaDetail resutlModel = logbookKinerjaDetailDao.save(logbookKinerjaDetailBaru);
|
||||
LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetailBaru);
|
||||
|
||||
/**
|
||||
* menghitung capaian indikator satuan yang harus dihitung secara
|
||||
* rata-rata
|
||||
*/
|
||||
if (CommonUtil.isNotNullOrEmpty(resultModel)) {
|
||||
List<Map<String, Object>> dataSatuanRatarata = logbookKinerjaDetailDao.findAvgCapaianByKontrak(
|
||||
vo.getLogbookKinerja().getNoRec(), Arrays.asList(Master.SatuanIndikator.RATA_RATA));
|
||||
if (CommonUtil.isNotNullOrEmpty(dataSatuanRatarata)) {
|
||||
List<LogbookKinerja> models = new ArrayList<>();
|
||||
for (Map<String, Object> map : dataSatuanRatarata) {
|
||||
LogbookKinerja model = logbookKinerjaDao.findOne(map.get("logbookId").toString());
|
||||
model.setCapaian(Double.valueOf(map.get("avgCapaian").toString()));
|
||||
models.add(model);
|
||||
}
|
||||
logbookKinerjaDao.save(models);
|
||||
}
|
||||
}
|
||||
|
||||
LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO();
|
||||
resultVO = logbookKinerjaDetailConverter.transferModelToVO(resutlModel, resultVO);
|
||||
resultVO = logbookKinerjaDetailConverter.transferModelToVO(resultModel, resultVO);
|
||||
|
||||
return resultVO;
|
||||
}
|
||||
@ -121,14 +169,17 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
|
||||
String sort, String dir) {
|
||||
String sort, String dir) throws JpaSystemException {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan) {
|
||||
public List<Map<String, Object>> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan)
|
||||
throws JpaSystemException {
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM");
|
||||
LocalDateTime tglLimitVerif = LocalDateTime
|
||||
.of(LocalDate.parse(df.format(new Date(bulan)) + "-04").plusMonths(1), LocalTime.MAX);
|
||||
|
||||
List<Map<String, Object>> result = logbookKinerjaDetailDao.findWorkingRecord(idPegawai, idJabatan,
|
||||
df.format(new Date(bulan)));
|
||||
@ -136,6 +187,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
Map<String, Object> logbook = new HashMap<String, Object>();
|
||||
logbook.put("noRec", map.get("logbookNoRec"));
|
||||
map.put("logbookKinerja", logbook);
|
||||
map.put("tglBatasAkhirVerif", Date.from(tglLimitVerif.atZone(ZoneId.systemDefault()).toInstant()));
|
||||
map.remove("logbookNoRec");
|
||||
}
|
||||
|
||||
@ -143,7 +195,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai) {
|
||||
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai) throws JpaSystemException {
|
||||
List<Map<String, Object>> result = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai,
|
||||
Arrays.asList(Master.KategoryPegawai.PURNA_WAKTU));
|
||||
|
||||
|
||||
@ -318,10 +318,10 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
return result;
|
||||
}
|
||||
|
||||
public Map<String, Object> findAnggaranRemunerasi() throws JpaSystemException {
|
||||
public Map<String, Object> findAnggaranRemunerasi(Integer idPegawai, Integer idJabatan) throws JpaSystemException {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
List<Map<String, Object>> data = anggaranRemunerasiDao.findTahunIni();
|
||||
List<Map<String, Object>> data = anggaranRemunerasiDao.findTahunIniByPegawai(idPegawai, idJabatan);
|
||||
result = data.get(0);
|
||||
|
||||
return result;
|
||||
@ -345,9 +345,10 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
|
||||
List<Map<String, Object>> rs = logbookKinerjaDao.findLogbookKinerja(idPegawai, idJabatan,
|
||||
df.format(new Date(bulan)));
|
||||
Map<String, Object> anggaran = findAnggaranRemunerasi(idPegawai, idJabatan);
|
||||
|
||||
double nilaiJabatan = Double.valueOf(rs.get(0).get("nilaiJabatan").toString());
|
||||
double pir = Double.valueOf(findAnggaranRemunerasi().get("pir").toString());
|
||||
double pir = Double.valueOf(anggaran.get("pir").toString());
|
||||
|
||||
for (String ji : Arrays.asList(Master.JENIS_INDIKATOR)) {
|
||||
double hasil = 0.0;
|
||||
@ -393,6 +394,18 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
result.put("rupiahCapaian", totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir);
|
||||
result.put("rupiahCapaianFormat",
|
||||
kursINA.format(totAllPersen / 100.0 * nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir).toString());
|
||||
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(Double.valueOf(anggaran.get("plafonGaji").toString())).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("plafonP2", kursINA.format(Double.valueOf(anggaran.get("plafonInsentif").toString())).toString());
|
||||
result.put("rupiahTarget", nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir);
|
||||
result.put("rupiahTargetFormat", kursINA.format(nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir).toString());
|
||||
result.put("persenCapaian", totAllPersen);
|
||||
|
||||
@ -788,6 +788,28 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/daftar-indikator-di-unit-kerja", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getDaftarIndikatorDiUnitKerja(HttpServletRequest request,
|
||||
@RequestParam(value = "jenisIndikator", required = true) Integer jenisIndikator,
|
||||
@RequestParam(value = "unitKerjaId", required = true) Integer idUnitKerja,
|
||||
@RequestParam(value = "levelJabatan", required = true) Integer levelJabatan) throws ParseException {
|
||||
try {
|
||||
List<Map<String, Object>> result = indikatorKinerjaJabatanService.findIndikatorByUnit(jenisIndikator,
|
||||
idUnitKerja, levelJabatan);
|
||||
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 daftar indikator di unit kerja", 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 daftar indikator di unit kerja", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-duplicate-kontrak-kinerja", method = RequestMethod.GET)
|
||||
public ResponseEntity<List<Map<String, Object>>> getDuplicateKontrakKinerja(HttpServletRequest request,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user