2021-01-07 11:34:56 +07:00

318 lines
15 KiB
Java

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<Pegawai, Integer> {
@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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<String,Object> 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<String,Object> 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<String,Object> 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<Map<String,Object>> findDetailKategoryPegawaiBluPkwt(@Param("ids")List<Integer> ids);
@Query("select new Map(model.id as id,model.name as name) from JenisGaji model")
List<Map<String,Object>> 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<Map<String,Object>> 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<String,Object> getJumlahHari(@Param("listKomponenIndex")List<Integer> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String,Object>> findUmr(@Param("periode") Date periode);
}