Update perbaikan performance karena format tanggal

This commit is contained in:
salmanoe 2022-10-17 20:43:11 +07:00
parent 8d8b0af40c
commit bd6390cac0
5 changed files with 36 additions and 31 deletions

View File

@ -5705,10 +5705,12 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
@RequestParam(value = "format", required = false) String format, @RequestParam(value = "format", required = false) String format,
@RequestParam(value = "periode", required = true) String periode, @RequestParam(value = "periode", required = true) String periode,
@RequestParam(value = "idPegawai", required = false) Integer idPegawai) { @RequestParam(value = "idPegawai", required = false) Integer idPegawai) {
Date start = DateUtil.startMonth(periode);
Date end = DateUtil.endMonth(periode);
Pegawai pegawaiLoggedIn = indekKinerjaService.getPegawaiByUserLogin(); Pegawai pegawaiLoggedIn = indekKinerjaService.getPegawaiByUserLogin();
Map<String, Object> pegawai = pegawaiDao.findPegawaiById(pegawaiLoggedIn.getId()); Map<String, Object> pegawai = pegawaiDao.findPegawaiById(pegawaiLoggedIn.getId());
List<Map<String, Object>> result = indekKinerjaDao.findTindakanByIdPegawaiAndPeriod(periode, List<Map<String, Object>> result = indekKinerjaDao.findTindakanByIdPegawaiAndPeriod(start, end,
pegawaiLoggedIn.getId(), indekKinerjaService.splitIdProdukAdministrasi()); pegawaiLoggedIn.getId(), indekKinerjaService.splitIdProdukAdministrasi());
if (CommonUtil.isNullOrEmpty(result)) { if (CommonUtil.isNullOrEmpty(result)) {
Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> data = new HashMap<String, Object>();
@ -5730,7 +5732,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
m.addObject("jabatanAtasan", atasan.get("jabatanInternal")); m.addObject("jabatanAtasan", atasan.get("jabatanInternal"));
m.addObject("atasan", atasan.get("nama")); m.addObject("atasan", atasan.get("nama"));
m.addObject("nipAtasan", atasan.get("nipPns")); m.addObject("nipAtasan", atasan.get("nipPns"));
m.addObject("total", indekKinerjaDao.findTotalTindakanPerMonth(pegawaiLoggedIn.getId(), periode, m.addObject("total", indekKinerjaDao.findTotalTindakanPerMonth(pegawaiLoggedIn.getId(), start, end,
indekKinerjaService.splitIdProdukAdministrasi())); indekKinerjaService.splitIdProdukAdministrasi()));
m.addObject("format", "pdf"); m.addObject("format", "pdf");

View File

@ -111,10 +111,10 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository<IndekKinerja
+ " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien"
+ " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail" + " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail"
+ " left join detail.jenisProduk jenisProduk " + " left join detail.jenisProduk jenisProduk "
+ " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')=:tgl " + " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) and pelayananPasien.tglPelayanan between :start and :end "
+ " group by produk.namaProduk, produk.id,pelayananPasien.hargaSatuan ,detail.id,jenisProduk.id") + " group by produk.namaProduk, produk.id,pelayananPasien.hargaSatuan ,detail.id,jenisProduk.id")
public List<Map<String, Object>> findTindakanByIdUser(@Param("id") Integer id, @Param("tgl") String tgl, public List<Map<String, Object>> findTindakanByIdUser(@Param("id") Integer id, @Param("start") Date start,
@Param("listIdJenisProduk") List<Integer> listIdJenisProduk); @Param("end") Date end, @Param("listIdJenisProduk") List<Integer> listIdJenisProduk);
@Query(" select new map (produk.namaProduk as namaProduk,produk.id as produkId," @Query(" select new map (produk.namaProduk as namaProduk,produk.id as produkId,"
+ " count(produk.namaProduk) as count,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglPelayanan )" + " count(produk.namaProduk) as count,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglPelayanan )"
@ -124,11 +124,11 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository<IndekKinerja
+ " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail" + " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail"
+ " left join detail.jenisProduk jenisProduk " + " left join detail.jenisProduk jenisProduk "
+ " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) " + " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) "
+ " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')= " + " and pelayananPasien.tglPelayanan between :start and :end "
+ " :date group by produk.namaProduk,produk.id,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')" + "group by produk.namaProduk,produk.id,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')"
+ " order by to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')") + " order by to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')")
public List<Map<String, Object>> findTindakanByIdUserAndPeriod(@Param("id") Integer id, @Param("date") String date, public List<Map<String, Object>> findTindakanByIdUserAndPeriod(@Param("id") Integer id, @Param("start") Date start,
@Param("listIdJenisProduk") List<Integer> listIdJenisProduk); @Param("end") Date end, @Param("listIdJenisProduk") List<Integer> listIdJenisProduk);
@Query(" select new map (produk.namaProduk as namaProduk,produk.id as produkId," @Query(" select new map (produk.namaProduk as namaProduk,produk.id as produkId,"
+ " count(produk.namaProduk) as count,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglPelayanan )" + " count(produk.namaProduk) as count,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') as tglPelayanan )"
@ -138,11 +138,12 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository<IndekKinerja
+ " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail" + " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail"
+ " left join detail.jenisProduk jenisProduk " + " left join detail.jenisProduk jenisProduk "
+ " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) and detail.id not in (:listIdDetailJenisProduk) " + " where dokter.id=:id and jenisProduk.id not in (:listIdJenisProduk) and detail.id not in (:listIdDetailJenisProduk) "
+ " and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')= " + " and pelayananPasien.tglPelayanan between :start and :end"
+ " :date group by produk.namaProduk,produk.id,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')" + " group by produk.namaProduk,produk.id,to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')"
+ " order by to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')") + " order by to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd')")
public List<Map<String, Object>> findTindakanByIdUserAndPeriodWithException(@Param("id") Integer id, public List<Map<String, Object>> findTindakanByIdUserAndPeriodWithException(@Param("id") Integer id,
@Param("date") String date, @Param("listIdJenisProduk") List<Integer> listIdJenisProduk, @Param("start") Date start, @Param("end") Date end,
@Param("listIdJenisProduk") List<Integer> listIdJenisProduk,
@Param("listIdDetailJenisProduk") List<Integer> listIdDetailJenisProduk); @Param("listIdDetailJenisProduk") List<Integer> listIdDetailJenisProduk);
@Query(" select new Map(rincianKegiatan.rincianKegiatan as rincianKegiatan, rincianKegiatan.id as idRincianKegiatan, " @Query(" select new Map(rincianKegiatan.rincianKegiatan as rincianKegiatan, rincianKegiatan.id as idRincianKegiatan, "
@ -167,11 +168,11 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository<IndekKinerja
+ " left join pelayananPasienPetugas.kdpegawai dokter" + " left join pelayananPasienPetugas.kdpegawai dokter"
+ " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien"
+ " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail" + " left join pelayananPasien.produk produk " + " left join produk.detailJenisProduk detail"
+ " left join detail.jenisProduk jenisProduk " + " left join detail.jenisProduk jenisProduk"
+ "where dokter.id=:id and to_char(pelayananPasien.tglPelayanan,'yyyy-MM-dd') " + " where dokter.id=:id and pelayananPasien.tglPelayanan between :start and :end"
+ "between :startDate and :endDate and jenisProduk.id not in (:listIdJenisProduk) group by produk.namaProduk,jenisProduk.id") + " and jenisProduk.id not in (:listIdJenisProduk) group by produk.namaProduk,jenisProduk.id")
public List<Map<String, Object>> findCountTindakanByIdUserAndPeriod(@Param("id") Integer id, public List<Map<String, Object>> findCountTindakanByIdUserAndPeriod(@Param("id") Integer id,
@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("start") Date start, @Param("end") Date end,
@Param("listIdJenisProduk") List<Integer> listIdJenisProduk); @Param("listIdJenisProduk") List<Integer> listIdJenisProduk);
@Query(" select new Map( produk.namaProduk as namaProduk, count( distinct pelayananPasien.noRec) as count,jenisProduk.id as idJenisProduk)" @Query(" select new Map( produk.namaProduk as namaProduk, count( distinct pelayananPasien.noRec) as count,jenisProduk.id as idJenisProduk)"
@ -269,7 +270,7 @@ public interface IndekKinerjaDao extends PagingAndSortingRepository<IndekKinerja
+ " left join pelayananPasienPetugas.kdpegawai dokter" + " left join pelayananPasienPetugas.kdpegawai dokter"
+ " left join pelayananPasienPetugas.pelayananPasien pelayananPasien" + " left join pelayananPasienPetugas.pelayananPasien pelayananPasien"
+ " left join pelayananPasien.produk produk" + " left join pelayananPasien.produk produk"
+ " where dokter.id=:id and pelayananPasien.tglPelayanan between and :start and :end" + " where dokter.id=:id and pelayananPasien.tglPelayanan between :start and :end"
+ " and produk.id = :idProduk") + " and produk.id = :idProduk")
public Long findTotalProdukPerPeriode(@Param("id") Integer id, @Param("idProduk") Integer idProduk, public Long findTotalProdukPerPeriode(@Param("id") Integer id, @Param("idProduk") Integer idProduk,
@Param("start") Date start, @Param("end") Date end); @Param("start") Date start, @Param("end") Date end);

View File

@ -24,14 +24,14 @@ public interface TargetSkorDokterDetailDao extends PagingAndSortingRepository<Ta
public List<Map<String, Object>> findByHeadId(@Param("noRec") String noRec) throws JpaSystemException; public List<Map<String, Object>> findByHeadId(@Param("noRec") String noRec) throws JpaSystemException;
@Query("select tsd.skor " + "from TargetSkorDokterDetail tsd " + "inner join tsd.targetSkor ts " @Query("select tsd.skor " + "from TargetSkorDokterDetail tsd " + "inner join tsd.targetSkor ts "
+ "where tsd.pegawaiId = :pegawaiId " + "and ts.tmt <= :endMonth " + "ts.tmt between :start and :end " + "where tsd.pegawaiId = :pegawaiId " + "and ts.tmt <= :endMonth " + " and ts.tmt between :start and :end "
+ "order by ts.tmt desc") + "order by ts.tmt desc")
public List<Double> findTargetByPegawai(@Param("pegawaiId") Integer idPegawai, @Param("endMonth") Date endMonth, public List<Double> findTargetByPegawai(@Param("pegawaiId") Integer idPegawai, @Param("endMonth") Date endMonth,
@Param("start") Date start, @Param("end") Date end) throws JpaSystemException; @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 " @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 " + "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") + "and ts.tmt between :start and :end " + "order by ts.tmt desc")
public List<Map<String, Object>> findTargetByPegawai(@Param("listIdPegawai") List<Integer> listIdPegawai, public List<Map<String, Object>> findTargetByPegawai(@Param("listIdPegawai") List<Integer> listIdPegawai,
@Param("endMonth") Date endMonth, @Param("start") Date start, @Param("end") Date end) @Param("endMonth") Date endMonth, @Param("start") Date start, @Param("end") Date end)
throws JpaSystemException; throws JpaSystemException;

