package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.MapPegawaiJabatanToUnitKerja; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; /** * Repository class for AbsensiPegawai * * @author Gunandi ft Salman */ @Repository("mapPegawaiJabatanToUnitKerjaDao") public interface MapPegawaiJabatanToUnitKerjaDao extends JpaRepository { @Modifying @Query("update MapPegawaiJabatanToUnitKerja m set m.isPrimary=false where m.pegawaiId=:pegawaiId and m.id!=:id and m.statusEnabled is true") void changeIsNotPrimary(@Param("pegawaiId") Integer pegawaiId, @Param("id") Integer id); @Modifying @Query("update MapPegawaiJabatanToUnitKerja m set m.isPrimary=true where m.pegawaiId=:pegawaiId and m.id=:id and m.statusEnabled is true") void changeIsPrimary(@Param("pegawaiId") Integer pegawaiId, @Param("id") Integer id); @Modifying @Query("update MapPegawaiJabatanToUnitKerja m set m.isPrimary=false where m.pegawaiId=:pegawaiId and m.statusEnabled is true") void changeIsPrimary(@Param("pegawaiId") Integer pegawaiId); @Query("select new map(m.id as id " + ", m.pegawaiId as pegawaiId " + ",m.unitKerjaPegawaiId as unitKerjaPegawaiId, unitKerjaPegawai.name as nameUnitKerjaPegawai " + ",m.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId" + ",subUnitKerjaPegawai.name as nameSubUnitKerjaPegawai " + ", m.jabatanId as jabatanId,jabatan.namaJabatan as namaJabatan,m.isCanCreateJadwal as isCanCreateJadwal" + ", m.isPrimary as isPrimary, m.isMonitoring as isMonitoring, m.statusEnabled as statusEnabled) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.pegawai pegawai " + " left join m.unitKerjaPegawai unitKerjaPegawai " + " left join m.subUnitKerjaPegawai subUnitKerjaPegawai " + " left join m.jabatan jabatan " + " where m.pegawaiId=:pegawaiId and m.statusEnabled = true") List> findAllByPegawai(@Param("pegawaiId") Integer pegawaiId); @Query("select new Map(m.id as id,m.pegawaiId as pegawaiId," + "m.unitKerjaPegawaiId as unitKerjaPegawaiId," + "m.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId," + "m.jabatanId as jabatanId," + "m.nilaiJabatan as nilaiJabatan,m.gradeId as gradeId," + "m.atasanLangsungDireksi as atasanLangsungDireksi,m.pejabatPenilaiDireksi as pejabatPenilaiDireksi," + "m.atasanLangsungId as atasanLangsungId,m.pejabatPenilaiId as pejabatPenilaiId," + "m.isCanCreateJadwal as isCanCreateJadwal,m.isPrimary as isPrimary,m.isMonitoring as isMonitoring," + "m.sumberData as sumberDataId," + "case when m.sumberData = 1 then 'Internal' " + "when m.sumberData = 2 then 'Fungsional' " + "when m.sumberData = 3 then 'Struktural' end as sumberData," + "m.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja m " + "where m.statusEnabled is true " + "and m.pegawaiId=:pegawaiId " + "order by m.id") List> findMappByPegawai(@Param("pegawaiId") Integer pegawaiId); @Query("select distinct new Map(mapPegawai.id as id,mapPegawai.pegawaiId as pegawaiId," + "mapPegawai.unitKerjaPegawaiId as unitKerjaPegawaiId," + "mapPegawai.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId," + "mapPegawai.jabatanId as jabatanId," + "mapPegawai.atasanLangsungDireksi as atasanLangsungDireksi,mapPegawai.pejabatPenilaiDireksi as pejabatPenilaiDireksi," + "mapPegawai.atasanLangsungId as atasanLangsungId,mapPegawai.pejabatPenilaiId as pejabatPenilaiId," + "mapPegawai.isCanCreateJadwal as isCanCreateJadwal,mapPegawai.isPrimary as isPrimary,mapPegawai.isMonitoring as isMonitoring,mapPegawai.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja mapPegawai " + "inner join mapPegawai.pegawai peg with peg.statusEnabled is true and peg.id not in (:listRestrictedId) and peg.kategoryPegawaiId not in (:listNonsdm) " + "left join mapPegawai.jabatan jab with jab.statusEnabled is true " + "where mapPegawai.statusEnabled is true " + "and jab.levelJabatan between :levelJabatan+1 and :levelJabatan+2") List> findMappDirutByLevelJabatan(@Param("levelJabatan") Integer levelJabatan, @Param("listRestrictedId") List listRestrictedId, @Param("listNonsdm") List listNonsdm); @Query("select distinct new Map(mapPegawai.id as id,mapPegawai.pegawaiId as pegawaiId," + "mapPegawai.unitKerjaPegawaiId as unitKerjaPegawaiId," + "mapPegawai.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId," + "mapPegawai.jabatanId as jabatanId," + "mapPegawai.atasanLangsungDireksi as atasanLangsungDireksi,mapPegawai.pejabatPenilaiDireksi as pejabatPenilaiDireksi," + "mapPegawai.atasanLangsungId as atasanLangsungId,mapPegawai.pejabatPenilaiId as pejabatPenilaiId," + "mapPegawai.isCanCreateJadwal as isCanCreateJadwal,mapPegawai.isPrimary as isPrimary,mapPegawai.isMonitoring as isMonitoring,mapPegawai.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja mapPegawai " + "inner join mapPegawai.pegawai peg with peg.statusEnabled is true and peg.id not in (:listRestrictedId) and peg.kategoryPegawaiId not in (:listNonsdm) " + "left join mapPegawai.jabatan jab with jab.statusEnabled is true " + "where mapPegawai.statusEnabled is true " + "and jab.levelJabatan between :levelJabatan+1 and :levelJabatan+2 " + "and jab.subLevelJabatan = :subLevelJabatan") List> findMappDirekturByLevelJabatan(@Param("levelJabatan") Integer levelJabatan, @Param("subLevelJabatan") Integer subLevelJabatan, @Param("listRestrictedId") List listRestrictedId, @Param("listNonsdm") List listNonsdm); @Query("select distinct new Map(mapPegawai.id as id,mapPegawai.pegawaiId as pegawaiId," + "mapPegawai.unitKerjaPegawaiId as unitKerjaPegawaiId," + "mapPegawai.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId," + "mapPegawai.jabatanId as jabatanId," + "mapPegawai.atasanLangsungDireksi as atasanLangsungDireksi,mapPegawai.pejabatPenilaiDireksi as pejabatPenilaiDireksi," + "mapPegawai.atasanLangsungId as atasanLangsungId,mapPegawai.pejabatPenilaiId as pejabatPenilaiId," + "mapPegawai.isCanCreateJadwal as isCanCreateJadwal,mapPegawai.isPrimary as isPrimary,mapPegawai.isMonitoring as isMonitoring,mapPegawai.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja mapPegawai, MapPegawaiJabatanToUnitKerja mapAtasan, MapPegawaiJabatanToUnitKerja mapPenilai " + "inner join mapPegawai.pegawai peg with peg.statusEnabled is true and peg.id not in (:listRestrictedId) and peg.kategoryPegawaiId not in (:listNonsdm) " + "left join mapPegawai.jabatan jabPegawai with jabPegawai.statusEnabled is true " + "left join mapAtasan.jabatan jabAtasan with jabAtasan.statusEnabled is true " + "left join mapPenilai.jabatan jabPenilai with jabPenilai.statusEnabled is true " + "where mapPegawai.unitKerjaPegawaiId = mapAtasan.unitKerjaPegawaiId " + "and mapPegawai.unitKerjaPegawaiId = mapPenilai.unitKerjaPegawaiId " + "and mapPegawai.statusEnabled is true " + "and mapAtasan.statusEnabled is true " + "and mapPenilai.statusEnabled is true " + "and mapPegawai.unitKerjaPegawaiId = :unitId " + "and mapPegawai.pegawaiId <> :pegawaiId " + "and jabPegawai.levelJabatan between jabPenilai.levelJabatan+1 and jabPenilai.levelJabatan+3)") List> findMappByLevelJabatan(@Param("unitId") Integer unitId, @Param("pegawaiId") Integer pegawaiId, @Param("listRestrictedId") List listRestrictedId, @Param("listNonsdm") List listNonsdm); @Query("select distinct new Map(mapp.id as id,mapp.pegawaiId as pegawaiId,peg.kategoryPegawaiId as kategoryPegawaiId," + "mapp.unitKerjaPegawaiId as unitKerjaPegawaiId," + "mapp.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId," + "mapp.jabatanId as jabatanId," + "mapp.atasanLangsungDireksi as atasanLangsungDireksi,mapp.pejabatPenilaiDireksi as pejabatPenilaiDireksi," + "mapp.atasanLangsungId as atasanLangsungId,mapp.pejabatPenilaiId as pejabatPenilaiId," + "mapp.isCanCreateJadwal as isCanCreateJadwal,mapp.isPrimary as isPrimary,mapp.isMonitoring as isMonitoring,mapp.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja mapp " + "inner join mapp.pegawai peg with peg.statusEnabled is true and peg.id not in (:listRestrictedId) and peg.kategoryPegawaiId not in (:listNonsdm) " + "left join mapp.jabatan jab " + "left join mapp.atasanLangsung al " + "left join mapp.pejabatPenilai pp " + "left join mapp.unitKerjaPegawai uk " + "left join mapp.subUnitKerjaPegawai sk " + "where mapp.statusEnabled is true " + "and ((mapp.atasanLangsungId is not null and mapp.pejabatPenilaiId is null and mapp.atasanLangsungDireksi is null and mapp.pejabatPenilaiDireksi is null) " + "or (mapp.atasanLangsungId is null and mapp.pejabatPenilaiId is not null and mapp.atasanLangsungDireksi is null and mapp.pejabatPenilaiDireksi is null) " + "or (mapp.atasanLangsungId is null and mapp.pejabatPenilaiId is null and mapp.atasanLangsungDireksi is not null and mapp.pejabatPenilaiDireksi is null) " + "or (mapp.atasanLangsungId is null and mapp.pejabatPenilaiId is null and mapp.atasanLangsungDireksi is null and mapp.pejabatPenilaiDireksi is not null) " + "or (mapp.atasanLangsungId is null and mapp.pejabatPenilaiId is null and mapp.atasanLangsungDireksi is null and mapp.pejabatPenilaiDireksi is null) " + "or mapp.unitKerjaPegawaiId is null " + "or mapp.subUnitKerjaPegawaiId is null " + "or mapp.jabatanId is null " + "or (mapp.atasanLangsungId is not null and al.statusEnabled is false) " + "or (mapp.pejabatPenilaiId is not null and pp.statusEnabled is false) " + "or (mapp.unitKerjaPegawaiId is not null and uk.statusEnabled is false) " + "or (mapp.subUnitKerjaPegawaiId is not null and sk.statusEnabled is false) " + "or (mapp.jabatanId is not null and jab.statusEnabled is false))") List> findUndefinedMapp(@Param("listRestrictedId") List listRestrictedId, @Param("listNonsdm") List listNonsdm); @Query("select new map(m.id as id," + "m.pegawaiId as pegawaiId," + "m.unitKerjaPegawaiId as unitKerjaPegawaiId,unitKerjaPegawai.name as nameUnitKerjaPegawai," + "m.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId,subUnitKerjaPegawai.name as nameSubUnitKerjaPegawai," + "m.jabatanId as jabatanId,jabatan.namaJabatan as namaJabatan," + "m.isCanCreateJadwal as isCanCreateJadwal," + "m.isPrimary as isPrimary," + "m.isMonitoring as isMonitoring," + "m.statusEnabled as statusEnabled) " + "from MapPegawaiJabatanToUnitKerja m " + "left join m.pegawai pegawai " + "left join m.unitKerjaPegawai unitKerjaPegawai " + "left join m.subUnitKerjaPegawai subUnitKerjaPegawai " + "left join m.jabatan jabatan " + "where m.pegawaiId=:pegawaiId " + "and m.isPrimary is true " + "and m.statusEnabled = true") Map findAllByPegawaiPrimary(@Param("pegawaiId") Integer pegawaiId); @Query("select distinct new map(m.subUnitKerjaPegawaiId as subUnitKerjaPegawaiId" + ",subUnitKerjaPegawai.name as nameSubUnitKerjaPegawai) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.subUnitKerjaPegawai subUnitKerjaPegawai " + " where m.pegawaiId=:pegawaiId and m.unitKerjaPegawaiId=:idUnit and m.statusEnabled = true") List> findSubUnitByUnit(@Param("pegawaiId") Integer pegawaiId, @Param("idUnit") Integer idUnit); @Query("select distinct new map(m.unitKerjaPegawaiId as unitKerjaPegawaiId" + ",unitKerjaPegawai.name as nameUnitKerjaPegawai) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.unitKerjaPegawai unitKerjaPegawai " + " where m.pegawaiId=:pegawaiId and m.statusEnabled = true") List> findUnitByPgwId(@Param("pegawaiId") Integer pegawaiId); @Query("select distinct new map(m.unitKerjaPegawaiId as id,unitKerjaPegawai.name as name, m.isCanCreateJadwal as isCanCreateJadwal) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.unitKerjaPegawai unitKerjaPegawai " + " where m.pegawaiId=:pegawaiId and m.statusEnabled = true") List> findUnitByPgwId2(@Param("pegawaiId") Integer pegawaiId); @Query("select distinct new map(m.subUnitKerjaPegawaiId as id" + ",subUnitKerjaPegawai.name as name) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.subUnitKerjaPegawai subUnitKerjaPegawai " + " where m.pegawaiId=:pegawaiId and m.unitKerjaPegawaiId=:idUnit and m.statusEnabled = true") List> findSubUnitByUnit2(@Param("pegawaiId") Integer pegawaiId, @Param("idUnit") Integer idUnit); @Query("select new Map(j.levelJabatan as levelJabatan,m.isMonitoring as isMonitoring) " + " from MapPegawaiJabatanToUnitKerja m " + " left join m.jabatan j " + " where m.pegawaiId=:pegawaiId and m.unitKerjaPegawaiId=:idUnit and m.statusEnabled = true") List> getMappLevelJabatanAndMonitoring(@Param("pegawaiId") Integer pegawaiId, @Param("idUnit") Integer idUnit); @Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.isPrimary is true and mapp.pegawaiId=:idPegawai") Integer getIdJabatanInternalUtamaByIdPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(jab.id as id, jab.namaJabatan as namaJabatan, jab.levelJabatan as levelJabatan, " + "mapp.unitKerjaPegawaiId as idUnitKerja) " + "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jab " + "where mapp.statusEnabled is true " + "and jab.statusEnabled is true " + "and mapp.pegawaiId = :idPegawai") List> getJabatanInternalStrukturalByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(jb.id as id,jb.namaJabatan as namaJabatan,jb.levelJabatan as levelJabatan," + "mj.unitKerjaPegawaiId as idUnitKerja," + "mj.atasanLangsungId as atasanId," + "mj.pejabatPenilaiId as penilaiId) " + "from MapPegawaiJabatanToUnitKerja mj " + "left join mj.jabatan jb " + "where mj.statusEnabled is true " + "and jb.statusEnabled is true " + "and mj.pegawaiId = :idPegawai") List> findJabLvlUkAtasan(@Param("idPegawai") Integer idPegawai); @Query("select new Map(jabatan.id as idJabatan,jabatan.namaJabatan as namaJabatan," + "unitKerja.id as idUnitKerja,unitKerja.name as namaUnitKerja," + "subUnitkerja.id as idSubunitKerja,subunitKerja.name as namaSubunitKerja) " + "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jabatan " + "left join mapp.unitKerjaPegawai unitKerja " + "left join mapp.subUnitKerjaPegawai subunitKerja " + "where mapp.statusEnabled is true " + "and mapp.isPrimary is true " + "and mapp.pegawaiId = :idPegawai") Map getMapJabatanUtamaByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jb " + "where mapp.statusEnabled is true " + "and mapp.pegawaiId=:idPegawai " + "and mapp.unitKerjaPegawaiId=:idUnitKerja " + "order by jb.levelJabatan desc") List getListIdJabatanByPegawaiUnitKerja(@Param("idPegawai") Integer idPegawai, @Param("idUnitKerja") Integer idUnitKerja); @Query("select count(mapp.id) from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId = :idPegawai and mapp.isCanCreateJadwal is true") Integer countBuatJadwalDinasByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select count(mapp.id) from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId = :idPegawai and mapp.isPrimary is true and mapp.isMonitoring is true") Integer countMonitoringByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select new Map(" + "subunit.id as idSub, subunit.name as nameSub, " + "unitkerja.id as idUnit, unitkerja.name as nameUnit, " + "pgw.id as idPgw, pgw.namaLengkap as namaLengkap) " + "from MapPegawaiJabatanToUnitKerja map " + "left join map.subUnitKerjaPegawai subunit " + "left join map.unitKerjaPegawai unitkerja " + "left join map.pegawai pgw " + "where map.statusEnabled is true " + "and map.pegawaiId = :idPegawai " + "and map.isPrimary is true") List> getDataMappingJabatanUtamaByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(unitkerja.id as id, unitkerja.name as name) " + "from MapPegawaiJabatanToUnitKerja map " + "left join map.unitKerjaPegawai unitkerja " + "where map.statusEnabled is true " + "and map.pegawaiId = :idPegawai " + "order by unitkerja.name") List> getMapUnitKerjaByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(uk.id as id,uk.name as name) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.jabatan jb with jb.statusEnabled is true " + "left join mp.unitKerjaPegawai uk with uk.statusEnabled is true " + "where mp.statusEnabled is true " + "and jb.levelJabatan = :levelJabatan+1 " // satu_level_dibawahnya + "and jb.subLevelJabatan = :sublevelJabatan " + "and uk.id is not null " + "order by uk.name") List> getMapUnitKerjaByLevelJabatan(@Param("levelJabatan") Integer levelJabatan, @Param("sublevelJabatan") Integer sublevelJabatan); @Query("select distinct new Map(uk.id as id,uk.name as name) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.jabatan jb with jb.statusEnabled is true " + "left join mp.unitKerjaPegawai uk with uk.statusEnabled is true " + "where mp.statusEnabled is true " + "and jb.kelompokJabatanId = :kelompokJabatanId " + "and uk.id is not null " + "order by uk.name") List> getMapUnitKerjaByKelompokJabatan(@Param("kelompokJabatanId") Integer IdKelompokJabatan); @Query("select distinct new Map(mapp.unitKerjaPegawaiId as idUnit, jab.levelJabatan as levelJabatan, jab.subLevelJabatan as subLevelJabatan) " + "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jab with jab.statusEnabled is true " + "where mapp.statusEnabled is true " + "and mapp.pegawaiId = :pegawaiId ") List> getMappLevelByPegawai(@Param("pegawaiId") Integer pegawaiId); @Query("select distinct new Map(subunit.id as id, subunit.name as name) " + "from MapPegawaiJabatanToUnitKerja map " + "left join map.subUnitKerjaPegawai subunit " + "where map.statusEnabled is true " + "and map.pegawaiId = :idPegawai " + "and map.unitKerjaPegawaiId = :idUnitKerja " + "order by subunit.name") List> getMapSubunitKerjaMonitoringByUnitPegawai(@Param("idPegawai") Integer idPegawai, @Param("idUnitKerja") Integer idUnitKerja); @Query("select distinct new Map(subunit.id as id, subunit.name as name) " + "from MapPegawaiJabatanToUnitKerja map " + "left join map.jabatan jab " + "left join map.subUnitKerjaPegawai subunit " + "where map.statusEnabled is true " + "and map.unitKerjaPegawaiId = :idUnitKerja " + "and jab.kelompokJabatanId = :kelompokJabatanId " + "order by subunit.name") List> getMapSubunitKerjaMonitoringByKelompokJabatan(@Param("idUnitKerja") Integer idUnitKerja, @Param("kelompokJabatanId") Integer IdKelompokJabatan); @Query("select distinct mapp.pegawaiId from MapPegawaiJabatanToUnitKerja mapp " + "where mapp.statusEnabled is true and mapp.pegawaiId is not null and mapp.unitKerjaPegawaiId = :idUnitKerja") List getPegawaiByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja); @Query("select new Map(pegawai.namaLengkap as namaLengkapDirut, " + "coalesce(pegawai.nipPns, pegawai.nip) as nipDirut, " + "jabatan.namaJabatan as namaJabatanDirut) " + "from MapPegawaiJabatanToUnitKerja mappingJabatan " + "left join mappingJabatan.pegawai pegawai " + "left join mappingJabatan.jabatan jabatan " + "where mappingJabatan.statusEnabled is true " + "and pegawai.statusEnabled is true " + "and jabatan.id = :idJabatan") Map getDirekturUtama(@Param("idJabatan") Integer idJabatan); @Query("select distinct new Map(al.id as id, al.namaLengkap as namaLengkap, coalesce(al.nipPns, al.nip) as nipPns, mp.atasanLangsungDireksi as atasanLangsung, " + "mp.unitKerjaPegawaiId as idUnitKerja, mp.jabatanId as idJabatan) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.atasanLangsung al with al.statusEnabled is true " + "where mp.statusEnabled is true " + "and mp.pegawaiId = :idPegawai") List> getAtasanLangsungByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(pp.id as id, pp.namaLengkap as namaLengkap, coalesce(pp.nipPns, pp.nip) as nipPns, mp.pejabatPenilaiDireksi as pejabatPenilai, " + "mp.unitKerjaPegawaiId as idUnitKerja, mp.jabatanId as idJabatan) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pejabatPenilai pp with pp.statusEnabled is true " + "where mp.statusEnabled is true " + "and mp.pegawaiId = :idPegawai") List> getAtasanPejabatPenilaiByPegawai(@Param("idPegawai") Integer idPegawai); @Query("select distinct new Map(atasan.id as idAtasan, atasan.namaLengkap as namaAtasan, " + "jabatan.namaJabatan as jabatan, unitKerja.name as unitKerja, " + "coalesce(atasan.nipPns, atasan.nip) as nipAtasan) " + "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.atasanLangsung atasan " + "left join mapp.unitKerjaPegawai unitKerja " + "left join mapp.jabatan jabatan " + "where mapp.statusEnabled is true " + "and mapp.pegawaiId = :idPegawai " + "and mapp.jabatanId = :idJabatan") Map getAtasanDanUnitKerjaByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idJabatan") Integer idJabatan); @Query("select model from MapPegawaiJabatanToUnitKerja model where model.statusEnabled is true") List getAllMapping(); @Query("select model from MapPegawaiJabatanToUnitKerja model " + "where model.statusEnabled is true " + "and model.pegawaiId = :pegawaiId") List findByPegawaiId(@Param("pegawaiId") Integer pegawaiId); @Query("select model from MapPegawaiJabatanToUnitKerja model " + "where model.statusEnabled is true") List findAllEnabled(); @Query("select model from MapPegawaiJabatanToUnitKerja model " + "inner join model.pegawai pg " + "where model.statusEnabled is true " + "and pg.statusEnabled is true " + "and pg.namaLengkap <> '-' " + "and lower(pg.namaLengkap) not like '%administrator%'") List getAll(); @Query("select new Map(jab.id as idJabatan, jab.namaJabatan as namaJabatan, " + "peg.id as idPegawai, peg.namaLengkap as namaLengkap, coalesce(peg.nipPns,peg.nip,peg.nikIntern) as nipPns, " + "uk.id as idUnitKerja, uk.name as namaUnitKerja, " + "sk.id as idSubunitKerja, sk.name as namaSubunitKerja, " + "kat.id as idKategori, kat.kategoryPegawai as namaKategori) " + "from MapPegawaiJabatanToUnitKerja mapp " + "inner join mapp.pegawai peg " + "left join mapp.jabatan jab with jab.statusEnabled is true " + "left join mapp.unitKerjaPegawai uk with uk.statusEnabled is true " + "left join mapp.subUnitKerjaPegawai sk with sk.statusEnabled is true " + "left join peg.kategoryPegawai kat with kat.statusEnabled is true " + "where mapp.statusEnabled is true and peg.statusEnabled is true " + "and peg.kedudukanId not in (:listKedudukanId) " + "and kat.id not in (:listKategoriId) " + "and peg.id not in (:listPegawaiId) " + "order by jab.namaJabatan, uk.name, sk.name, kat.kategoryPegawai, peg.namaLengkap") List> findFormasiJabatan(@Param("listKedudukanId") List listKedudukanId, @Param("listKategoriId") List listKategoriId, @Param("listPegawaiId") List listPegawaiId); @Query("select new Map(jb.id as id,jb.namaJabatan as namaJabatan) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.jabatan jb with jb.statusEnabled is true " + "where mp.statusEnabled is true " + "and mp.pegawaiId = :idPegawai") List> getJabatanPegawai(@Param("idPegawai") Integer idPegawai); @Query("select new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg " + "where mp.unitKerjaPegawaiId = :idUnitKerja " + "and mp.subUnitKerjaPegawaiId = :idSubunitKerja " + "and mp.statusEnabled is true " + "and pg.statusEnabled is true " + "order by pg.namaLengkap") List> getPegawaiByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja, @Param("idSubunitKerja") Integer idSubunitKerja); @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg " + "where mp.unitKerjaPegawaiId = :unitKerjaId " + "and pg.kategoryPegawaiId in (:listKategoriId) " + "and mp.statusEnabled is true " + "and pg.statusEnabled is true " + "order by pg.namaLengkap") List> getPegawaiByUnitKerja(@Param("unitKerjaId") Integer idUnitKerja, @Param("listKategoriId") List listIdKategori); @Query("select distinct new Map(pg.id as id,pg.namaLengkap as namaLengkap,pg.tglMasuk as tglMasuk) " + "from MapPegawaiJabatanToUnitKerja mp " + "left join mp.pegawai pg " + "where pg.kategoryPegawaiId in (:listKategoriId) " + "and mp.subUnitKerjaPegawaiId = :idSubunitKerja " + "and mp.statusEnabled is true " + "and pg.statusEnabled is true " + "order by pg.namaLengkap") List> getPegawaiByUnitKerja(@Param("listKategoriId") List listIdKategori, @Param("idSubunitKerja") Integer idSubunitKerja); @Query("select new Map(ej.tglHitung as tglHitung,ej.bulan as bulan,ej.tahun as tahun," + "nj.id as idDetailKelompokJabatan,nj.gradeDesc as grade,nj.detailKelompokJabatan as detailKelompokJabatan," + "j.id as idJabatan,j.namaJabatan as namaJabatan," + "ej.totalNilai as nilaiJabatan) " + "from MapPegawaiJabatanToUnitKerja mj, EvaluasiJabatan ej " + "inner join mj.jabatan j " + "inner join ej.grade nj " + "where mj.jabatanId = ej.jabatanId " + "and ej.jabatanId = j.id " + "and mj.statusEnabled is true " + "and ej.statusEnabled is true " + "and mj.pegawaiId = :pegawaiId " + "order by ej.tglHitung desc") List> findEvaluasiJabatanByPegawai(@Param("pegawaiId") Integer idPegawai); @Query("select new Map(ej.tglHitung as tglHitung,ej.bulan as bulan,ej.tahun as tahun," + "nj.id as idDetailKelompokJabatan,nj.gradeDesc as grade,nj.detailKelompokJabatan as detailKelompokJabatan," + "j.id as idJabatan,j.namaJabatan as namaJabatan,ej.totalNilai as nilaiJabatan) " + "from EvaluasiJabatan ej " + "inner join ej.jabatan j " + "inner join ej.grade nj " + "where ej.statusEnabled is true " + "and j.id in (:listJabatanId) " + "order by ej.totalNilai desc, ej.tglHitung desc") List> findEvaluasiJabatanByAllJabatanPegawaiBaru( @Param("listJabatanId") List listIdJabatan); String strAksesPegawaiStaf = "select new Map(mjp.unitKerjaPegawaiId as unitKerjaId,pg.id as pegawaiId) " + "from MapPegawaiJabatanToUnitKerja mjp " + "inner join mjp.pegawai pg " + "inner join mjp.jabatan jb " + "where mjp.statusEnabled is true " + "and pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + "and jb.levelJabatan in (5) "; String strAksesPegawaiAtasan = "select distinct new Map(mjp.unitKerjaPegawaiId as unitKerjaId,pg.id as pegawaiId) " + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mja " + "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 pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + "and jb.levelJabatan in (4,3) "; String strAksesPegawaiPenilai = "select distinct new Map(mjp.unitKerjaPegawaiId as unitKerjaId,pg.id as pegawaiId) " + "from MapPegawaiJabatanToUnitKerja mjp, MapPegawaiJabatanToUnitKerja mjn " + "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 pg.statusEnabled is true " + "and jb.statusEnabled is true " + "and pg.id = :pegawaiId " + "and jb.levelJabatan in (2,1) "; String unitKerja = "and mjp.unitKerjaPegawaiId in (:listUnitKerjaId) "; String sortUnitKerja = "order by mjp.unitKerjaPegawaiId"; @Query(strAksesPegawaiStaf + unitKerja + sortUnitKerja) List> findAksesPegawaiStaf(@Param("listUnitKerjaId") List listIdUnitKerja, @Param("pegawaiId") Integer idPegawai); @Query(strAksesPegawaiAtasan + unitKerja + sortUnitKerja) List> findAksesPegawaiAtasan(@Param("listUnitKerjaId") List listIdUnitKerja, @Param("pegawaiId") Integer idPegawai); @Query(strAksesPegawaiPenilai + unitKerja + sortUnitKerja) List> findAksesPegawaiPenilai(@Param("listUnitKerjaId") List listIdUnitKerja, @Param("pegawaiId") Integer idPegawai); @Query(strAksesPegawaiStaf + sortUnitKerja) List> findAksesPegawaiStaf(@Param("pegawaiId") Integer idPegawai); @Query(strAksesPegawaiAtasan + sortUnitKerja) List> findAksesPegawaiAtasan(@Param("pegawaiId") Integer idPegawai); @Query(strAksesPegawaiPenilai + sortUnitKerja) List> findAksesPegawaiPenilai(@Param("pegawaiId") Integer idPegawai); @Query("select new Map(mj.id as id," + "pg.id as pegawaiId,pg.namaLengkap as namaPegawai) " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and mj.jabatanId = :jabatanId") List> findPegawaiByJabatan(@Param("jabatanId") Integer idJabatan); @Query("select new Map(mj.id as id,mj.nilaiJabatan as nilaiJabatan,mj.isPrimary as isPrimary) " + "from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true " + "and mj.pegawaiId = :pegawaiId " + "order by mj.nilaiJabatan desc, " + "mj.isPrimary desc") List> findNilaiJabatanByPegawai(@Param("pegawaiId") Integer idPegawai); @Query("select distinct new Map(mj.pegawaiId as pegawaiId,mj.jabatanId as jabatanId) " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and mj.subUnitKerjaPegawaiId = :kelompokKerja " + "and pg.kategoryPegawaiId in (:remun) " + "and pg.jenisPegawaiId = :dokter " + "and pg.kedudukanId not in (:nonAktif)") List> findPegawaiJabatanByKelompokKerja(@Param("kelompokKerja") Integer idKK, @Param("remun") List listIdRemun, @Param("dokter") Integer idDokter, @Param("nonAktif") List listIdNonAktif); @Query("select distinct mj.pegawaiId " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb " + "where mj.unitKerjaPegawaiId in (:listKsmId) " + "and pg.jenisPegawaiId = 1 " + "and jb.levelJabatan = 5") List findAllDokterKelompokStafMedik(@Param("listKsmId") List listIdKsm); String strDokter = "select distinct new Map(pg.id as pegawaiId,pg.nama as nama,pg.namaLengkap as namaLengkap," + "mj.unitKerjaPegawaiId as ksmId) " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "inner join mj.jabatan jb " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and pg.jenisPegawaiId = 1 " + "and jb.levelJabatan = 5 "; String remun = "and mj.unitKerjaPegawaiId in (:ksmListId) and pg.kategoryPegawaiId in (1,10,14) "; String ksm = "and mj.unitKerjaPegawaiId = :ksmId "; String kk = "and mj.subUnitKerjaPegawaiId = :kkId "; String dr = "and mj.pegawaiId = :drId "; String sortDr = "order by pg.nama"; @Query(strDokter + sortDr) List> findDokter(); @Query(strDokter + ksm + sortDr) List> findDokterByKsm(@Param("ksmId") Integer idKsm); @Query(strDokter + ksm + kk + sortDr) List> findDokterByKk(@Param("ksmId") Integer idKsm, @Param("kkId") Integer idKk); @Query(strDokter + ksm + kk + dr + sortDr) List> findDokterById(@Param("ksmId") Integer idKsm, @Param("kkId") Integer idKk, @Param("drId") Integer idDr); @Query(strDokter + dr + sortDr) List> findDokterById(@Param("drId") Integer idDr); @Query(strDokter + remun + dr + sortDr) List> findDokterByRemun(@Param("ksmListId") List ksmListId, @Param("drId") Integer idPegawai); @Query("select mj.nilaiJabatan " + "from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true " + "and mj.pegawaiId = :pegawaiId " + "and mj.jabatanId = :jabatanId") Optional findByPegawaiAndJabatan(@Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan); @Query("select distinct new Map(mj.pegawaiId as pegawaiId,mj.jabatanId as jabatanId) " + "from MapPegawaiJabatanToUnitKerja mj " + "where mj.jabatanId in (:listIdJabatan)") List> findAllPegawaiByJabatan(@Param("listIdJabatan") List listIdJabatan); @Query("select new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and pg.namaLengkap <> '-' " + "and lower(pg.namaLengkap) not like '%admin%' " + "and mj.unitKerjaPegawaiId = :unitKerjaPegawaiId " + "order by pg.namaLengkap") List> findPegawaiByUnitKerja(@Param("unitKerjaPegawaiId") Integer unitKerjaPegawaiId); @Query("select pg.id from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and mj.unitKerjaPegawaiId in (:unitKerjaId) " + "and mj.jabatanId in (:jabatanId)") List findPegawaiIdByUnitKerjaIdAndJabatanId(@Param("unitKerjaId") List unitKerjaId, @Param("jabatanId") List jabatanId); @Query(value = "select exists(select 1 from mappegawaijabatantounitkerja_m mj " + "where mj.statusenabled is true and mj.objectpegawaifk = :pegawaiId " + "and mj.objectjabatanfk in (:listJabatanId))", nativeQuery = true) boolean existsByPegawaiIdAndJabatanIdIn(@Param("pegawaiId") Integer idPegawai, @Param("listJabatanId") List idJabatanList); @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and mj.unitKerjaPegawaiId in (:listUnitKerjaId) " + "and pg.jenisPegawaiId = 1") Set findDokterByUnitKerja(@Param("listUnitKerjaId") List listIdUnitKerja); @Query("select skj.id from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.subUnitKerjaPegawai skj " + "where mj.statusEnabled is true " + "and skj.statusEnabled is true " + "and lower(skj.name) like 'kk%' " + "and mj.pegawaiId = :pegawaiId") List findKelompokKerjaByDokter(@Param("pegawaiId") Integer idPegawai); @Query("select mj.pegawaiId from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true " + "and pg.statusEnabled is true " + "and mj.pegawaiId = :idPegawai " + "and pg.jenisPegawaiId = 1") Set findDokterByPegawaiId(@Param("idPegawai") Integer idPegawai); }