package com.jasamedika.medifirst2000.dao; import com.jasamedika.medifirst2000.entities.SlipGajiKomponen; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.Date; import java.util.List; import java.util.Map; /** * @author salmanoe * @since Jan 30, 2023 */ public interface SlipGajiKomponenDao extends JpaRepository { @Query("select new Map(sgk.id as id," + "sgk.komponen.jenisKomponen as idJenisKomponen," + "case when sgk.komponen.jenisKomponen = 1 then 'Gaji' " + "when sgk.komponen.jenisKomponen = 2 then 'Remunerasi' " + "when sgk.komponen.jenisKomponen = 3 then 'Uang Makan' " + "when sgk.komponen.jenisKomponen = 4 then 'Potongan Gaji' " + "when sgk.komponen.jenisKomponen = 5 then 'Potongan Remunerasi' " + "when sgk.komponen.jenisKomponen = 6 then 'Potongan Uang Makan' end as jenisKomponen," + "sgk.komponen.id as idKomponen," + "sgk.komponen.namaKomponen as namaKomponen," + "sgk.komponen.urutan as urutan," + "sgk.nominal as nominal) " + "from SlipGajiKomponen sgk " + "where sgk.slipGaji.pegawai.id = :pegawaiId " + "and sgk.slipGaji.bulan between :start and :end " + "order by sgk.komponen.jenisKomponen, sgk.komponen.urutan") List> findAll(@Param("pegawaiId") Integer pegawaiId, @Param("start") Date start, @Param("end") Date end); @Query("select new Map(sgk.id as id," + "pg.id as idPegawai," + "mk.id as idKomponen," + "sgk.nominal as nominal) " + "from SlipGajiKomponen sgk " + "inner join sgk.slipGaji sg " + "inner join sgk.komponen mk " + "inner join sg.pegawai pg " + "where sg.bulan between :start and :end " + "order by pg.id, mk.id") List> findAll(@Param("start") Date start, @Param("end") Date end); @Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id = :idSlipGaji " + "and sgk.komponen.id = :idKomponen") SlipGajiKomponen findBySlipGajiAndKomponen(@Param("idSlipGaji") String idSlipGaji, @Param("idKomponen") Integer idKomponen); @Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id in (:listIdSlipGaji)") List findAllBySlipGaji(@Param("listIdSlipGaji") List listIdSlipGaji); }