View File

@ -371,6 +371,8 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
@Override @Override
public List<Map<String, Object>> findTindakanByIdUserAndPeriod(String month) { public List<Map<String, Object>> findTindakanByIdUserAndPeriod(String month) {
Date start = DateUtil.startMonth(month);
Date end = DateUtil.endMonth(month);
Pegawai pegawai = new Pegawai(); Pegawai pegawai = new Pegawai();
pegawai = this.getPegawaiByUserLogin(); pegawai = this.getPegawaiByUserLogin();
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
@ -388,11 +390,11 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK
int idPegawai = pegawai.getId(); int idPegawai = pegawai.getId();
Long totalPerTanggal; Long totalPerTanggal;
if (CommonUtil.isNullOrEmpty(listDetailException)) { if (CommonUtil.isNullOrEmpty(listDetailException)) {
result = indekKinerjaDao.findTindakanByIdUserAndPeriod(idPegawai, date, splitIdProdukAdministrasi()); result = indekKinerjaDao.findTindakanByIdUserAndPeriod(idPegawai, start, end, splitIdProdukAdministrasi());
totalPerTanggal = indekKinerjaDao.findTotalTindakanPerTanggal(idPegawai, date, totalPerTanggal = indekKinerjaDao.findTotalTindakanPerTanggal(idPegawai, date,
splitIdProdukAdministrasi()); splitIdProdukAdministrasi());
} else { } else {
result = indekKinerjaDao.findTindakanByIdUserAndPeriodWithException(idPegawai, date, result = indekKinerjaDao.findTindakanByIdUserAndPeriodWithException(idPegawai, start, end,
splitIdProdukAdministrasi(), listDetailException); splitIdProdukAdministrasi(), listDetailException);
totalPerTanggal = indekKinerjaDao.findTotalTindakanPerTanggalWithException(idPegawai, date, totalPerTanggal = indekKinerjaDao.findTotalTindakanPerTanggalWithException(idPegawai, date,
splitIdProdukAdministrasi(), listDetailException); splitIdProdukAdministrasi(), listDetailException);

View File

@ -5745,10 +5745,11 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
@RequestParam(value = "format", required = false) String format, @RequestParam(value = "format", required = false) String format,
@RequestParam(value = "periode", required = true) String periode, @RequestParam(value = "periode", required = true) String periode,
@RequestParam(value = "idPegawai", required = false) Integer idPegawai) { @RequestParam(value = "idPegawai", required = false) Integer idPegawai) {
Date start = DateUtil.startMonth(periode);
Date end = DateUtil.endMonth(periode);
Pegawai pegawaiLoggedIn = indekKinerjaService.getPegawaiByUserLogin(); Pegawai pegawaiLoggedIn = indekKinerjaService.getPegawaiByUserLogin();
Map<String, Object> pegawai = pegawaiDao.findPegawaiById(pegawaiLoggedIn.getId()); Map<String, Object> pegawai = pegawaiDao.findPegawaiById(pegawaiLoggedIn.getId());
List<Map<String, Object>> result = indekKinerjaDao.findTindakanByIdPegawaiAndPeriod(periode, List<Map<String, Object>> result = indekKinerjaDao.findTindakanByIdPegawaiAndPeriod(start, end,
pegawaiLoggedIn.getId(), indekKinerjaService.splitIdProdukAdministrasi()); pegawaiLoggedIn.getId(), indekKinerjaService.splitIdProdukAdministrasi());
if (CommonUtil.isNullOrEmpty(result)) { if (CommonUtil.isNullOrEmpty(result)) {
// Map<String, Object> data = new HashMap<String, Object>(); // Map<String, Object> data = new HashMap<String, Object>();
@ -5770,7 +5771,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
m.addObject("jabatanAtasan", atasan.get("jabatanInternal")); m.addObject("jabatanAtasan", atasan.get("jabatanInternal"));
m.addObject("atasan", atasan.get("nama")); m.addObject("atasan", atasan.get("nama"));
m.addObject("nipAtasan", atasan.get("nipPns")); m.addObject("nipAtasan", atasan.get("nipPns"));
m.addObject("total", indekKinerjaDao.findTotalTindakanPerMonth(pegawaiLoggedIn.getId(), periode, m.addObject("total", indekKinerjaDao.findTotalTindakanPerMonth(pegawaiLoggedIn.getId(), start, end,
indekKinerjaService.splitIdProdukAdministrasi())); indekKinerjaService.splitIdProdukAdministrasi()));
m.addObject("format", "pdf"); m.addObject("format", "pdf");
@ -7916,8 +7917,7 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
} }
@RequestMapping("/resep") @RequestMapping("/resep")
public ModelAndView generateResep(ModelAndView m, public ModelAndView generateResep(ModelAndView m, @RequestParam(value = "format", required = false) String format,
@RequestParam(value = "format", required = false) String format,
@RequestParam(value = "struk_order_id", required = true) String strukOrderId) { @RequestParam(value = "struk_order_id", required = true) String strukOrderId) {
Map<String, Object> headerResep = resepDokterService.findHeaderResep(strukOrderId); Map<String, Object> headerResep = resepDokterService.findHeaderResep(strukOrderId);
List<Map<String, Object>> dsResep = resepDokterService.findResepSatuan(strukOrderId); List<Map<String, Object>> dsResep = resepDokterService.findResepSatuan(strukOrderId);