package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.Pegawai; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.Date; import java.util.List; import java.util.Map; @Repository("PayRollPegawaiDao") public interface PayRollPegawaiDao extends PagingAndSortingRepository { @Query("select new Map(model.id as id," + "detailkategoripegawai.id as detailKatogoriId," + "rangemasakerja.id as rangeMasaKerjaId," + "pendidikan.id as pendidikanId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByMaKaPe model " + "left join model.detailKategoriPegawai detailkategoripegawai " + "left join model.pendidikan pendidikan " + "left join model.komponenHarga komponenharga " + "left join model.rangeMasaKerja rangemasakerja " + "where model.detailKategoriPegawai.id=:idDetailKategoriPegawai and " + "model.rangeMasaKerja.id=:idRangeMasaKerja and model.pendidikan.id=:idPendidikan") List> findGajiByMakape(@Param("idDetailKategoriPegawai") Integer idDetailKategoriPegawai, @Param("idRangeMasaKerja") Integer idRangeMasaKerja, @Param("idPendidikan") Integer idPendidikan); @Query("select new Map(model.id as id," + "detailkategoripegawai.id as detailKatogoriId," + "rangemasakerja.id as rangeMasaKerjaId," + "pendidikan.id as pendidikanId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByMaKaPe model " + "left join model.detailKategoriPegawai detailkategoripegawai " + "left join model.pendidikan pendidikan " + "left join model.komponenHarga komponenharga " + "left join model.rangeMasaKerja rangemasakerja " + "where model.detailKategoriPegawai.id=:idDetailKategoriPegawai " + "and model.pendidikan.id=:idPendidikan") List> findGajiByMakape(@Param("idDetailKategoriPegawai") Integer idDetailKategoriPegawai, @Param("idPendidikan") Integer idPendidikan); @Query("select new Map(model.id as id," + "jabatan.id as jabatanId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByJa model " + "left join model.jabatan jabatan " + "left join model.komponenHarga komponenharga " + "where jabatan.id=:idJabatan and komponenharga.id=57") List> findGajiByJa(@Param("idJabatan") Integer idJabatan); @Query("select new Map(model.id as id," + "jabatan.id as jabatanId," + "pendidikan.id as pendidikanId," + "komponenHarga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByJaPe model " + "left join model.jabatan jabatan " + "left join model.pendidikan pendidikan " + "left join model.komponenHarga komponenharga " + "where jabatan.id=:idJabatan and pendidikan.id=:idPendidikan") List> findGajiByJaPe(@Param("idJabatan") Integer idJabatan, @Param("idPendidikan") Integer idPendidikan); @Query("select new Map(model.id as id," + "leveltingkat.id as levelTingkatId," + "jabatan.id as jabatanId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByLTJa model " + "left join model.levelTingkat leveltingkat " + "left join model.jabatan jabatan " + "left join model.komponenHarga komponenharga " + "where jabatan.id=:idJabatan and leveltingkat.id=:idLevelTingkat") List> findGajiByLTJa(@Param("idJabatan") Integer idJabatan, @Param("idLevelTingkat") Integer idLevelTingkat); @Query("select new Map(model.id as id," + "rekanan.id as rekananId," + "rekanan.namaRekanan as namaRekanan," + "komponenharga.id as komponenHargaId," + "komponenharga.komponenHarga as namaKomponenHarga," + "model.hargaSatuanPremi as hargaSatuanPremi," + "model.persenHargaSatuanPremi as persenHargaSatuanPremi," + "model.factorRate as factorRate," + "model.totalFactorRatePremi as totalFactorRatePremi," + "model.isByMonth as isByMonth," + "model.isByYear as isByYear," + "model.keteranganLainnya as keteranganLainnya) " + "from PegawaiSKAsuransi model " + "left join model.rekanan rekanan " + "left join model.komponenHarga komponenharga " + "where model.rekanan.id=:idRekananPenjamin and komponenharga.id=:idKomponenHarga " + "and model.statusEnabled=true") List> findGajiByAsuransi(@Param("idRekananPenjamin") Integer idRekananPenjamin, @Param("idKomponenHarga") Integer idKomponenHarga); @Query("select new Map(model.id as id," + "golonganpegawai.id as golonganPegawaiId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByGolongan model " + "left join model.golonganPegawai golonganpegawai " + "left join model.komponenHarga komponenharga " + "where golonganpegawai.id=:idGolonganPegawai and komponenharga.id=:idKomponenHarga") List> findGajiByGolongan(@Param("idGolonganPegawai") Integer idGolonganPegawai, @Param("idKomponenHarga") Integer idKomponenHarga); @Query("select new Map(model.id as id," + "golonganpegawai.id as golonganPegawaiId," + "objekpajak.id as objekPajakId," + "objekpajak.objekPajak as objekPajak," + "range.id as rangeId," + "model.persenPajak as persenPajak," + "model.keteranganLainnya as keteranganLainnya) " + "from PegawaiSKPajak model " + "left join model.objekPajak objekpajak " + "left join model.golonganPegawai golonganpegawai " + "left join model.range range " + "where :idObjekPajak=:idObjekPajak and golonganpegawai.id=:idGolongaPegawai and " + "range.id=:idRange") List> findGajiByPajak(@Param("idObjekPajak") Integer idObjekPajak, @Param("idGolongaPegawai") Integer idGolongaPegawai, @Param("idRange") Integer idRange); @Query("select new Map(model.id," + "model.golonganPegawai.id," + "model.objekPajak.id," + "model.range.id," + "model.persenPajak," + "model.keteranganLainnya) " + "from PegawaiSKPajak model " + "where model.objekPajak.id=:idObjekPajak and model.golonganPegawai.id=:idGolongaPegawai and " + "model.range.id=:idRange") List> findPegawaiByDetailKategory(@Param("idObjekPajak") Integer idObjekPajak, @Param("idGolongaPegawai") Integer idGolongaPegawai, @Param("idRange") Integer idRange); @Query("select new Map (model.namaLengkap as namaLengkap," + "golonganpegawai.golonganPegawai as golonganPegawai," + "golonganpegawai.id as golonganPegawaiId," + "golonganPPPK.namaGolongan as golonganPPPK," + "golonganPPPK.id as golonganPPPKId," + "pendidikan.namaPendidikan as pendidikan," + "pendidikan.id as pendidikanId," + "jabatanfungsional.id as jabatanId," + "jabatanfungsional.namaJabatan as namaJabatan," + "detailkategoripegawai.id as detailKategoriPegawaiId," + "detailkategoripegawai.detailKategoryPegawai as detailKategoriPegawai," + "model.nipPns as nipPns," + "statuspegawai.statusPegawai as statusPegawai," + "kategoripegawai.kategoryPegawai as kategoriPegawai," + "model.tglMasuk as tglMasuk," + "model.id as pegawaiId," + "kelompokshift.id as kelompokShiftId," + "ruangan.id as ruanganId," + "ruangan.namaRuangan as namaRuangan) " + "from Pegawai model " + "left join model.golonganPegawai golonganpegawai " + "left join model.golonganPPPK golonganPPPK " + "left join model.pendidikan pendidikan " + "left join model.jabatanFungsional jabatanfungsional " + "left join model.detailKategoryPegawai detailkategoripegawai " + "left join detailkategoripegawai.kategoryPegawai kategoripegawai " + "left join model.statusPegawai statuspegawai " + "left join model.shiftKerja kelompokshift " + "left join model.ruangan ruangan " + "where detailkategoripegawai.id = :idDetailKategoriPegawai and statuspegawai.id=2 " + "order by model.namaLengkap") List> findPegawaiByDetailKategori( @Param("idDetailKategoriPegawai") Integer idDetailKategoriPegawai); @Query("select new Map(model.id as id, " + "model.komponenHarga as komponenHarga) " + "from KomponenHarga model " + "where model.id=:idKomponenHarga") Map findKomponenHargaNameById(@Param("idKomponenHarga") Integer idKomponenHarga); @Query("select new Map(model.id as id, " + "model.objekPajak as objekPajak) " + "from ObjekPajak model " + "where model.id=:idObjekPajak") Map findObjekPajakById(@Param("idObjekPajak") Integer idObjekPajak); @Query("select new Map(model.id as id) from Range model where namarange='Range Masa Kerja' and (rangemin<=:umur and rangemax>=:umur)") Map findRangeId(@Param("umur") Integer umur); @Query("select new Map(model.id as id,model.detailKategoryPegawai as detailKategoryPegawai) from DetailKategoryPegawai model where model.id in (:ids)") List> findDetailKategoryPegawaiBluPkwt(@Param("ids") List ids); @Query("select new Map(model.id as id,model.name as name) from JenisGaji model") List> findAllJenisGaji(); @Query("select new Map(kelompokshift.id as kelompokShifId,kelompokshift.kelompokShiftKerja as kelompokShiftKerja," + "shiftkerja.id as shiftKerjaId,shiftkerja.namaShift as shiftKerja," + "komponenindex.id as komponenIndexId," + "komponenindex.komponenIndex as komponenIndex) " + "from MapKelompokShiftToShift model " + "left join model.kelompokShift kelompokshift " + "left join model.shiftKerja shiftkerja " + "left join shiftkerja.komponenIndex komponenindex " + "where kelompokshift.id = :idKelompokShift") List> findKomponenIndexByIdKelompokShift(@Param("idKelompokShift") Integer idKelompokShift); @Query("select new Map(sum(model.nilaiIndex) as sumNilaiIndex," + "pegawai.id as pegawaiId," + "ruangan.id as ruaganId ) " + "from PegawaiHistoriRekapIndex model " + "left join model.komponenIndex komponenindex " + "left join model.strukHistory strukhistory " + "left join model.pegawai pegawai " + "left join strukhistory.ruangan ruangan " + "where komponenindex.id in (:listKomponenIndex) and ruangan.id=:idRuangan and pegawai.id=:idPegawai " + "and to_char(strukhistory.tglAwal,'mm-yyyy')=:periodeBulan " + "group by pegawai.id,ruangan.id") Map getJumlahHari(@Param("listKomponenIndex") List listKomponenIndex, @Param("idRuangan") Integer idRuangan, @Param("idPegawai") Integer idPegawai, @Param("periodeBulan") String periodeBulan); @Query("select new Map(model.id as id," + "golonganpegawai.id as golonganPegawaiId," + "komponenharga.id as komponenHargaId," + "model.hargaSatuan as hargaSatuan," + "model.factorRate as factorRate) " + "from PegawaiStrukturGajiByGolongan model " + "left join model.golonganPegawai golonganpegawai " + "left join model.komponenHarga komponenharga " + "where komponenharga.id=:idKomponenHarga") List> findGajiHarianLepas(@Param("idKomponenHarga") Integer idKomponenHarga); @Query("select new Map (model.namaLengkap as namaLengkap," + "golonganpegawai.golonganPegawai as golonganPegawai," + "golonganpegawai.id as golonganPegawaiId," + "golonganPPPK.namaGolongan as golonganPPPK," + "golonganPPPK.id as golonganPPPKId," + "pendidikan.namaPendidikan as pendidikan," + "pendidikan.id as pendidikanId," + "jabatanfungsional.id as jabatanId," + "jabatanfungsional.namaJabatan as namaJabatan," + "detailkategoripegawai.id as detailKategoriPegawaiId," + "detailkategoripegawai.detailKategoryPegawai as detailKategoriPegawai," + "model.nipPns as nipPns," + "statuspegawai.statusPegawai as statusPegawai," + "kategoripegawai.kategoryPegawai as kategoriPegawai," + "model.tglMasuk as tglMasuk," + "model.id as pegawaiId," + "kelompokshift.id as kelompokshiftId," + "ruangan.id as ruanganId," + "ruangan.namaRuangan as namaRuangan) " + "from Pegawai model " + "left join model.golonganPegawai golonganpegawai " + "left join model.golonganPPPK golonganPPPK " + "left join model.pendidikan pendidikan " + "left join model.jabatanFungsional jabatanfungsional " + "left join model.detailKategoryPegawai detailkategoripegawai " + "left join detailkategoripegawai.kategoryPegawai kategoripegawai " + "left join model.statusPegawai statuspegawai " + "left join model.shiftKerja kelompokshift " + "left join model.jenisPegawai jenispegawai " + "left join model.ruangan ruangan " + "where detailkategoripegawai.id = :idDetailKategoriPegawai and statuspegawai.id=2 " + "and jenispegawai.id = 1 " + "order by model.namaLengkap") List> findPegawaiByDetailKategoriDokterPsikologi( @Param("idDetailKategoriPegawai") Integer idDetailKategoriPegawai); @Query("select new Map (model.namaLengkap as namaLengkap," + "golonganpegawai.golonganPegawai as golonganPegawai," + "golonganpegawai.id as golonganPegawaiId," + "golonganPPPK.namaGolongan as golonganPPPK," + "golonganPPPK.id as golonganPPPKId," + "pendidikan.namaPendidikan as pendidikan," + "pendidikan.id as pendidikanId," + "jabatanfungsional.id as jabatanId," + "jabatanfungsional.namaJabatan as namaJabatan," + "detailkategoripegawai.id as detailKategoriPegawaiId," + "detailkategoripegawai.detailKategoryPegawai as detailKategoriPegawai," + "model.nipPns as nipPns," + "statuspegawai.statusPegawai as statusPegawai," + "kategoripegawai.kategoryPegawai as kategoriPegawai," + "model.tglMasuk as tglMasuk," + "model.id as pegawaiId," + "kelompokshift.id as kelompokshiftId," + "ruangan.id as ruanganId," + "ruangan.namaRuangan as namaRuangan," + "model.tglLahir as tglLahir," + "asuransiPasien.noAsuransi as noAsuransi," + "rekanan.id as rekananId," + "rekanan.namaRekanan as namaRekanan) " + "from AsuransiPasien asuransiPasien " + "left join asuransiPasien.pegawai model " + "left join model.golonganPegawai golonganpegawai " + "left join model.golonganPPPK golonganPPPK " + "left join model.pendidikan pendidikan " + "left join model.jabatanFungsional jabatanfungsional " + "left join model.detailKategoryPegawai detailkategoripegawai " + "left join detailkategoripegawai.kategoryPegawai kategoripegawai " + "left join model.statusPegawai statuspegawai " + "left join model.shiftKerja kelompokshift " + "left join model.ruangan ruangan " + "left join asuransiPasien.rekanan rekanan " + "where rekanan.id is not null and statuspegawai.id=2 " + "and rekanan.id = :idRekanan " + "order by model.namaLengkap") List> findPegawaiByAsuransi(@Param("idRekanan") Integer idRekanan); @Query("select new Map(model.totalFactorRatePremi as umr, " + "to_char(nosk.tglBerlakuAkhir,'yyyy') as tahun ) " + "from PegawaiSKAsuransi model " + "left join model.noSK nosk " + "where nosk.tglBerlakuAwal <= :periode " + "and nosk.tglBerlakuAkhir >= :periode " + "and model.statusEnabled=true") public List> findUmr(@Param("periode") Date periode); }