From 8d8b0af40c960882311f262290263eab4311e24e Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 17 Oct 2022 09:38:08 +0700 Subject: [PATCH] Update DateUtil.java Perbaikan kondisi query hanya melibatkan timestamp datatype untuk peningkatan performance --- .../dao/IkiDanRemunerasiDao.java | 8 +- .../medifirst2000/dao/IndekKinerjaDao.java | 65 +++---- .../medifirst2000/dao/KalenderDao.java | 9 +- .../medifirst2000/dao/LogbookKinerjaDao.java | 5 +- .../dao/LogbookKinerjaDokterDao.java | 7 +- .../medifirst2000/dao/PasienDaftarDao.java | 4 +- .../dao/PegawaiJadwalKerjaDao.java | 5 +- .../medifirst2000/dao/RevIndekKinerjaDao.java | 11 +- .../RiwayatPenilaianKompetensiPegawaiDao.java | 168 ++++++++---------- .../medifirst2000/dao/SettingPirSdmDao.java | 48 ++--- .../dao/TargetSkorDokterDetailDao.java | 18 +- ...embanganPasienTerintegrasiServiceImpl.java | 8 +- .../impl/IkiDanRemunerasiServiceImpl.java | 21 ++- .../service/impl/IndekKinerjaServiceImpl.java | 17 +- .../impl/LogbookKinerjaDetailServiceImpl.java | 16 +- .../impl/LogbookKinerjaServiceImpl.java | 46 +++-- .../service/impl/PasienDaftarServiceImpl.java | 6 +- .../impl/PegawaiJadwalKerjaServiceImpl.java | 5 +- .../impl/RekamDataPegawaiServiceImpl.java | 25 +-- ...PenilaianKompetensiPegawaiServiceImpl.java | 37 +++- .../medifirst2000/util/DateUtil.java | 158 +++++++++++----- 21 files changed, 392 insertions(+), 295 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java index d3fec516..f855c509 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IkiDanRemunerasiDao.java @@ -95,8 +95,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository> findIdProdukByIdUser(@Param("id") Integer id, @Param("month") String month, - @Param("listIdJenisProduk") List listIdJenisProduk); + public List> findIdProdukByIdUser(@Param("id") Integer id, @Param("start") Date start, + @Param("end") Date end, @Param("listIdJenisProduk") List listIdJenisProduk); @Query(" select distinct new map (case when pelayananPasienPetugas.kdjenispetugaspe.id in (6,13) then pelayananPasienPetugas.kdjenispetugaspe.id else 4 end as idJenisPelaksana, produk.namaProduk as namaProduk, produk.id as idProduk, " + " pelayananPasien.hargaSatuan as harga, kelas.namaKelas as namaKelas, kelas.id as idKelas, detail.id as detailId, " @@ -73,12 +74,13 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository> findIdProdukByIdUserWithDetailException(@Param("id") Integer id, - @Param("month") String month, @Param("listIdJenisProduk") List listIdJenisProduk, + @Param("start") Date start, @Param("end") Date end, + @Param("listIdJenisProduk") List listIdJenisProduk, @Param("listIdDetailJenisProduk") List listIdDetailJenisProduk); @Query(" select produk.id " + " from PelayananPasienPetugas pelayananPasienPetugas" @@ -86,20 +88,20 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository findIdProdukByIdUser2(@Param("id") Integer id, @Param("month") String month, - @Param("listIdJenisProduk") List listIdJenisProduk); + + "where dokter.id=:id and pelayananPasien.tglPelayanan between " + + " :start and :end and jenisProduk.id not in (:listIdJenisProduk) ") + public List findIdProdukByIdUser2(@Param("id") Integer id, @Param("start") Date start, + @Param("end") Date end, @Param("listIdJenisProduk") List listIdJenisProduk); @Query(" select produk.id " + " from PelayananPasienPetugas pelayananPasienPetugas" + " left join pelayananPasienPetugas.kdpegawai dokter" + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" + " left join pelayananPasien.produk produk " + " left join pelayananPasien.kelas kelas " + " left join produk.detailJenisProduk detail" + " left join detail.jenisProduk jenisProduk " - + "where dokter.id=:id and to_char(pelayananPasien.tglPelayanan,'yyyy-MM') = " - + " :month and jenisProduk.id not in (:listIdJenisProduk) and detail.id not in (:listDetailJenisProduk) ") - public List findIdProdukByIdUser2WithException(@Param("id") Integer id, @Param("month") String month, - @Param("listIdJenisProduk") List listIdJenisProduk, + + "where dokter.id=:id and pelayananPasien.tglPelayanan between " + + " :start and :end and jenisProduk.id not in (:listIdJenisProduk) and detail.id not in (:listDetailJenisProduk) ") + public List findIdProdukByIdUser2WithException(@Param("id") Integer id, @Param("start") Date start, + @Param("end") Date end, @Param("listIdJenisProduk") List listIdJenisProduk, @Param("listDetailJenisProduk") List listDetailJenisProduk); @Query(" select distinct new map ( produk.namaProduk as namaProduk, produk.id as produkId," @@ -192,10 +194,10 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository> findAllProdukPerPeriode(@Param("id") Integer id, @Param("periode") String periode, - @Param("listIdJenisProduk") List listIdJenisProduk); + public List> findAllProdukPerPeriode(@Param("id") Integer id, @Param("start") Date start, + @Param("end") Date end, @Param("listIdJenisProduk") List listIdJenisProduk); @Query(" select new map (produk.namaProduk as namaProduk, produk.id as produkId," + " count(distinct pelayananPasien.noRec) as count,pelayananPasien.hargaSatuan as harga,detail.id as detailId,jenisProduk.id as idJenisProduk)" @@ -267,10 +269,10 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository idJenisProduk); @Query(" select distinct pelayananPasien.hargaSatuan" + " from PelayananPasienPetugas pelayananPasienPetugas" @@ -295,11 +297,11 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository> findCountTindakanPerTanggalAndProdukId(@Param("idPegawai") Integer idPegawai, - @Param("produkId") Integer produkId, @Param("periode") String periode); + @Param("produkId") Integer produkId, @Param("start") Date start, @Param("end") Date end); @Query(" select count(produk.id) as jumlah " + " from PelayananPasienPetugas pelayananPasienPetugas" + " left join pelayananPasienPetugas.kdpegawai dokter" @@ -389,20 +391,21 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository> findTindakanByIdPegawaiAndPeriod(@Param("startDate") String startDate, - @Param("id") Integer id, @Param("listIdJenisProduk") List listIdJenisProduk); + public List> findTindakanByIdPegawaiAndPeriod(@Param("start") Date start, + @Param("end") Date end, @Param("id") Integer id, + @Param("listIdJenisProduk") List listIdJenisProduk); @Query(" select new map (produk.namaProduk as namaProduk, produk.id as produkId," + " count(produk.namaProduk) as count,pelayananPasien.hargaSatuan as harga,detail.id as detailId,jenisProduk.id as idJenisProduk)" diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/KalenderDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/KalenderDao.java index a8ff762b..aa9833ea 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/KalenderDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/KalenderDao.java @@ -23,16 +23,17 @@ public interface KalenderDao extends PagingAndSortingRepository> getTanggalFromPeriodicParameter(@Param("tglAwal") String tglAwal, @Param("tglAkhir") String tglAkhir); - @Query("select new Map(k.id as id,to_char(k.tanggal,'dd') as tanggal) from Kalender k where to_char(k.tanggal,'yyyy-MM') = :bulan") - List> getKalenderBulanan(@Param("bulan") String bulan); + @Query("select new Map(k.id as id,to_char(k.tanggal,'dd') as tanggal) " + + "from Kalender k where k.tanggal between :start and :end") + List> getKalenderBulanan(@Param("start") Date start, @Param("end") Date end); @Query(nativeQuery = true, value = "select kal.tanggal from kalender_s kal order by kal.tanggal desc limit 1") Date getLastDateData(); @Query(nativeQuery = true, value = "select kl.* from kalender_s kl " + "left join mapkalendertoharilibur_m mkl on kl.id = mkl.objecttanggalfk " - + "where to_char(kl.tanggal, 'yyyy-MM') = :bulan " + + "where kl.tanggal between :start and :end " + "and kl.namahari not in ('Sabtu', 'Minggu') and mkl.id is null") - List getTargetKerja(@Param("bulan") String bulan); + List getTargetKerja(@Param("start") Date start, @Param("end") Date end); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java index d144ff60..9dc2ea0e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -242,9 +243,9 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository findPegawaiKontrakByIndikator(@Param("bulan") String bulan, + List findPegawaiKontrakByIndikator(@Param("start") Date start, @Param("end") Date end, @Param("indikatorId") Integer idIndikator); @Query("select distinct new Map(jb.id as id,jb.namaJabatan as namaJabatan," diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDokterDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDokterDao.java index d0b18f5e..63c2791a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDokterDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDokterDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -31,7 +32,7 @@ public interface LogbookKinerjaDokterDao extends PagingAndSortingRepository> findDetailLogbookDokter(@Param("bulan") String bulan, + public List> findDetailLogbookDokter(@Param("start") Date start, @Param("end") Date end, @Param("pegawaiId") Integer idPegawai, @Param("jabatanId") Integer idJabatan, @Param("indikatorId") Integer idIndikator); @Query(strVerifCppt + tblKinerjaDokter + whrBulan + whrPegawai + whrIndikator + whrDetailIndikator) - public Map findDetailKinerjaDokter(@Param("bulan") String bulan, + public Map findDetailKinerjaDokter(@Param("start") Date start, @Param("end") Date end, @Param("pegawaiId") Integer idPegawai, @Param("indikatorId") Integer idIndikator, @Param("detailIndikatorId") Integer idDetailIndikator); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java index f8ed5911..96be36da 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PasienDaftarDao.java @@ -297,10 +297,10 @@ public interface PasienDaftarDao extends PagingAndSortingRepository> findRekapDiskon(@Param("periode") String periode); + List> findRekapDiskon(@Param("start") Date start, @Param("end") Date end); @Query("select new Map(ul.tanggal as tanggal," + "pg.id as pegawaiId," + "pg.namaLengkap as namaLengkap," + "ul.jenisLog as jenisLog," + "ul.keterangan as keterangan) " + "from UserLogging ul " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiJadwalKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiJadwalKerjaDao.java index 9b012017..fefa5f9e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiJadwalKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PegawaiJadwalKerjaDao.java @@ -50,8 +50,9 @@ public interface PegawaiJadwalKerjaDao extends PagingAndSortingRepository getListJadwal(@Param("pegawaiId") Integer pegawaiId, @Param("date") String date); + + "where kalender.tanggal between :start and :end " + "and pegawai.id = :pegawaiId") + List getListJadwal(@Param("pegawaiId") Integer pegawaiId, @Param("start") Date start, + @Param("end") Date end); @Query("select count(kalender.tanggal) " + "from PegawaiJadwalKerja jadwalKerja " + "left join jadwalKerja.pegawai pegawai " + "left join jadwalKerja.tanggal kalender " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java index 5177cca1..d1b9dd0b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RevIndekKinerjaDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -60,12 +61,10 @@ public interface RevIndekKinerjaDao extends PagingAndSortingRepository> getAllTindakanByPeriod(@Param("id") Integer id, - @Param("startDate") String startDate, @Param("endDate") String endDate, - @Param("listIdJenisProduk") List listIdJenisProduk); + + " where pelayananPasienPetugas.ObjectPegawaiId=:id and pelayananPasien.tglPelayanan " + + " between :start and :end and detail.id in :listIdJenisProduk " + " order by produk.namaProduk asc") + public List> getAllTindakanByPeriod(@Param("id") Integer id, @Param("start") Date start, + @Param("end") Date end, @Param("listIdJenisProduk") List listIdJenisProduk); String QueryList = "select new map(case when pelayananPasienPetugas.kdjenispetugaspe.id in (6,13) then pelayananPasienPetugas.kdjenispetugaspe.id else 4 end as idJenisPelaksana, " + "detail.id as detailId,detail.detailJenisProduk as detailJenisProduk" diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RiwayatPenilaianKompetensiPegawaiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RiwayatPenilaianKompetensiPegawaiDao.java index 90248119..fd8d7cea 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RiwayatPenilaianKompetensiPegawaiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RiwayatPenilaianKompetensiPegawaiDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -10,106 +11,81 @@ import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.PegawaiHistoriEvaluasiKomponen;; - @Repository("RiwayatPenilaianKompetensiPegawai") -public interface RiwayatPenilaianKompetensiPegawaiDao extends PagingAndSortingRepository{ +public interface RiwayatPenilaianKompetensiPegawaiDao + extends PagingAndSortingRepository { - @Query("select new map (komponenEvaluasi.reportDisplay as kompetensi, "+ - "komponenEvaluasi.nilaiStandar as nilaiStandar,komponenEvaluasi.id as idKomponenEvaluasi, "+ - "jabatan.id as idJabatan, "+ - "kelompokEvaluasi.id as idKelompokEvaluasi, "+ - "kelompokEvaluasi.kelompokEvaluasi as kelompokEvaluasi, "+ - "komponenEvaluasi.deskripsiKompetensi as deskripsiKompetensi ) "+ - "from KomponenEvaluasi komponenEvaluasi "+ - "left join komponenEvaluasi.jabatan jabatan "+ - "left join komponenEvaluasi.kelompokEvaluasi kelompokEvaluasi "+ - "left join komponenEvaluasi.departemen departemen "+ - "where jabatan.id = :idjabatan") - List> getPenilaianKompetensiRiwayat(@Param("idjabatan") Integer idjabatan); - - @Query("select new map (komponenEvaluasi.komponenEvaluasi as kompetensi, "+ - "komponenEvaluasi.nilaiStandar as nilaiStandar, "+ - "jabatan.id as jabatanId, "+ - "komponenEvaluasi.id as idKomponenEvaluasi, "+ - "jabatan.namaJabatan as namaJabatan, "+ - "kelompokEvaluasi.id as idKelompokEvaluasi, "+ - "kelompokEvaluasi.kelompokEvaluasi as jenisKompetensi) "+ - "from KomponenEvaluasi komponenEvaluasi "+ - "left join komponenEvaluasi.jabatan jabatan "+ - "left join komponenEvaluasi.kelompokEvaluasi kelompokEvaluasi "+ - "where jabatan.id = :idjabatan "+ - "order by kelompokEvaluasi.id ") - List> getKompetensiByRuangan(@Param("idjabatan") Integer idjabatan); - - @Query("select new map (pegawaiHistoriEvaluasiKomponen.noRec as idPegawaiHistoriEvaluasiKomponen, "+ - "pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, "+ - "komponenEvaluasi.id as idKomponenEvaluasi, "+ - "komponenEvaluasi.nilaiStandar as nilaiStandar, "+ - "komponenEvaluasi.komponenEvaluasi as kompetensi, "+ - "pegawai.id as idpegawai, "+ - "strukHistory.noRec as noRecStrukHistory, "+ - "pegawaiHistoryEvaluasi.noRec as noRecPegawaiHistoryEvaluasi, "+ - "pegawaiHistoryEvaluasi.rekomendasi as rekomendasi, "+ - "strukHistory.tglHistori as tglHistory, "+ - "ruangan.id as idRuangan) "+ - "from PegawaiHistoriEvaluasiKomponen pegawaiHistoriEvaluasiKomponen "+ - "left join pegawaiHistoriEvaluasiKomponen.komponenEvaluasi komponenEvaluasi "+ - "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai "+ - "left join pegawaiHistoriEvaluasiKomponen.strukHistory strukHistory "+ - "left join strukHistory.ruangan ruangan "+ - "left join strukHistory.pegawaiHistoriEvaluasi pegawaiHistoryEvaluasi "+ - "where pegawai.id = :idPegawai and to_char(strukHistory.tglHistori,'yyyy-MM')=:periode "+ - "and komponenEvaluasi.id =:idKomponen") - Map getKompetensiByPegawai(@Param("idPegawai") Integer idPegawai,@Param("periode") String periode,@Param("idKomponen") Integer idKomponen); - - @Query("select new map( "+ - "kelompokEvaluasi.kelompokEvaluasi as title, "+ - "kelompokEvaluasi.id as idKelompokEvaluasi) "+ - "from KelompokEvaluasi kelompokEvaluasi "+ - "where kelompokEvaluasi.id between 1 and 4") - List> getKelompokEvaluasi(); - - @Query("select new map(pendidikan.namaPendidikan as namaPendidikan, "+ - " pegawai.tglMasuk as tglMasuk)"+ - " from MapPegawaiJabatanToUnitKerja mapPegawai " - + "left join mapPegawai.pegawai pegawai " - + "left join pegawai.pendidikan pendidikan " - + "left join mapPegawai.jabatan jabatanInternal " - + "where mapPegawai.isPrimary is true " - + "and mapPegawai.statusEnabled is true " + @Query("select new map (komponenEvaluasi.reportDisplay as kompetensi, " + + "komponenEvaluasi.nilaiStandar as nilaiStandar,komponenEvaluasi.id as idKomponenEvaluasi, " + + "jabatan.id as idJabatan, " + "kelompokEvaluasi.id as idKelompokEvaluasi, " + + "kelompokEvaluasi.kelompokEvaluasi as kelompokEvaluasi, " + + "komponenEvaluasi.deskripsiKompetensi as deskripsiKompetensi ) " + + "from KomponenEvaluasi komponenEvaluasi " + "left join komponenEvaluasi.jabatan jabatan " + + "left join komponenEvaluasi.kelompokEvaluasi kelompokEvaluasi " + + "left join komponenEvaluasi.departemen departemen " + "where jabatan.id = :idjabatan") + List> getPenilaianKompetensiRiwayat(@Param("idjabatan") Integer idjabatan); + + @Query("select new map (komponenEvaluasi.komponenEvaluasi as kompetensi, " + + "komponenEvaluasi.nilaiStandar as nilaiStandar, " + "jabatan.id as jabatanId, " + + "komponenEvaluasi.id as idKomponenEvaluasi, " + "jabatan.namaJabatan as namaJabatan, " + + "kelompokEvaluasi.id as idKelompokEvaluasi, " + "kelompokEvaluasi.kelompokEvaluasi as jenisKompetensi) " + + "from KomponenEvaluasi komponenEvaluasi " + "left join komponenEvaluasi.jabatan jabatan " + + "left join komponenEvaluasi.kelompokEvaluasi kelompokEvaluasi " + "where jabatan.id = :idjabatan " + + "order by kelompokEvaluasi.id ") + List> getKompetensiByRuangan(@Param("idjabatan") Integer idjabatan); + + @Query("select new map (pegawaiHistoriEvaluasiKomponen.noRec as idPegawaiHistoriEvaluasiKomponen, " + + "pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, " + + "komponenEvaluasi.id as idKomponenEvaluasi, " + "komponenEvaluasi.nilaiStandar as nilaiStandar, " + + "komponenEvaluasi.komponenEvaluasi as kompetensi, " + "pegawai.id as idpegawai, " + + "strukHistory.noRec as noRecStrukHistory, " + + "pegawaiHistoryEvaluasi.noRec as noRecPegawaiHistoryEvaluasi, " + + "pegawaiHistoryEvaluasi.rekomendasi as rekomendasi, " + "strukHistory.tglHistori as tglHistory, " + + "ruangan.id as idRuangan) " + "from PegawaiHistoriEvaluasiKomponen pegawaiHistoriEvaluasiKomponen " + + "left join pegawaiHistoriEvaluasiKomponen.komponenEvaluasi komponenEvaluasi " + + "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai " + + "left join pegawaiHistoriEvaluasiKomponen.strukHistory strukHistory " + + "left join strukHistory.ruangan ruangan " + + "left join strukHistory.pegawaiHistoriEvaluasi pegawaiHistoryEvaluasi " + + "where pegawai.id = :idPegawai and strukHistory.tglHistori between :start and :end " + + "and komponenEvaluasi.id =:idKomponen") + Map getKompetensiByPegawai(@Param("idPegawai") Integer idPegawai, @Param("start") Date start, + @Param("end") Date end, @Param("idKomponen") Integer idKomponen); + + @Query("select new map( " + "kelompokEvaluasi.kelompokEvaluasi as title, " + + "kelompokEvaluasi.id as idKelompokEvaluasi) " + "from KelompokEvaluasi kelompokEvaluasi " + + "where kelompokEvaluasi.id between 1 and 4") + List> getKelompokEvaluasi(); + + @Query("select new map(pendidikan.namaPendidikan as namaPendidikan, " + " pegawai.tglMasuk as tglMasuk)" + + " from MapPegawaiJabatanToUnitKerja mapPegawai " + "left join mapPegawai.pegawai pegawai " + + "left join pegawai.pendidikan pendidikan " + "left join mapPegawai.jabatan jabatanInternal " + + "where mapPegawai.isPrimary is true " + "and mapPegawai.statusEnabled is true " + "and jabatanInternal.id = :idJabatan") - Map getPendidikan(@Param("idJabatan") Integer idJabatan); - - @Query("select new map(pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, "+ - "pegawaiHistoriEvaluasi.rekomendasi as rekomendasi, "+ - "to_char(strukHistori.tglHistori, 'yyyy-MM-dd') as tglHistory) "+ - "from StrukHistori strukHistori "+ - "left join strukHistori.pegawaiHistoriEvaluasi pegawaiHistoriEvaluasi "+ - "left join strukHistori.pegawaiHistoriEvaluasiKomponen pegawaiHistoriEvaluasiKomponen "+ - "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai "+ - "where pegawai.id = :idPegawai "+ - "order by to_char(strukHistori.tglHistori, 'yyyy-MM-dd') desc ") - List> getPenilaian(@Param("idPegawai") Integer idPegawai); - - @Query("select new map(pegawai.namaLengkap as namaLengkap, "+ - "pegawai.nipPns as nip, "+ - "ruangan.namaRuangan as unitKerja, "+ - "jabatanInternal.namaJabatan as jabatanInternal, "+ - "to_char(strukHistori.tglHistori,'yyyy-MM-dd') as tglPenilaian, "+ - "kategoryPegawai.detailKategoryPegawai as statusKepegawaian, "+ - "pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, "+ - "pegawaiHistoriEvaluasi.rekomendasi as rekomendasi, "+ - "pegawai.id as idPegawai) "+ - "from StrukHistori strukHistori, MapPegawaiJabatanToUnitKerja mapPegawai " + Map getPendidikan(@Param("idJabatan") Integer idJabatan); + + @Query("select new map(pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, " + + "pegawaiHistoriEvaluasi.rekomendasi as rekomendasi, " + + "to_char(strukHistori.tglHistori, 'yyyy-MM-dd') as tglHistory) " + "from StrukHistori strukHistori " + "left join strukHistori.pegawaiHistoriEvaluasi pegawaiHistoriEvaluasi " + "left join strukHistori.pegawaiHistoriEvaluasiKomponen pegawaiHistoriEvaluasiKomponen " - + "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai " - + "left join pegawai.ruangan ruangan " + + "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai " + "where pegawai.id = :idPegawai " + + "order by to_char(strukHistori.tglHistori, 'yyyy-MM-dd') desc ") + List> getPenilaian(@Param("idPegawai") Integer idPegawai); + + @Query("select new map(pegawai.namaLengkap as namaLengkap, " + "pegawai.nipPns as nip, " + + "ruangan.namaRuangan as unitKerja, " + "jabatanInternal.namaJabatan as jabatanInternal, " + + "to_char(strukHistori.tglHistori,'yyyy-MM-dd') as tglPenilaian, " + + "kategoryPegawai.detailKategoryPegawai as statusKepegawaian, " + + "pegawaiHistoriEvaluasiKomponen.nilaiHasilEvaluasi as nilaiHasilEvaluasi, " + + "pegawaiHistoriEvaluasi.rekomendasi as rekomendasi, " + "pegawai.id as idPegawai) " + + "from StrukHistori strukHistori, MapPegawaiJabatanToUnitKerja mapPegawai " + + "left join strukHistori.pegawaiHistoriEvaluasi pegawaiHistoriEvaluasi " + + "left join strukHistori.pegawaiHistoriEvaluasiKomponen pegawaiHistoriEvaluasiKomponen " + + "left join pegawaiHistoriEvaluasiKomponen.pegawai pegawai " + "left join pegawai.ruangan ruangan " + "left join mapPegawai.jabatan jabatanInternal " - + "left join pegawai.detailKategoryPegawai kategoryPegawai " - + "where mapPegawai.pegawaiId = pegawai.id " - + "and mapPegawai.isPrimary is true " - + "and mapPegawai.statusEnabled is true") - List> getRencanaTindakLanjut(); - + + "left join pegawai.detailKategoryPegawai kategoryPegawai " + "where mapPegawai.pegawaiId = pegawai.id " + + "and mapPegawai.isPrimary is true " + "and mapPegawai.statusEnabled is true") + List> getRencanaTindakLanjut(); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SettingPirSdmDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SettingPirSdmDao.java index 82452a94..510f5e6b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SettingPirSdmDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SettingPirSdmDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -11,35 +12,24 @@ import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.SettingPirSdm; @Repository("SettingPirSdmDao") -public interface SettingPirSdmDao extends PagingAndSortingRepository{ - - @Query("select new map (unitKerja.id as idUnitKerja, "+ - "unitKerja.name as unitKerja, "+ - "setting.id as id, "+ - "coalesce(setting.iku,0) as iku, "+ - "to_char(setting.tglAwal, 'yyyy-MM') as periode) "+ - "from SettingPirSdm setting "+ - "left join setting.unitKerja unitKerja "+ - "where to_char(setting.tglAwal, 'yyyy-MM') =:periode "+ - "and unitKerja.id =:idUnitKerja ") - Map getIKUUnitKerja(@Param("idUnitKerja") Integer idUnitKerja,@Param("periode") String periode ); - - @Query("select new map ( coalesce(setting.pir,0) as pir, "+ - "setting.id as id, "+ - "to_char(setting.tglAwal, 'yyyy') as tahun) "+ - "from SettingPirSdm setting "+ - "where setting.pir is not null and to_char(setting.tglAwal, 'yyyy') =:thn ") - List> getPIR(@Param("thn") String thn ); - - @Query("select new map (unitKerja.id as idUnitKerja, "+ - "unitKerja.name as unitKerja, "+ - "setting.id as id, "+ - "coalesce(setting.iku,0) as iku, "+ - "to_char(setting.tglAwal, 'yyyy-MM') as periode) "+ - "from SettingPirSdm setting "+ - "left join setting.unitKerja unitKerja "+ - "where setting.iku is not null "+ - " order by to_char(setting.tglAwal, 'yyyy-MM')") +public interface SettingPirSdmDao extends PagingAndSortingRepository { + + @Query("select new map (unitKerja.id as idUnitKerja, " + "unitKerja.name as unitKerja, " + "setting.id as id, " + + "coalesce(setting.iku,0) as iku, " + "to_char(setting.tglAwal, 'yyyy-MM') as periode) " + + "from SettingPirSdm setting " + "left join setting.unitKerja unitKerja " + + "where setting.tglAwal between :start and :end " + "and unitKerja.id =:idUnitKerja ") + Map getIKUUnitKerja(@Param("idUnitKerja") Integer idUnitKerja, @Param("start") Date start, + @Param("end") Date end); + + @Query("select new map ( coalesce(setting.pir,0) as pir, " + "setting.id as id, " + + "to_char(setting.tglAwal, 'yyyy') as tahun) " + "from SettingPirSdm setting " + + "where setting.pir is not null and to_char(setting.tglAwal, 'yyyy') =:thn ") + List> getPIR(@Param("thn") String thn); + + @Query("select new map (unitKerja.id as idUnitKerja, " + "unitKerja.name as unitKerja, " + "setting.id as id, " + + "coalesce(setting.iku,0) as iku, " + "to_char(setting.tglAwal, 'yyyy-MM') as periode) " + + "from SettingPirSdm setting " + "left join setting.unitKerja unitKerja " + + "where setting.iku is not null " + " order by to_char(setting.tglAwal, 'yyyy-MM')") List> getAllIKU(); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java index d9fab8cf..60acc140 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import java.util.Date; import java.util.List; import java.util.Map; @@ -23,15 +24,16 @@ public interface TargetSkorDokterDetailDao extends PagingAndSortingRepository> findByHeadId(@Param("noRec") String noRec) throws JpaSystemException; @Query("select tsd.skor " + "from TargetSkorDokterDetail tsd " + "inner join tsd.targetSkor ts " - + "where tsd.pegawaiId = :pegawaiId " + "and to_char(ts.tmt,'yyyy-MM') <= :bulan " - + "and to_char(ts.tmt,'yyyy') = :tahun " + "order by ts.tmt desc") - public List findTargetByPegawai(@Param("pegawaiId") Integer idPegawai, @Param("bulan") String bulan, - @Param("tahun") String tahun) throws JpaSystemException; + + "where tsd.pegawaiId = :pegawaiId " + "and ts.tmt <= :endMonth " + "ts.tmt between :start and :end " + + "order by ts.tmt desc") + public List findTargetByPegawai(@Param("pegawaiId") Integer idPegawai, @Param("endMonth") Date endMonth, + @Param("start") Date start, @Param("end") Date end) throws JpaSystemException; - @Query("select new Map(tsd.pegawaiId as pegawaiId,tsd.skor as skor) " + "from TargetSkorDokterDetail tsd " + "inner join tsd.targetSkor ts " - + "where tsd.pegawaiId in (:listIdPegawai) " + "and to_char(ts.tmt,'yyyy-MM') <= :bulan " - + "and to_char(ts.tmt,'yyyy') = :tahun " + "order by ts.tmt desc") + @Query("select new Map(tsd.pegawaiId as pegawaiId,tsd.skor as skor) " + "from TargetSkorDokterDetail tsd " + + "inner join tsd.targetSkor ts " + "where tsd.pegawaiId in (:listIdPegawai) " + "and ts.tmt <= :endMonth " + + "ts.tmt between :start and :end " + "order by ts.tmt desc") public List> findTargetByPegawai(@Param("listIdPegawai") List listIdPegawai, - @Param("bulan") String bulan, @Param("tahun") String tahun) throws JpaSystemException; + @Param("endMonth") Date endMonth, @Param("start") Date start, @Param("end") Date end) + throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/CatatanPerkembanganPasienTerintegrasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/CatatanPerkembanganPasienTerintegrasiServiceImpl.java index 2e473e51..540480c0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/CatatanPerkembanganPasienTerintegrasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/CatatanPerkembanganPasienTerintegrasiServiceImpl.java @@ -37,6 +37,7 @@ import com.jasamedika.medifirst2000.entities.Ruangan; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.CatatanPerkembanganPasienTerintegrasiService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.vo.AntrianPasienDiPeriksaVO; import com.jasamedika.medifirst2000.vo.CatatanPerkembanganPasienTerintegrasiVO; import com.jasamedika.medifirst2000.vo.PasienVO; @@ -252,7 +253,6 @@ public class CatatanPerkembanganPasienTerintegrasiServiceImpl extends BaseVoServ List listIdDokter = new ArrayList<>(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DateFormat mf = new SimpleDateFormat("yyyy-MM"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); DateFormat df_ina = new SimpleDateFormat("dd-MM-yyyy"); DateFormat sf_ina = new SimpleDateFormat("HH:mm:ss"); @@ -296,8 +296,10 @@ public class CatatanPerkembanganPasienTerintegrasiServiceImpl extends BaseVoServ persenTepatHadir = getCapaianPresensiCppt(rawData, idDokter, daysOfMonth); } - Map cpptDokter = logbookKinerjaDokterDao.findDetailKinerjaDokter( - mf.format(new Date(periode)), idDr, Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS, + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); + Map cpptDokter = logbookKinerjaDokterDao.findDetailKinerjaDokter(start, end, idDr, + Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS, Master.IndikatorKinerjaDetail.KEPATUHAN_WAKTU_VISITE); if (CommonUtil.isNotNullOrEmpty(cpptDokter)) { cpptDokterVo.setLogbookId(cpptDokter.get("logbookId").toString()); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java index 2de7405a..008675d5 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java @@ -66,6 +66,7 @@ import com.jasamedika.medifirst2000.service.LogbookKinerjaService; import com.jasamedika.medifirst2000.service.TargetSkorDokterService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CurrencyUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.StringUtil; import com.jasamedika.medifirst2000.vo.EvaluasiJabatanVO; import com.jasamedika.medifirst2000.vo.IkiDanRemunerasiVO; @@ -188,6 +189,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik String[] splitData = date.split("-"); Integer paramTahun = Integer.parseInt(splitData[0]); + Date start = DateUtil.startMonth(date.substring(0, 7)); + Date end = DateUtil.endMonth(date.substring(0, 7)); + Map ikiRemunerasi = new HashMap<>(); Map evaluasiJabatan = ikiDanRemunerasiDao.getEvaluasiJabatan(id); @@ -238,7 +242,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } if (CommonUtil.isNotNullOrEmpty(ikiRemunerasi.get("idUnitKerja"))) { Map iku = settingPirSdmDao - .getIKUUnitKerja((Integer) ikiRemunerasi.get("idUnitKerja"), date.substring(0, 7)); + .getIKUUnitKerja((Integer) ikiRemunerasi.get("idUnitKerja"), start, end); if (CommonUtil.isNotNullOrEmpty(iku)) { ikur = (Double) iku.get("iku"); } @@ -328,9 +332,10 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik ikiDanRemunerasi.setPegawai(pegawai); } ikiDanRemunerasi.setStrukHistory(strukHistori); - String periode = new SimpleDateFormat("yyyy-MM").format(strukHistori.getTglHistori()); + Date start = DateUtil.startMonth(strukHistori.getTglHistori()); + Date end = DateUtil.endMonth(strukHistori.getTglHistori()); int id = pegawai.getId(); - Double temp = ikiDanRemunerasiDao.findRemunerasi(periode, id); + Double temp = ikiDanRemunerasiDao.findRemunerasi(start, end, id); if (CommonUtil.isNullOrEmpty(temp)) { // insert into StrukPelayanan StrukPelayanan strukPelayanan = new StrukPelayanan(); @@ -440,6 +445,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik public Map savePirDanIku(List vos) { Map result = new HashMap(); for (SettingPirSdmVO vo : vos) { + Date start = DateUtil.startMonth(vo.getTglAwal()); + Date end = DateUtil.endMonth(vo.getTglAwal()); SettingPirSdm settingPirSdm = settingPirSdmConverter.transferVOToModel(vo, new SettingPirSdm()); if (CommonUtil.isNotNullOrEmpty(vo.getSuratKeputusan())) { settingPirSdm.setSuratKeputusan( @@ -451,9 +458,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } if (CommonUtil.isNotNullOrEmpty(vo.getIku())) { if (CommonUtil.isNotNullOrEmpty(vo.getUnitKerja())) { - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM"); - Map data = settingPirSdmDao.getIKUUnitKerja(vo.getUnitKerja().getId(), - df.format(vo.getTglAwal())); + Map data = settingPirSdmDao.getIKUUnitKerja(vo.getUnitKerja().getId(), start, end); if (CommonUtil.isNotNullOrEmpty(data)) { settingPirSdm.setId((Integer) data.get("id")); } @@ -483,7 +488,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Override public Map findIKU(String periode, Integer idUnitkerja) { - Map result = settingPirSdmDao.getIKUUnitKerja(idUnitkerja, periode); + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); + Map result = settingPirSdmDao.getIKUUnitKerja(idUnitkerja, start, end); Calendar date = Calendar.getInstance(); int month = date.get(Calendar.MONTH); periode = periode.substring(5, 7); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java index 2b28ddb0..f0e16f47 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java @@ -70,6 +70,7 @@ import com.jasamedika.medifirst2000.service.LoginUserService; import com.jasamedika.medifirst2000.service.MonitoringAbsenService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CurrencyUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.JsonUtil; import com.jasamedika.medifirst2000.vo.CustomIndexKerjaVO; import com.jasamedika.medifirst2000.vo.CustomUraianKerjaVO; @@ -302,7 +303,9 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK Integer endYear = endCal.get(Calendar.YEAR); String endPeriod = endYear + "-" + thisMonth; - result = revIndekKinerjaDao.getAllTindakanByPeriod(idPegawai, startPeriod, endPeriod, listDJP); + Date start = DateUtil.startMonth(startPeriod); + Date end = DateUtil.endMonth(endPeriod); + result = revIndekKinerjaDao.getAllTindakanByPeriod(idPegawai, start, end, listDJP); return result; } @@ -909,7 +912,9 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK } else { result.put("status", false); } - Double indeksKehadiran = indekKinerjaDao.findIndexKehadiran(idPegawai, periode); + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); + Double indeksKehadiran = indekKinerjaDao.findIndexKehadiran(idPegawai, start, end); Map totalIKI = indekKinerjaDao.findNilaiIndeksKinerja(idPegawai, periode); if (CommonUtil.isNotNullOrEmpty(totalIKI)) { result.put("totalIki", totalIKI.get("totalIKI") != null ? totalIKI.get("totalIKI") : 0.0); @@ -2538,17 +2543,19 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK Pegawai pgw = pegawaiDao.findOne(idPegawai); List listDetailException = getDetailProdukAdministrasi(pgw); List> tindakans = new ArrayList<>(); - String tarifSatuHarga = settingDataFixedDao.getSettingDataFixed("tarifSatuHarga"); Boolean isTarifSatuHarga = Boolean.parseBoolean(tarifSatuHarga); List drAnastesiList = pegawaiDao.getDokterByKelompokKerja(Master.SubUnitKerja.KK_ANESTESI); List listTindakanAnastesiException = splitDataSettingDatafixed("excepTindakAnastesi"); + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); + if (CommonUtil.isNullOrEmpty(listDetailException)) { - tindakans = indekKinerjaDao.findIdProdukByIdUser(idPegawai, periode, splitIdProdukAdministrasi()); + tindakans = indekKinerjaDao.findIdProdukByIdUser(idPegawai, start, end, splitIdProdukAdministrasi()); } else { - tindakans = indekKinerjaDao.findIdProdukByIdUserWithDetailException(idPegawai, periode, + tindakans = indekKinerjaDao.findIdProdukByIdUserWithDetailException(idPegawai, start, end, splitIdProdukAdministrasi(), listDetailException); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java index f131c58f..c43a5e88 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java @@ -6,7 +6,6 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; -import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -29,6 +28,7 @@ import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; @Service("LogbookKinerjaDetailService") @@ -192,11 +192,8 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement public List> findWorkingRecord(Integer idPegawai, Integer idJabatan, Long bulan, Boolean statusVerif) throws JpaSystemException { DateFormat df = new SimpleDateFormat("yyyy-MM"); - LocalDate month = new Date(bulan).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - Date start = Date.from(month.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay() - .atZone(ZoneId.systemDefault()).toInstant()); - Date end = Date.from(month.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX) - .atZone(ZoneId.systemDefault()).toInstant()); + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); String strTglLimitVerif = settingDataFixedDao.getSettingDataFixed("tglLimitVerifWorkingRecord"); LocalDateTime tglLimitVerif = LocalDateTime @@ -218,11 +215,8 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement @Override public List> findWorkingRecord(Integer idPegawai, Integer idJabatan, Integer idIndikator, Long bulan) throws JpaSystemException { - LocalDate month = new Date(bulan).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - Date start = Date.from(month.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay() - .atZone(ZoneId.systemDefault()).toInstant()); - Date end = Date.from(month.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX) - .atZone(ZoneId.systemDefault()).toInstant()); + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); List> result = logbookKinerjaDetailDao.findWorkingRecord(idPegawai, idJabatan, idIndikator, start, end); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java index 0b665c79..5415b3c0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java @@ -69,6 +69,7 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.CatatanPerkembanganPasienTerintegrasiService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; import com.jasamedika.medifirst2000.vo.JabatanVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; @@ -465,9 +466,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb } private Integer hitungTargetHariKerja(Date bulan) { - DateFormat df = new SimpleDateFormat("yyyy-MM"); - - List targetPresensi = kalenderDao.getTargetKerja(df.format(bulan)); + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); + List targetPresensi = kalenderDao.getTargetKerja(start, end); Integer result = targetPresensi.size(); return result; @@ -475,12 +476,11 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb private Double hitungTargetMenitKerja(Date bulan) { Double result = 0.0; - Chronology hijri = IslamicChronology.getInstance(); + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); - DateFormat df = new SimpleDateFormat("yyyy-MM"); - - List targetPresensi = kalenderDao.getTargetKerja(df.format(bulan)); + List targetPresensi = kalenderDao.getTargetKerja(start, end); Integer jumlahHariKerjaHarian = 0; Integer jumlahHariKerjaRamadhan = 0; for (Kalender kalender : targetPresensi) { @@ -505,7 +505,11 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb List> listRes = new ArrayList<>(); List listIdIndikator = new ArrayList<>(); - DateFormat yf = new SimpleDateFormat("yyyy"); + Date startMonth = DateUtil.startMonth(bulan); + Date endMonth = DateUtil.endMonth(bulan); + Date startYear = DateUtil.startYear(bulan); + Date endYear = DateUtil.endMonth(bulan); + DateFormat mf = new SimpleDateFormat("yyyy-MM"); Integer targetHariKerja = hitungTargetHariKerja(new Date(bulan)); @@ -537,8 +541,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb * Komponen target kuantitas indikator pelayanan medis */ if (map.get("indikatorId").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA)) { - List target = targetSkorDokterDetailDao.findTargetByPegawai(idPegawai, - mf.format(new Date(bulan)), yf.format(new Date(bulan))); + List target = targetSkorDokterDetailDao.findTargetByPegawai(idPegawai, endMonth, startYear, + endYear); if (CommonUtil.isNotNullOrEmpty(target)) { map.put("target", Math.floor(target.get(0))); } else { @@ -552,7 +556,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb if (map.get("indikatorId").equals(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS) && isKualitasDokterExisted) { List> detailIndikator2 = logbookKinerjaDokterDao.findDetailLogbookDokter( - mf.format(new Date(bulan)), idPegawai, idJabatan, + startMonth, endMonth, idPegawai, idJabatan, Integer.valueOf(map.get("indikatorId").toString())); if (CommonUtil.isNotNullOrEmpty(detailIndikator2)) { map.put("detail", detailIndikator2); @@ -584,7 +588,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Iterable models = logbookKinerjaDokterDao.save(lkds); if (CommonUtil.isNotNullOrEmpty(models)) { List> detailIndikator3 = logbookKinerjaDokterDao - .findDetailLogbookDokter(mf.format(new Date(bulan)), idPegawai, idJabatan, + .findDetailLogbookDokter(startMonth, endMonth, idPegawai, idJabatan, Integer.valueOf(map.get("indikatorId").toString())); if (CommonUtil.isNotNullOrEmpty(detailIndikator3)) { map.put("detail", detailIndikator3); @@ -690,6 +694,10 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Map result = new HashMap<>(); List> resData = new ArrayList<>(); List> listJenisIndikator = new ArrayList<>(); + + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); + DateFormat mf = new SimpleDateFormat("yyyy-MM"); DateFormat yf = new SimpleDateFormat("yyyy"); Integer idKelompokJabatan = null; @@ -763,7 +771,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb data.add(map); } else if (Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS.equals(map.get("idIndikator"))) { List> listDetail = logbookKinerjaDokterDao.findDetailLogbookDokter( - mf.format(new Date(bulan)), idPegawai, idJabatan, + start, end, idPegawai, idJabatan, Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS); int detailSize = listDetail.size(); @@ -2963,6 +2971,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb Date pssbAwal = Date.from(PSBBDate.atZone(ZoneId.systemDefault()).toInstant()); Date pssbAkhir = Date.from(PSBBEnd.atZone(ZoneId.systemDefault()).toInstant()); + Date start = DateUtil.startMonth(mf.format(bulan)); + Date end = DateUtil.endMonth(mf.format(bulan)); + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); List listIdNonjadwal = shiftKerjaDao.findListNonjadwal(); @@ -2972,7 +2983,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb listIdPegawai = mapPegawaiJabatanToUnitKerjaDao .findAllDokterKelompokStafMedik(Arrays.asList(Master.UnitKerja.KSM)); } else if (typeId == 2) { - listIdPegawai = logbookKinerjaDao.findPegawaiKontrakByIndikator(mf.format(bulan), + listIdPegawai = logbookKinerjaDao.findPegawaiKontrakByIndikator(start, end, Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA); } @@ -3080,13 +3091,16 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Override public void autoVerifKontrakJamKerjaDokter(Date bulan) { - DateFormat yf = new SimpleDateFormat("yyyy"); DateFormat mf = new SimpleDateFormat("yyyy-MM"); List listIdPegawai = new ArrayList<>(); List listIdJabatan = new ArrayList<>(); List listJabatanIndikator = new ArrayList<>(); List> listMapFilter = new ArrayList<>(); + + Date endMonth = DateUtil.endMonth(bulan); + Date startYear = DateUtil.startYear(bulan); + Date endYear = DateUtil.endYear(bulan); /* * Get All Mapping Indikator Dokter */ @@ -3120,7 +3134,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb * Get Target Jumlah Pemenuhan Medis */ List> listTargetSkor = targetSkorDokterDetailDao.findTargetByPegawai(listIdPegawai, - mf.format(bulan), yf.format(bulan)); + endMonth, startYear, endYear); /* * Get Bobot Jumlah Pemenuhan Medis */ diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienDaftarServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienDaftarServiceImpl.java index da30d3aa..8eaec654 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienDaftarServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PasienDaftarServiceImpl.java @@ -776,9 +776,9 @@ public class PasienDaftarServiceImpl implements PasienDaftarService { @Override public List> findRekapDiskon(Long periode) { - DateFormat mf = new SimpleDateFormat("yyyy-MM"); - - List> result = pasienDaftarDao.findRekapDiskon(mf.format(new Date(periode))); + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); + List> result = pasienDaftarDao.findRekapDiskon(start, end); return result; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiJadwalKerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiJadwalKerjaServiceImpl.java index 18f4fe2d..2d967933 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiJadwalKerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PegawaiJadwalKerjaServiceImpl.java @@ -57,6 +57,7 @@ import com.jasamedika.medifirst2000.entities.ShiftKerja; import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService; import com.jasamedika.medifirst2000.service.PegawaiService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.vo.KalenderVO; import com.jasamedika.medifirst2000.vo.KelompokShiftVO; import com.jasamedika.medifirst2000.vo.ListTanggalCutiVO; @@ -1017,6 +1018,8 @@ public class PegawaiJadwalKerjaServiceImpl extends BaseVoServiceImpl implements public String writeExcelPegawaiJadwalKerja(String bulan, Integer idUnitKerja, Integer idSubunitKerja) throws ParseException { String absoluteFilePath = ""; + Date start = DateUtil.startMonth(bulan); + Date end = DateUtil.endMonth(bulan); try { HSSFWorkbook workbook = new HSSFWorkbook(); @@ -1026,7 +1029,7 @@ public class PegawaiJadwalKerjaServiceImpl extends BaseVoServiceImpl implements Map unitKerja = unitKerjaDao.getUnitKerjaById(idUnitKerja); Map subunitKerja = subunitKerjaDao.getSubunitKerjaById(idSubunitKerja); - List> listTanggal = kalenderDao.getKalenderBulanan(bulan); + List> listTanggal = kalenderDao.getKalenderBulanan(start, end); List> listPegawai = mapPegawaiJabatanToUnitKerjaDao.getPegawaiByUnitKerja(idUnitKerja, idSubunitKerja); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java index 73bfa1e7..4d1eb9d8 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RekamDataPegawaiServiceImpl.java @@ -67,6 +67,7 @@ import com.jasamedika.medifirst2000.service.PegawaiService; import com.jasamedika.medifirst2000.service.RekamDataPegawaiService; import com.jasamedika.medifirst2000.service.RiwayatJabatanService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.PasswordUtil; import com.jasamedika.medifirst2000.vo.AgamaVO; import com.jasamedika.medifirst2000.vo.DetailKategoryPegawaiVO; @@ -264,6 +265,10 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re pegawai.setId(vo.getId()); pegawai.setKdProfile(Master.KODE_PROFILE); + Date currDate = new Date(); + Date start = DateUtil.startMonth(currDate); + Date end = DateUtil.endMonth(currDate); + if (CommonUtil.isNotNullOrEmpty(pegawai.getStatusEnabled()) && CommonUtil.isNotNullOrEmpty(vo.getStatusEnabled())) { if (!pegawai.getStatusEnabled().equals(vo.getStatusEnabled())) { @@ -954,10 +959,7 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re && CommonUtil.isNotNullOrEmpty(vo.getShiftKerja())) { if (!pegawai.getShiftKerjaId().equals(vo.getShiftKerja().getId())) { if (vo.getShiftKerja().getId() == 1 || vo.getShiftKerja().getId() == 2) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Date currDate = new Date(); - List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), - formatter.format(currDate)); + List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), start, end); if (CommonUtil.isNotNullOrEmpty(listJadwal)) { for (Integer idJadwal : listJadwal) { pegawaiJadwalKerjaDao.delete(idJadwal); @@ -971,10 +973,7 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re } else if (CommonUtil.isNullOrEmpty(pegawai.getShiftKerjaId()) && CommonUtil.isNotNullOrEmpty(vo.getShiftKerja())) { if (vo.getShiftKerja().getId() == 1 || vo.getShiftKerja().getId() == 2) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Date currDate = new Date(); - List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), - formatter.format(currDate)); + List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), start, end); if (CommonUtil.isNotNullOrEmpty(listJadwal)) { for (Integer idJadwal : listJadwal) { pegawaiJadwalKerjaDao.delete(idJadwal); @@ -2091,6 +2090,11 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re Map result = new HashMap(); Map dataPegawai = new HashMap(); // BeanUtils.copyProperties(dest, orig); + + Date currDate = new Date(); + Date start = DateUtil.startMonth(currDate); + Date end = DateUtil.endMonth(currDate); + if (CommonUtil.isNotNullOrEmpty(vo)) { try { dataPegawai = vo.ToMap(); @@ -2327,10 +2331,7 @@ public class RekamDataPegawaiServiceImpl extends BaseVoServiceImpl implements Re // nonshift atau nonshift+ if (vo.getShiftKerja().getId() == 1 || vo.getShiftKerja().getId() == 2) { if (!currKelShift.equals(Integer.parseInt(vo.getShiftKerja().getId().toString()))) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Date currDate = new Date(); - List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), - formatter.format(currDate)); + List listJadwal = pegawaiJadwalKerjaDao.getListJadwal(vo.getId(), start, end); if (CommonUtil.isNotNullOrEmpty(listJadwal)) { for (Integer idJadwal : listJadwal) { pegawaiJadwalKerjaDao.delete(idJadwal); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RiwayatPenilaianKompetensiPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RiwayatPenilaianKompetensiPegawaiServiceImpl.java index 011c573e..ea4c2172 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RiwayatPenilaianKompetensiPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RiwayatPenilaianKompetensiPegawaiServiceImpl.java @@ -17,7 +17,6 @@ import org.springframework.transaction.annotation.Transactional; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.PegawaiDao; -import com.jasamedika.medifirst2000.dao.PegawaiHistoriEvaluasiDao; import com.jasamedika.medifirst2000.dao.RiwayatPenilaianKompetensiPegawaiDao; import com.jasamedika.medifirst2000.dao.RunningNumberDao; import com.jasamedika.medifirst2000.dao.StrukHistoriDao; @@ -31,6 +30,7 @@ import com.jasamedika.medifirst2000.entities.RunningNumber; import com.jasamedika.medifirst2000.entities.StrukHistori; import com.jasamedika.medifirst2000.service.RiwayatPenilaianKompetensiPegawaiService; import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.StringUtil; import com.jasamedika.medifirst2000.vo.KelompokTransaksiVO; import com.jasamedika.medifirst2000.vo.KomponenEvaluasiVO; @@ -100,7 +100,8 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni Map result = new HashMap(); List> listData = riwayatPenilaianKompetensiPegawaiDao .getPenilaianKompetensiRiwayat(idJabatan); - // validasi penilaian hanya dapat dilakukan setelah 3 bulan semenjak penilaian + // validasi penilaian hanya dapat dilakukan setelah 3 bulan semenjak + // penilaian // terakhir dilakukan List> dataPenilaian = riwayatPenilaianKompetensiPegawaiDao.getPenilaian(idPegawai); int index = 0; @@ -206,8 +207,17 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni @Transactional(readOnly = true) public List> getGapKompetensiPegawai(Integer idRuangan, String periode) { List> result = new ArrayList>(); - List> listPegawai = pegawaiDao.findByRuanganKerja(idRuangan);// get id jabatan and id - // pegawai by ruangan kerja + List> listPegawai = pegawaiDao.findByRuanganKerja(idRuangan);// get + // id + // jabatan + // and + // id + // pegawai + // by + // ruangan + // kerja + Date start = DateUtil.startMonth(periode); + Date end = DateUtil.endMonth(periode); Integer nos = 0; for (Map temp : listPegawai) { @@ -231,7 +241,7 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni Double gap = 0.0; Integer idKomponenEvaluasi = (Integer) kompetensiPegawai.get("idKomponenEvaluasi"); Map dataKompetensi = riwayatPenilaianKompetensiPegawaiDao - .getKompetensiByPegawai(idPegawai, periode, idKomponenEvaluasi); + .getKompetensiByPegawai(idPegawai, start, end, idKomponenEvaluasi); Double nilaiHasilEvaluasi = 0.0; String nilaiStandar = "0"; if (CommonUtil.isNotNullOrEmpty(kompetensiPegawai.get("nilaiStandar"))) { @@ -271,7 +281,8 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni List> result = new ArrayList>(); List> listKompetensi = riwayatPenilaianKompetensiPegawaiDao - .getKompetensiByRuangan(idJabatan);// getkompetensi basd on jabatan + .getKompetensiByRuangan(idJabatan);// getkompetensi basd on + // jabatan List listTempKompetensi = new ArrayList(); // filtering redundant kompetensi @@ -313,8 +324,15 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni @Override @Transactional(readOnly = true) public Map getKompetensiPegawai(Integer idRuangan) { - List> listPegawai = pegawaiDao.findByRuanganKerja(idRuangan);// get id jabatan and id - // pegawai by ruangan kerja + List> listPegawai = pegawaiDao.findByRuanganKerja(idRuangan);// get + // id + // jabatan + // and + // id + // pegawai + // by + // ruangan + // kerja List> listKelompokEvaluasi = riwayatPenilaianKompetensiPegawaiDao.getKelompokEvaluasi(); List> listHeader = new ArrayList>(); Map MaplistHeaderFinal = new HashMap(); @@ -323,7 +341,8 @@ public class RiwayatPenilaianKompetensiPegawaiServiceImpl implements RiwayatPeni if (CommonUtil.isNotNullOrEmpty(temp.get("idJabatanInternal"))) { Integer idJabatan = (Integer) temp.get("idJabatanInternal"); List> tempListKompetensi = riwayatPenilaianKompetensiPegawaiDao - .getKompetensiByRuangan(idJabatan);// getkompetensi basd on jabatan + .getKompetensiByRuangan(idJabatan);// getkompetensi basd + // on jabatan listKompetensi.addAll(tempListKompetensi); } diff --git a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java index a6cc169f..b19ff7a3 100644 --- a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java +++ b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java @@ -5,16 +5,24 @@ import java.text.DateFormat; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; import java.util.Calendar; import java.util.Date; import java.util.Locale; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The Class DateUtil. * * @author Roberto */ public final class DateUtil implements Serializable { + private final static Logger LOGGER = LoggerFactory.getLogger(DateUtil.class); /** The Constant serialVersionUID. */ private static final long serialVersionUID = -3865736292493750177L; @@ -244,7 +252,6 @@ public final class DateUtil implements Serializable { return year + 1; } - /** * Get year information of a date. @@ -326,48 +333,45 @@ public final class DateUtil implements Serializable { return cal.get(Calendar.DAY_OF_MONTH) + " " + INDONESIAN_MONTH[cal.get(Calendar.MONTH)] + " " + cal.get(Calendar.YEAR); } - - public static synchronized Date now(){ + + public static synchronized Date now() { return new Date(); } - - public static synchronized Date toDate(String dateString){ + + public static synchronized Date toDate(String dateString) { Date result = null; - if (dateString != null && !dateString.equals("")) - { + if (dateString != null && !dateString.equals("")) { try { - if(dateString.indexOf(":")>0) - result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateString); - else - { - if(dateString.indexOf("-")>0) + if (dateString.indexOf(":") > 0) + result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateString); + else { + if (dateString.indexOf("-") > 0) result = new SimpleDateFormat("yyyy-MM-dd").parse(dateString); else result = new SimpleDateFormat("yyyyMMddHHmmss").parse(dateString); - } - + } + } catch (Exception e) { - e.printStackTrace(); + LOGGER.error(e.getMessage()); } } return result; } - - public static synchronized Date getShortDate(){ + + public static synchronized Date getShortDate() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String datenow=simpleDateFormat.format(new Date()); - Date tglReg=null; - try { - tglReg=simpleDateFormat.parse(datenow); + String datenow = simpleDateFormat.format(new Date()); + Date tglReg = null; + try { + tglReg = simpleDateFormat.parse(datenow); } catch (ParseException e) { - e.printStackTrace(); + LOGGER.error(e.getMessage()); } - return tglReg; + return tglReg; } - - + /** * Parse string formatted date (MM-yyyy, e.g: 05-2016) to Java Date. * @@ -379,38 +383,110 @@ public final class DateUtil implements Serializable { Date result = new Date(); try { result = formatter.parse(monthDashYear); - } catch(ParseException pe) { - System.out.println("Error parsing date: " + pe.getMessage()); + } catch (ParseException pe) { + LOGGER.error(pe.getMessage()); } return result; } - + /** * Get first or last date from specified date. * - * @param date specified date - * @param first true for first date, false for last date + * @param date + * specified date + * @param first + * true for first date, false for last date * @return resulted date */ public static Date getFirstLastDateOfMonth(Date date, boolean first) { Calendar cal = Calendar.getInstance(); cal.setTime(date); - + if (first) { cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DATE)); } else { cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE)); } - + return cal.getTime(); } - - public static Date addDays(Date date, int days) - { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - cal.add(Calendar.DATE, days); //minus number would decrement the days - return cal.getTime(); - } - + + public static Date addDays(Date date, int days) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.add(Calendar.DATE, days); // minus number would decrement the days + return cal.getTime(); + } + + public static Date startMonth(Date date) { + LocalDate month = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(ZoneId.systemDefault()) + .toInstant()); + } + + public static Date startMonth(Long milis) { + LocalDate month = new Date(milis).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay().atZone(ZoneId.systemDefault()) + .toInstant()); + } + + public static Date startMonth(String period) { + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + LocalDate month = formatter.parse(period).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay() + .atZone(ZoneId.systemDefault()).toInstant()); + } catch (ParseException e) { + LOGGER.error(e.getMessage()); + return null; + } + } + + public static Date endMonth(Date date) { + LocalDate month = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX) + .atZone(ZoneId.systemDefault()).toInstant()); + } + + public static Date endMonth(Long milis) { + LocalDate month = new Date(milis).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX) + .atZone(ZoneId.systemDefault()).toInstant()); + } + + public static Date endMonth(String period) { + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + LocalDate month = formatter.parse(period).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX) + .atZone(ZoneId.systemDefault()).toInstant()); + } catch (ParseException e) { + LOGGER.error(e.getMessage()); + return null; + } + } + + public static Date startYear(Date date) { + LocalDate month = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.firstDayOfYear()).atStartOfDay().atZone(ZoneId.systemDefault()) + .toInstant()); + } + + public static Date startYear(Long milis) { + LocalDate month = new Date(milis).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.firstDayOfYear()).atStartOfDay().atZone(ZoneId.systemDefault()) + .toInstant()); + } + + public static Date endYear(Date date) { + LocalDate month = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.lastDayOfYear()).atTime(LocalTime.MAX) + .atZone(ZoneId.systemDefault()).toInstant()); + } + + public static Date endYear(Long milis) { + LocalDate month = new Date(milis).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Date.from(month.with(TemporalAdjusters.lastDayOfYear()).atTime(LocalTime.MAX) + .atZone(ZoneId.systemDefault()).toInstant()); + } }