package com.jasamedika.medifirst2000.dao; import java.util.Date; import java.util.List; import java.util.Map; 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 com.jasamedika.medifirst2000.entities.Pegawai; @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," + "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.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," + "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.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," + "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.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); }