package com.jasamedika.medifirst2000.dao; 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.LimbahB3Keluar; @Repository("LimbahB3KeluarDao") public interface LimbahB3KeluarDao extends PagingAndSortingRepository { @Query("select model from LimbahB3Keluar model where date(model.tanggal) between date(:periodeAwal) and date(:periodeAkhir) " + " and (model.statusEnabled is null or model.statusEnabled is true) ") public List findLimbahB3KeluarByPeriode(@Param("periodeAwal") String periodeAwal, @Param("periodeAkhir") String periodeAkhir); @Query("select new map(lk.noRec as noRec, " + " lk.tanggal as tanggal, lk.jumlahLimbahB3Keluar as jumlahLimbahB3Keluar, " + " lk.tujuanPenyerahan as tujuanPenyerahan, " + " lk.buktiNomerDokumen as buktiNomerDokumen, " + " lk.sisaLimbahB3 as sisaLimbahB3, " + " lk.periodeAwal as periodeAwal, " + " lk.periodeAhir as periodeAhir, " + " lk.total as total, " + " lk.maksimalPenyimpanan as maksimalPenyimpanan, " + " jl.id as idJenisLimbah, " + " jl.jenisLimbahB3masuk as jenisLimbahB3masuk, " + " r.id as idRekanan, r.namaRekanan as namaRekanan) " + " from LimbahB3Keluar lk " + " left join lk.jenisLimbahB3Masuk jl " + " left join lk.rekanan r where date(lk.tanggal) between date(:periodeAwal) and date(:periodeAkhir)" + " and (lk.statusEnabled is null or lk.statusEnabled is true) ") List> getLimbahKeluar(@Param("periodeAwal")String periodeAwal, @Param("periodeAkhir")String periodeAkhir); //Jenis rekan khusus Kesling @Query("select new map(r.id as id, " + " r.namaRekanan as namaRekanan) " + " from Rekanan r left join r.jenisRekanan j where j.id in(11)") List> getRekananByJenisRekanan(); //menghitung total limbah yg masih ada ditps //formula : setting sampai tgl.terakhir //dikurangi setelah pengambilan oleh pihak ke-3 @Query("select new map(coalesce(sum(sp.qtyproduk),0) as ttlqtymasuk) " + " from StrukPelayanan sp left join sp.jenisLimbahB3Masuk jk " + " where jk.id=:jenisLimbah and (sp.statusEnabled is null or sp.statusEnabled is true)") Map getLimbahMasukdiTpsByJenisLimbah(@Param("jenisLimbah")Integer jenisLimbah); //menghitung total limbah yg masih ada ditps //formula : setting sampai tgl.terakhir //dikurangi setelah pengambilan oleh pihak ke-3 @Query("select new map(coalesce(sum(lk.jumlahLimbahB3Keluar),0) as ttlqtykeluar) " + " from LimbahB3Keluar lk left join lk.jenisLimbahB3Masuk jk " + " where jk.id=:jenisLimbah and (lk.statusEnabled is null or lk.statusEnabled is true) ") Map getLimbahKeluardiTpsByJenisLimbah(@Param("jenisLimbah")Integer jenisLimbah); @Query("select new map(j.id as jenisLimbah, j.jenisLimbahB3masuk as jenisLimbahB3masuk) " + " from JenisLimbahB3Masuk j where j.id=:jenisLimbah") List> getJenisLimbah(@Param("jenisLimbah")Integer jenisLimbah); @Query( " select "+ " new map(jl.id as idJenisLimbah, "+ " jl.jenisLimbahB3masuk as jenisLimbahB3masuk, "+ " to_char(lk.tanggal, 'yyyy/MM/dd') as tanggal, "+ " coalesce(lk.jumlahLimbahB3Keluar,0) as jumlahLimbahB3Keluar, "+ " lk.buktiNomerDokumen as buktiNomerDokumen, "+ " coalesce(lk.sisaLimbahB3,0) as sisaLimbahB3, "+ " coalesce(lk.total,0) as total, "+ " coalesce(lk.maksimalPenyimpanan,0) as maksimalPenyimpanan) "+ " from LimbahB3Keluar lk "+ " left join lk.jenisLimbahB3Masuk jl "+ " left join lk.rekanan r where date(lk.tanggal) between date(:periodeAwal) and date(:periodeAkhir) "+ " and (lk.statusEnabled is null or lk.statusEnabled is true) "+ // " group by "+ // " jl.id, "+ // " jl.jenisLimbahB3masuk, "+ // " to_char(lk.tanggal, 'dd/mm/yyyy'), "+ // " lk.buktiNomerDokumen "+ " order by to_char(lk.tanggal, 'dd/mm/yyyy'),jl.id" ) List> getLimbahKeluarV2(@Param("periodeAwal")String periodeAwal, @Param("periodeAkhir")String periodeAkhir); }