diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/EvaluasiJabatanDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/EvaluasiJabatanDao.java index 1a3c6b17..e53a18a3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/EvaluasiJabatanDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/EvaluasiJabatanDao.java @@ -48,7 +48,7 @@ public interface EvaluasiJabatanDao extends PagingAndSortingRepository> findAllEvaluasiJabatan(); @Query("select distinct pg.id " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " 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 b7c7962d..a045659c 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 @@ -80,4 +80,26 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findLogbookKinerja(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("bulan") String bulan); + @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb " + + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + + "and pg.id = :pegawaiId") + List> findAksesPegawaiByStaf(@Param("pegawaiId") Integer idPegawai); + + @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap) " + + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mja " + "inner join mjp.pegawai pgb " + + "inner join mjp.atasanLangsung pg " + "inner join mja.jabatan jb " + + "where mjp.atasanLangsungId = mja.pegawaiId " + "and mja.pegawaiId = pg.id " + + "and mjp.statusEnabled is true " + "and mja.statusEnabled is true " + "and pgb.statusEnabled is true " + + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId") + List> findAksesPegawaiByAtasan(@Param("pegawaiId") Integer idPegawai); + + @Query("select distinct new Map(pgb.id as id,pgb.namaLengkap as namaLengkap) " + + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mjn " + "inner join mjp.pegawai pgb " + + "inner join mjp.pejabatPenilai pg " + "inner join mjn.jabatan jb " + + "where mjp.pejabatPenilaiId = mjn.pegawaiId " + "and mjn.pegawaiId = pg.id " + + "and mjp.statusEnabled is true " + "and mjn.statusEnabled is true " + "and pgb.statusEnabled is true " + + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId") + List> findAksesPegawaiByPenilai(@Param("pegawaiId") Integer idPegawai); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailService.java index c04c2c88..32eeba7d 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaDetailService.java @@ -10,5 +10,7 @@ public interface LogbookKinerjaDetailService extends BaseVoService { List> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan); + + List> findAksesPegawai(Integer idPegawai); } 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 80dd756d..d16c8cf1 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 @@ -26,5 +26,7 @@ public interface LogbookKinerjaService extends BaseVoService> findKontrakKinerja(Integer idIndikator) throws JpaSystemException; Map findLogbookKinerja(Integer idPegawai, Integer idJabatan, Long bulan) throws JpaSystemException; + + List> findAksesPegawai(Integer idPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java index b619aaa2..893df6ca 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java @@ -3,6 +3,7 @@ package com.jasamedika.medifirst2000.service.impl; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -139,4 +140,15 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement return result; } + @Override + public List> findAksesPegawai(Integer idPegawai) { + List> result = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai); + + if (CommonUtil.isNotNullOrEmpty(result)) { + result.sort(Comparator.comparing(m -> (String) m.get("namaLengkap"), String.CASE_INSENSITIVE_ORDER)); + } + + return result; + } + } 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 fa766d73..c2884278 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 @@ -8,6 +8,7 @@ import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -389,4 +390,38 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + @Override + public List> findAksesPegawai(Integer idPegawai) { + List> result = new ArrayList<>(); + + List> aksesByStaf = logbookKinerjaDao.findAksesPegawaiByStaf(idPegawai); + List> aksesByAtasan = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai); + List> aksesByPenilai = logbookKinerjaDao.findAksesPegawaiByPenilai(idPegawai); + + if (CommonUtil.isNotNullOrEmpty(aksesByStaf)) { + for (Map map : aksesByStaf) { + map.put("isModifAkses", false); + } + result.addAll(aksesByStaf); + } + if (CommonUtil.isNotNullOrEmpty(aksesByAtasan)) { + for (Map map : aksesByAtasan) { + map.put("isModifAkses", true); + } + result.addAll(aksesByAtasan); + } + if (CommonUtil.isNotNullOrEmpty(aksesByPenilai)) { + for (Map map : aksesByPenilai) { + map.put("isModifAkses", false); + } + result.addAll(aksesByPenilai); + } + + if (CommonUtil.isNotNullOrEmpty(result)) { + result.sort(Comparator.comparing(m -> (String) m.get("namaLengkap"), String.CASE_INSENSITIVE_ORDER)); + } + + 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 df48eb61..d0c3cfda 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 @@ -721,6 +721,25 @@ public class IkiDanRemunerasiController extends LocaleController>> getAksesPegawaiKontrakKinerja(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + List> result = logbookKinerjaService.findAksesPegawai(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 akses pegawai kontrak kinerja", 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 akses pegawai kontrak kinerja", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/save-pengajuan-kontrak-kinerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity savePengajuanKontrakKinerja(HttpServletRequest request, @Valid @RequestBody LogbookKinerjaVO vo) { @@ -863,4 +882,23 @@ public class IkiDanRemunerasiController extends LocaleController>> getAksesPegawaiVerifikasiKinerja(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + List> result = logbookKinerjaDetailService.findAksesPegawai(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 akses pegawai verifikasi kinerja", 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 akses pegawai verifikasi kinerja", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }