From af36a7c45b48565683eb875d315a2a1d5ef65d12 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 23 Mar 2021 14:22:29 +0700 Subject: [PATCH] - perbaikan get data kontrak kinerja - perbaikan simpan mapping indikator banyak jabatan --- .../medifirst2000/dao/LogbookKinerjaDao.java | 69 +++++---------- .../service/LogbookKinerjaService.java | 7 +- .../IndikatorKinerjaJabatanServiceImpl.java | 8 +- .../impl/LogbookKinerjaServiceImpl.java | 88 ++++++++++++------- .../IkiDanRemunerasiController.java | 10 +-- 5 files changed, 90 insertions(+), 92 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 817eed2a..b0bf5892 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 @@ -37,58 +37,33 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findIndikatorByJabatan(@Param("jabatanId") Integer idJabatan); - String pegawaiLogbook = "and lk.pegawaiId = :pegawaiId "; - - String jabatanLogbook = "and lk.jabatanId = :jabatanId "; - - String bulanLogbook = "and to_char(lk.bulan,'yyyy-MM') = :bulan "; - - String sortIndikator = "order by ik.jenisIndikator, ik.namaIndikator"; - - @Query(strKontrakKinerja + sortIndikator) - List> findKontrakKinerja(); - - @Query(strKontrakKinerja + pegawaiLogbook + sortIndikator) - List> findKontrakKinerjaByPegawai(@Param("pegawaiId") Integer idPegawai); - - @Query(strKontrakKinerja + jabatanLogbook + sortIndikator) - List> findKontrakKinerjaByJabatan(@Param("jabatanId") Integer idJabatan); - - @Query(strKontrakKinerja + bulanLogbook + sortIndikator) - List> findKontrakKinerjaByBulan(@Param("bulan") String bulan); - - @Query(strKontrakKinerja + pegawaiLogbook + jabatanLogbook + sortIndikator) - List> findKontrakKinerjaByPegawaiJabatan(@Param("pegawaiId") Integer idPegawai, - @Param("jabatanId") Integer idJabatan); - - @Query(strKontrakKinerja + pegawaiLogbook + bulanLogbook + sortIndikator) - List> findKontrakKinerjaByPegawaiBulan(@Param("pegawaiId") Integer idPegawai, - @Param("bulan") String bulan); - - @Query(strKontrakKinerja + jabatanLogbook + bulanLogbook + sortIndikator) - List> findKontrakKinerjaByJabatanBulan(@Param("jabatanId") Integer idJabatan, - @Param("bulan") String bulan); - - @Query(strKontrakKinerja + pegawaiLogbook + jabatanLogbook + bulanLogbook + sortIndikator) - List> findKontrakKinerjaByAll(@Param("pegawaiId") Integer idPegawai, + @Query("select new Map(lkh.noRec as noRec,ikm.jenisIndikator as jenisIndikatorId," + + "ikm.id as indikatorId,ikm.namaIndikator as namaIndikator," + + "si.id as satuanId,si.satuanIndikator as satuanIndikator," + "lkh.target as target,lkh.bobot as bobot," + + "lkh.statusVerifikasi as isStatusVerifikasi," + + "(case when lkh.statusVerifikasi is true then 'Terverifikasi' " + + "else 'Belum Terverifikasi' end) as statusVerifikasi) " + "from LogbookKinerja lkh " + + "inner join lkh.indikatorKinerja ikm " + "inner join ikm.satuanIndikator si " + + "where lkh.statusEnabled is true " + "and ikm.statusEnabled is true " + "and si.statusEnabled is true " + + "and lkh.pegawaiId = :pegawaiId " + "and lkh.jabatanId = :jabatanId " + + "and to_char(lkh.bulan,'yyyy-MM') = :bulan " + "order by ikm.jenisIndikator, ikm.namaIndikator") + List> findKontrakKinerja(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan); @Query("select new Map(lk.noRec as noRec,ik.namaIndikator as namaIndikator) " + "from LogbookKinerja lk " + "inner join lk.indikatorKinerja ik " + "where ik.id = :indikatorId") - List> findKontrakKinerjaByIndikator(@Param("indikatorId") Integer idIndikator); + List> findKontrakKinerja(@Param("indikatorId") Integer idIndikator); @Query("select new Map(lk.noRec as noRec," + "pg.id as idPegawai,pg.namaLengkap as namaPegawai," + "jb.id as idJabatan,jb.namaJabatan as namaJabatan," diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java index eed7f664..12d60d2f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java @@ -21,12 +21,11 @@ public interface LogbookKinerjaService extends BaseVoService> findDupKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan, Integer idIndikator) throws JpaSystemException; - List> findKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan) - throws JpaSystemException; + Map findKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException; + + List> findKontrakKinerja(Integer idIndikator) throws JpaSystemException; List> findLogbookKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException; - List> findKontrakKinerja(Integer idIndikator) throws JpaSystemException; - } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java index 64aa1226..e7c87c47 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java @@ -186,7 +186,7 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem } if (CommonUtil.isNotNullOrEmpty(listUpdate) && CommonUtil.isNotNullOrEmpty(resultListVO)) { resultListVO.addAll(updateAll(listUpdate, idLoginUser)); - } else { + } else if (CommonUtil.isNotNullOrEmpty(listUpdate) && CommonUtil.isNullOrEmpty(resultListVO)) { resultListVO = updateAll(listUpdate, idLoginUser); } @@ -219,8 +219,10 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem /** * - * @param listVO : mapping indikator yang akan dihapus - * @param idLoginUser : identitas user saat login + * @param listVO + * : mapping indikator yang akan dihapus + * @param idLoginUser + * : identitas user saat login * @return Daftar identitas transaksi mapping indikator * @throws JpaSystemException * @throws ServiceVOException 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 68b75b67..8ffd24c0 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 @@ -234,37 +234,66 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb } @Override - public List> findKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan) + public Map findKontrakKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException { - List> result = new ArrayList<>(); + Map result = new HashMap<>(); + List> listRes = new ArrayList<>(); + List listIdIndikator = new ArrayList<>(); DateFormat df = new SimpleDateFormat("yyyy-MM"); - if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(idJabatan) - && CommonUtil.isNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerja(); - } else if (CommonUtil.isNotNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(idJabatan) - && CommonUtil.isNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByPegawai(idPegawai); - } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(idJabatan) - && CommonUtil.isNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByJabatan(idJabatan); - } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(idJabatan) - && CommonUtil.isNotNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByBulan(df.format(new Date(bulan))); - } else if (CommonUtil.isNotNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(idJabatan) - && CommonUtil.isNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByPegawaiJabatan(idPegawai, idJabatan); - } else if (CommonUtil.isNotNullOrEmpty(idPegawai) && CommonUtil.isNullOrEmpty(idJabatan) - && CommonUtil.isNotNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByPegawaiBulan(idPegawai, df.format(new Date(bulan))); - } else if (CommonUtil.isNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(idJabatan) - && CommonUtil.isNotNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByJabatanBulan(idJabatan, df.format(new Date(bulan))); - } else if (CommonUtil.isNotNullOrEmpty(idPegawai) && CommonUtil.isNotNullOrEmpty(idJabatan) - && CommonUtil.isNotNullOrEmpty(bulan)) { - result = logbookKinerjaDao.findKontrakKinerjaByAll(idPegawai, idJabatan, df.format(new Date(bulan))); + List> listMap = logbookKinerjaDao.findIndikatorByJabatan(idJabatan); + for (Map map : listMap) { + if (!listIdIndikator.contains(map.get("indikatorId"))) { + listIdIndikator.add(Integer.valueOf(map.get("indikatorId").toString())); + listRes.add(map); + } } + List> data = logbookKinerjaDao.findKontrakKinerja(idPegawai, idJabatan, + df.format(new Date(bulan))); + for (Map res : listRes) { + for (Map map : data) { + if (res.get("indikatorId").equals(map.get("indikatorId"))) { + res.put("noRec", map.get("noRec")); + res.put("target", map.get("target")); + res.put("bobot", map.get("bobot")); + res.put("isStatusVerifikasi", map.get("isStatusVerifikasi")); + res.put("statusVerifikasi", map.get("statusVerifikasi")); + } + } + if (CommonUtil.isNullOrEmpty(res.get("noRec"))) { + res.put("noRec", null); + res.put("target", null); + res.put("bobot", null); + res.put("isStatusVerifikasi", null); + res.put("statusVerifikasi", null); + } + } + + for (Integer idJenisIndikator : Arrays.asList(Master.Remunerasi.JENIS_INDIKATOR)) { + List> resByJenisIndikator = new ArrayList<>(); + for (Map res : listRes) { + if (res.get("jenisIndikatorId").equals(idJenisIndikator)) { + resByJenisIndikator.add(res); + } + } + + if (idJenisIndikator.equals(1)) { + result.put("Kuantitas", resByJenisIndikator); + } else if (idJenisIndikator.equals(2)) { + result.put("Kualitas", resByJenisIndikator); + } else if (idJenisIndikator.equals(3)) { + result.put("Perilaku", resByJenisIndikator); + } + } + + return result; + } + + @Override + public List> findKontrakKinerja(Integer idIndikator) throws JpaSystemException { + List> result = logbookKinerjaDao.findKontrakKinerja(idIndikator); + return result; } @@ -292,11 +321,4 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } - @Override - public List> findKontrakKinerja(Integer idIndikator) throws JpaSystemException { - List> result = logbookKinerjaDao.findKontrakKinerjaByIndikator(idIndikator); - - return result; - } - } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 50b82128..3f1509a8 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -570,12 +570,12 @@ public class IkiDanRemunerasiController extends LocaleController>> getKontrakKinerja(HttpServletRequest request, - @RequestParam(value = "pegawaiId", required = false) Integer idPegawai, - @RequestParam(value = "jabatanId", required = false) Integer idJabatan, - @RequestParam(value = "bulan", required = false) Long bulan) throws ParseException { + public ResponseEntity> getKontrakKinerja(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai, + @RequestParam(value = "jabatanId", required = true) Integer idJabatan, + @RequestParam(value = "bulan", required = true) Long bulan) throws ParseException { try { - List> result = logbookKinerjaService.findKontrakKinerja(idPegawai, idJabatan, bulan); + Map result = logbookKinerjaService.findKontrakKinerja(idPegawai, idJabatan, bulan); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);