SC-be-java/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java
2021-01-07 11:34:56 +07:00

381 lines
28 KiB
Java

package com.jasamedika.medifirst2000.dao;
import java.util.List;
import java.util.Map;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.jasamedika.medifirst2000.entities.MapPegawaiJabatanToUnitKerja;
/**
* Repository class for AbsensiPegawai
*
* @author Gunandi
*/
@Repository("mapPegawaiJabatanToUnitKerjaDao")
public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegawaiJabatanToUnitKerja, Integer> {
MapPegawaiJabatanToUnitKerja findOneByPegawaiIdAndUnitKerjaPegawaiIdAndSubUnitKerjaPegawaiIdAndJabatanId(
Integer pegawaiId, Integer unitKerjaPegawaiId, Integer subUnitKerjaPegawaiFkId, Integer jabatanId);
@Modifying
@Query("update MapPegawaiJabatanToUnitKerja m set m.statusEnabled=false where m.pegawaiId=:pegawaiId ")
public void changeStatusEnabled(@Param("pegawaiId") Integer pegawaiId);
@Modifying
@Query("update MapPegawaiJabatanToUnitKerja m set m.isPrimary=false where m.pegawaiId=:pegawaiId and m.id!=:id and m.statusEnabled is true")
public 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")
public 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<Map<String, Object>> findAllByPegawai(@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,"
+ "m.atasanLangsungDireksi as atasanLangsungDireksi,m.pejabatPenilaiDireksi as pejabatPenilaiDireksi,"
+ "al.id as idAtasanLangsung, al.namaLengkap as atasanLangsung,"
+ "pp.id as idPejabatPenilai, pp.namaLengkap as pejabatPenilai,"
+ "j.id as idJenisJabatan,j.jenisJabatan as jenisJabatan) " + "from MapPegawaiJabatanToUnitKerja m "
+ "left join m.pegawai pegawai " + "left join m.atasanLangsung al " + "left join m.pejabatPenilai pp "
+ "left join m.unitKerjaPegawai unitKerjaPegawai " + "left join m.subUnitKerjaPegawai subUnitKerjaPegawai "
+ "left join m.jabatan jabatan " + "left join jabatan.jenisJabatan j " + "where m.statusEnabled is true "
// + "and al.statusEnabled is true "
// + "and pp.statusEnabled is true "
// + "and j.statusEnabled is true "
+ "and m.pegawaiId=:pegawaiId")
List<Map<String, Object>> findAllDetailByPegawai(@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.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.statusEnabled as statusEnabled) "
+ "from MapPegawaiJabatanToUnitKerja m " + "where m.statusEnabled is true " + "and m.pegawaiId=:pegawaiId "
+ "order by m.id")
List<Map<String, Object>> 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<Map<String, Object>> findMappDirutByLevelJabatan(@Param("levelJabatan") Integer levelJabatan,
@Param("listRestrictedId") List<Integer> listRestrictedId, @Param("listNonsdm") List<Integer> 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<Map<String, Object>> findMappDirekturByLevelJabatan(@Param("levelJabatan") Integer levelJabatan,
@Param("subLevelJabatan") Integer subLevelJabatan,
@Param("listRestrictedId") List<Integer> listRestrictedId, @Param("listNonsdm") List<Integer> 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<Map<String, Object>> findMappByLevelJabatan(@Param("unitId") Integer unitId,
@Param("pegawaiId") Integer pegawaiId, @Param("listRestrictedId") List<Integer> listRestrictedId,
@Param("listNonsdm") List<Integer> 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<Map<String, Object>> findUndefinedMapp(@Param("listRestrictedId") List<Integer> listRestrictedId,
@Param("listNonsdm") List<Integer> 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<String, Object> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> getMappLevelJabatanAndMonitoring(@Param("pegawaiId") Integer pegawaiId,
@Param("idUnit") Integer idUnit);
@Query("select distinct mapp.subUnitKerjaPegawaiId " + "from MapPegawaiJabatanToUnitKerja mapp "
+ "inner join mapp.pegawai peg " + "inner join mapp.subUnitKerjaPegawai sub "
+ "where mapp.statusEnabled is true " +
// "and mapp.isPrimary is true "+
"and peg.statusEnabled is true " + "and peg.shiftKerjaId in (1,2) " + "order by mapp.subUnitKerjaPegawaiId")
List<Integer> getSubUnitKerjaPegNonShift();
@Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId=:idPegawai")
List<Integer> getIdJabatanInternalByIdPegawai(@Param("idPegawai") Integer idPegawai);
@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 mp.pegawaiId from MapPegawaiJabatanToUnitKerja mp where mp.statusEnabled is true and mp.jabatanId = :idJabatan")
Integer getPegawaiByJabatanInternalUtama(@Param("idJabatan") Integer idJabatan);
@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<Map<String, Object>> getJabatanInternalStrukturalByPegawai(@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.pegawaiId = :idPegawai")
List<Map<String, Object>> getMapJabatanByPegawai(@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<String, Object> getMapJabatanUtamaByPegawai(@Param("idPegawai") Integer idPegawai);
@Query("select new Map(mapp.id, mapp.isCanCreateJadwal, mapp.isMonitoring, mapp.isPrimary, mapp.jabatanId, mapp.subUnitKerjaPegawaiId, mapp.unitKerjaPegawaiId) "
+ "from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId = :idPegawai")
List<Map<String, Object>> getMappByPegawai(@Param("idPegawai") Integer idPegawai);
@Query("select new Map(mapp.pegawaiId, mapp.isCanCreateJadwal, mapp.isMonitoring, mapp.isPrimary, mapp.jabatanId, mapp.subUnitKerjaPegawaiId, mapp.unitKerjaPegawaiId) "
+ "from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.id = :id")
Map<String, Object> getMappById(@Param("id") Integer id);
@Query("select new Map(mapp.id, mapp.pegawaiId, mapp.isCanCreateJadwal, mapp.isMonitoring, mapp.isPrimary, jab.levelJabatan) "
+ "from MapPegawaiJabatanToUnitKerja mapp " + "left join mapp.jabatan jab "
+ "where mapp.statusEnabled is true and jab.statusEnabled is true and jab.levelJabatan is not null "
+ "and mapp.jabatanId = :idJabatan and mapp.subUnitKerjaPegawaiId = :idSubunitKerja and mapp.unitKerjaPegawaiId = :idUnitKerja")
Map<String, Object> getMappByDetail(@Param("idJabatan") Integer idJabatan,
@Param("idSubunitKerja") Integer idSubunitKerja, @Param("idUnitKerja") Integer idUnitKerja);
@Query("select distinct mapp.pegawaiId " + "from MapPegawaiJabatanToUnitKerja mapp "
+ "inner join mapp.jabatan jab " + "where mapp.statusEnabled is true " + "and jab.statusEnabled is true "
+ "and jab.levelJabatan > :levelJabatan " + "and mapp.subUnitKerjaPegawaiId = :idSubunitKerja")
List<Integer> getPegawaiBySubunitKerja(@Param("idSubunitKerja") Integer idSubunitKerja,
@Param("levelJabatan") Integer levelJabatan);
@Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId=:idPegawai and mapp.unitKerjaPegawaiId=:idUnitKerja")
Integer getIdJabatanByPegawaiUnitKerja(@Param("idPegawai") Integer idPegawai,
@Param("idUnitKerja") Integer idUnitKerja);
@Query("select mapp.jabatanId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId=:idPegawai and mapp.unitKerjaPegawaiId=:idUnitKerja")
List<Integer> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> getMapUnitKerjaByLevelJabatan(@Param("levelJabatan") Integer levelJabatan,
@Param("sublevelJabatan") Integer sublevelJabatan);
@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<Map<String, Object>> 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<Map<String, Object>> getMapSubunitKerjaMonitoringByUnitPegawai(@Param("idPegawai") Integer idPegawai,
@Param("idUnitKerja") Integer idUnitKerja);
@Query("select distinct mapp.pegawaiId from MapPegawaiJabatanToUnitKerja mapp "
+ "where mapp.statusEnabled is true and mapp.pegawaiId is not null and mapp.unitKerjaPegawaiId = :idUnitKerja")
List<Integer> 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<String, Object> 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<Map<String, Object>> 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<Map<String, Object>> 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<String, Object> getAtasanDanUnitKerjaByPegawai(@Param("idPegawai") Integer idPegawai,
@Param("idJabatan") Integer idJabatan);
@Query("select model from MapPegawaiJabatanToUnitKerja model where model.statusEnabled is true")
List<MapPegawaiJabatanToUnitKerja> getAllMapping();
@Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) "
+ "from MapPegawaiJabatanToUnitKerja mapp "
+ "where mapp.statusEnabled is true and mapp.jabatanId is not null and mapp.unitKerjaPegawaiId is not null and mapp.subUnitKerjaPegawaiId is not null "
+ "and (mapp.pegawaiId in (:listAtasan) or mapp.pegawaiId in (:listPenilai)) and mapp.jabatanId = :jabatanId "
+ "and mapp.unitKerjaPegawaiId = :unitId and mapp.subUnitKerjaPegawaiId = :subId")
List<Map<String, Object>> getMappingJabatanDanAtasan(@Param("listAtasan") List<Integer> listAtasan,
@Param("listPenilai") List<Integer> listPenilai, @Param("jabatanId") Integer jabatanId,
@Param("unitId") Integer unitId, @Param("subId") Integer subId);
@Query("select distinct mapp.atasanLangsungId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.atasanLangsungId is not null")
List<Integer> listAtasanLangsung();
@Query("select distinct mapp.pejabatPenilaiId from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pejabatPenilaiId is not null")
List<Integer> listPejabatPenilai();
@Query("select mapp.id from MapPegawaiJabatanToUnitKerja mapp where mapp.statusEnabled is true and mapp.pegawaiId = :pegawaiId")
List<Integer> getMappingIdByPegawai(@Param("pegawaiId") Integer pegawaiId);
@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<Map<String, Object>> findFormasiJabatan(@Param("listKedudukanId") List<Integer> listKedudukanId,
@Param("listKategoriId") List<Integer> listKategoriId, @Param("listPegawaiId") List<Integer> 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<Map<String, Object>> 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<Map<String, Object>> getPegawaiByUnitKerja(@Param("idUnitKerja") Integer idUnitKerja,
@Param("idSubunitKerja") Integer idSubunitKerja);
}