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

89 lines
4.2 KiB
Java

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<LimbahB3Keluar, String> {
@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<LimbahB3Keluar> 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<Map<String, Object>> 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<Map<String, Object>> 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<String, Object> 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<String, Object> 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<Map<String, Object>> 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<Map<String, Object>> getLimbahKeluarV2(@Param("periodeAwal")String periodeAwal,
@Param("periodeAkhir")String periodeAkhir);
}