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 666842f1..6802b75d 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 @@ -83,23 +83,28 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository> findAksesPegawaiByStaf(@Param("pegawaiId") Integer idPegawai); + + "and pg.id = :pegawaiId " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId)") + List> findAksesPegawaiByStaf(@Param("pegawaiId") Integer idPegawai, + @Param("listKategoryPegawaiId") List listIdKategoriPegawai); @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); + + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + + "and pgb.kategoryPegawaiId in (:listKategoryPegawaiId)") + List> findAksesPegawaiByAtasan(@Param("pegawaiId") Integer idPegawai, + @Param("listKategoryPegawaiId") List listIdKategoriPegawai); @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); + + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + + "and pgb.kategoryPegawaiId in (:listKategoryPegawaiId)") + List> findAksesPegawaiByPenilai(@Param("pegawaiId") Integer idPegawai, + @Param("listKategoryPegawaiId") List listIdKategoriPegawai); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java index ea6d8ccc..1a58a2e6 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiDao.java @@ -1051,4 +1051,10 @@ public interface PegawaiDao extends PagingAndSortingRepository @Query("select new Map(pg.id as id,pg.shiftKerjaId as shiftKerjaId) from Pegawai pg where pg.statusEnabled is true and pg.id in (:listIdPegawai)") public List> getListKelompokShiftKerja(@Param("listIdPegawai") List listIdPegawai); + + @Query("select new Map (pg.id as id,pg.namaLengkap as namaLengkap) " + "from Pegawai pg " + + "where pg.statusEnabled is true " + "and pg.kategoryPegawaiId in (:listKategoryPegawaiId)") + public List> findPegawaiByListKategori( + @Param("listKategoryPegawaiId") List listIdKategoriPegawai); + } 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 893df6ca..c1072acf 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.Arrays; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; +import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao; @@ -142,7 +144,8 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement @Override public List> findAksesPegawai(Integer idPegawai) { - List> result = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai); + List> result = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai, + Arrays.asList(Master.KategoryPegawai.PURNA_WAKTU)); if (CommonUtil.isNotNullOrEmpty(result)) { result.sort(Comparator.comparing(m -> (String) m.get("namaLengkap"), String.CASE_INSENSITIVE_ORDER)); 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 d2b2b8d6..1117a418 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 @@ -23,6 +23,7 @@ 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.dao.PegawaiDao; import com.jasamedika.medifirst2000.entities.IndikatorKinerja; import com.jasamedika.medifirst2000.entities.Jabatan; import com.jasamedika.medifirst2000.entities.LogbookKinerja; @@ -64,6 +65,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Autowired private AnggaranRemunerasiDao anggaranRemunerasiDao; + @Autowired + private PegawaiDao pegawaiDao; + @Override public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException { Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); @@ -251,15 +255,22 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb DateFormat df = new SimpleDateFormat("yyyy-MM"); List> listMap = logbookKinerjaDao.findIndikatorByJabatan(idJabatan); + List> data = logbookKinerjaDao.findKontrakKinerja(idPegawai, idJabatan, + df.format(new Date(bulan))); + for (Map map : listMap) { if (!listIdIndikator.contains(map.get("indikatorId"))) { listIdIndikator.add(Integer.valueOf(map.get("indikatorId").toString())); listRes.add(map); } } + for (Map map : data) { + 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) { res.put("noRecMap", res.get("noRecMap")); for (Map map : data) { @@ -394,24 +405,48 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Override public List> findAksesPegawai(Integer idPegawai) { List> result = new ArrayList<>(); + List> rsAll = new ArrayList<>(); + List listPurnaWaktu = Arrays.asList(Master.KategoryPegawai.PURNA_WAKTU); - List> aksesByStaf = logbookKinerjaDao.findAksesPegawaiByStaf(idPegawai); - List> aksesByAtasan = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai); - List> aksesByPenilai = logbookKinerjaDao.findAksesPegawaiByPenilai(idPegawai); + List listIdSDM = pegawaiDao.getPegawaiSDMforCred(Master.UnitKerja.BAG_SDM, + Master.SubUnitKerja.SUBBAG_KESEJAHTERAAN); + if (listIdSDM.contains(idPegawai)) { + rsAll = pegawaiDao.findPegawaiByListKategori(listPurnaWaktu); + result.addAll(rsAll); + for (Map map : result) { + map.put("isModifAkses", false); + } + } - if (CommonUtil.isNotNullOrEmpty(aksesByStaf)) { + List> aksesByStaf = logbookKinerjaDao.findAksesPegawaiByStaf(idPegawai, listPurnaWaktu); + List> aksesByAtasan = logbookKinerjaDao.findAksesPegawaiByAtasan(idPegawai, listPurnaWaktu); + List> aksesByPenilai = logbookKinerjaDao.findAksesPegawaiByPenilai(idPegawai, + listPurnaWaktu); + + if (CommonUtil.isNotNullOrEmpty(aksesByStaf) && CommonUtil.isNullOrEmpty(rsAll)) { for (Map map : aksesByStaf) { map.put("isModifAkses", false); } result.addAll(aksesByStaf); } if (CommonUtil.isNotNullOrEmpty(aksesByAtasan)) { - for (Map map : aksesByAtasan) { - map.put("isModifAkses", true); + if (CommonUtil.isNullOrEmpty(rsAll)) { + for (Map map : aksesByAtasan) { + map.put("isModifAkses", true); + } + result.addAll(aksesByAtasan); + } else { + for (Map res : result) { + for (Map map : aksesByAtasan) { + if (res.get("id").equals(map.get("id"))) { + res.put("isModifAkses", true); + break; + } + } + } } - result.addAll(aksesByAtasan); } - if (CommonUtil.isNotNullOrEmpty(aksesByPenilai)) { + if (CommonUtil.isNotNullOrEmpty(aksesByPenilai) && CommonUtil.isNullOrEmpty(rsAll)) { for (Map map : aksesByPenilai) { map.put("isModifAkses", false); }