From aff09769a5061b6ff194fbeab93923474789a750 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 21 Jun 2021 16:11:27 +0700 Subject: [PATCH] penerapan logbook kinerja dokter untuk tampilan dashboard pencatatan kinerja --- .../medifirst2000/dao/LogbookKinerjaDao.java | 2 +- .../service/IkiDanRemunerasiService.java | 2 - .../service/LogbookKinerjaService.java | 2 + .../impl/IkiDanRemunerasiServiceImpl.java | 186 -------------- .../impl/LogbookKinerjaServiceImpl.java | 226 +++++++++++++++++- .../IkiDanRemunerasiController.java | 2 +- 6 files changed, 224 insertions(+), 196 deletions(-) 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 b26289a1..b9b55958 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 @@ -74,7 +74,7 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository findAllTargetCapaianLayanan(String strPeriode, Integer idKsm) throws ParseException; - public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan); - } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java index 1d03af8a..ff0f5290 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java @@ -33,4 +33,6 @@ public interface LogbookKinerjaService extends BaseVoService> findAksesPegawai(Integer idPegawai); + public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan); + } 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 7b6faa44..232578ec 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 @@ -1,6 +1,5 @@ package com.jasamedika.medifirst2000.service.impl; -import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -973,189 +972,4 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik return result; } - - @Override - public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan) { - List> result = new ArrayList<>(); - List listTglPelayanan = new ArrayList<>(); - List listIdIndikator = new ArrayList<>(); - List listIdProduk = new ArrayList<>(); - List listSkor = new ArrayList<>(); - - DateFormat mf = new SimpleDateFormat("yyyy-MM"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - - List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); - - List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)), - Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN), - Master.Produk.KARCIS); - - List> dataSkor = skoringTindakanMedisDao - .findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM)); - - // SCORE - for (Map mapLayanan : dataLayanan) { - for (Map mapSkor : dataSkor) { - if (mapLayanan.get("produkId").equals(mapSkor.get("produkId")) - && (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku")) - || ((Date) mapLayanan.get("tglPelayanan")) - .equals((Date) mapSkor.get("tglMulaiBerlaku")))) { - mapLayanan.put("skor", mapSkor.get("skor")); - break; - } - } - if (!mapLayanan.containsKey("skor")) { - mapLayanan.put("skor", 1.0); - } - } - - // RULES - for (Map mapLayanan : dataLayanan) { - if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { - mapLayanan.put("tSkor", - Double.valueOf(mapLayanan.get("skor").toString()) - * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS - * Double.valueOf(mapLayanan.get("jumlah").toString())); - } else if (Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 - && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) - || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { - // tidak_dapat_skor_untuk_diskon_dpjp - mapLayanan.put("skor", 0.0); - mapLayanan.put("tSkor", 0.0); - } else { - mapLayanan.put("tSkor", Double.valueOf(mapLayanan.get("skor").toString()) - * Double.valueOf(mapLayanan.get("jumlah").toString())); - } - } - - // GROUPING_INDIKATOR - for (Map mapLayanan : dataLayanan) { - if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) - && listRuangEks.contains(mapLayanan.get("ruanganId"))) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_EKS); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_EKS)); - } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) - && mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_GADAR); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_GADAR)); - } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_REG); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_REG)); - } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.VISITE); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.VISITE)); - } else if (listRuangEks.contains(mapLayanan.get("ruanganId"))) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_EKS); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_EKS)); - } else if (mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_GADAR); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_GADAR)); - } else if (mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_OPS); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_OPS)); - } else { - mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_REG); - mapLayanan.put("namaIndikator", - indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_REG)); - } - } - - for (Map mapLayanan : dataLayanan) { - if (!listIdIndikator.contains(mapLayanan.get("indikatorId"))) { - listIdIndikator.add(Integer.valueOf(mapLayanan.get("indikatorId").toString())); - } - if (!listIdProduk.contains(mapLayanan.get("produkId"))) { - listIdProduk.add(Integer.valueOf(mapLayanan.get("produkId").toString())); - } - if (!listSkor.contains(mapLayanan.get("skor"))) { - listSkor.add(Double.valueOf(mapLayanan.get("skor").toString())); - } - if (!listTglPelayanan.contains(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { - listTglPelayanan.add(df.format(((Date) mapLayanan.get("tglPelayanan")))); - } - } - - List listTglPelayananSorted = listTglPelayanan.stream().sorted().collect(Collectors.toList()); - - // GROUPING_TANGGAL_PELAYANAN - List> dataTglPelayanan = new ArrayList<>(); - for (Integer idIndikator : listIdIndikator) { - for (Integer idProduk : listIdProduk) { - for (Double skor : listSkor) { - for (String tglPelayanan : listTglPelayananSorted) { - Map data = new HashMap<>(); - double jumlahTindakan = 0.0; - double jumlahSkor = 0.0; - for (Map mapLayanan : dataLayanan) { - if (idIndikator.equals(mapLayanan.get("indikatorId")) - && idProduk.equals(mapLayanan.get("produkId")) - && skor.equals(mapLayanan.get("skor")) - && tglPelayanan.equals(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { - jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); - jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); - data.putAll(mapLayanan); - data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan")))); - } - } - if (CommonUtil.isNotNullOrEmpty(data)) { - data.put("jumlah", jumlahTindakan); - data.put("tSkor", jumlahSkor); - - dataTglPelayanan.add(data); - } - } - } - } - } - - // GROUPING_HEADER - for (Integer idIndikator : listIdIndikator) { - for (Integer idProduk : listIdProduk) { - for (Double skor : listSkor) { - Map data = new HashMap<>(); - List> detail = new ArrayList<>(); - double jumlahTindakan = 0.0; - double jumlahSkor = 0.0; - for (Map mapLayanan : dataTglPelayanan) { - if (idIndikator.equals(mapLayanan.get("indikatorId")) - && idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) { - jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); - jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); - - Map mapDetail = new HashMap<>(); - mapDetail.put("jumlah", mapLayanan.get("jumlah")); - mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan")); - detail.add(mapDetail); - - mapLayanan.remove("noRec"); - mapLayanan.remove("tglPelayanan"); - mapLayanan.remove("statusDiskon"); - mapLayanan.remove("hargaDiskon"); - mapLayanan.remove("departemenId"); - mapLayanan.remove("ruanganId"); - data.putAll(mapLayanan); - } - } - if (CommonUtil.isNotNullOrEmpty(data)) { - data.put("detail", detail); - data.put("jumlah", jumlahTindakan); - data.put("tSkor", jumlahSkor); - - result.add(data); - } - } - } - } - - return result; - } - } 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 baae465f..693cbfc5 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 @@ -13,6 +13,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.jpa.JpaSystemException; @@ -21,17 +22,21 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.AnggaranRemunerasiDao; +import com.jasamedika.medifirst2000.dao.IkiDanRemunerasiDao; import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDao; +import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDetailDao; import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao; import com.jasamedika.medifirst2000.dao.PegawaiDao; +import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao; import com.jasamedika.medifirst2000.entities.IndikatorKinerja; import com.jasamedika.medifirst2000.entities.Jabatan; import com.jasamedika.medifirst2000.entities.LogbookKinerja; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.SatuanIndikator; import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; @@ -76,6 +81,15 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Autowired private LogbookKinerjaDokterDao logbookKinerjaDokterDao; + @Autowired + private IkiDanRemunerasiDao ikiDanRemunerasiDao; + + @Autowired + private SkoringTindakanMedisDao skoringTindakanMedisDao; + + @Autowired + private IndikatorKinerjaDetailDao indikatorKinerjaDetailDao; + @Override public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException { Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); @@ -404,12 +418,28 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb jenisIndikator.put("jenisIndikator", ji); for (Map map : rs) { if (map.get("jenisIndikator").equals(ji)) { - hasil += Double.valueOf(map.get("fragCapaian").toString()) - * Double.valueOf(map.get("bobot").toString()); - map.put("persenCapaianDibulatkan", - new BigDecimal(Double.valueOf(map.get("fragCapaian").toString()) * 100).setScale(2, - RoundingMode.HALF_UP)); - data.add(map); + if (map.get("idIndikator").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS)) { + List> logbookDokter = findLogbookSkoringDokter(idPegawai, bulan); + double capaian = 0.0; + for (Map ld : logbookDokter) { + capaian += Double.valueOf(ld.get("tSkor").toString()); + } + double fragCapaian = capaian / Double.valueOf(map.get("target").toString()); + hasil += capaian / Double.valueOf(map.get("target").toString()) + * Double.valueOf(map.get("bobot").toString()); + map.put("fragCapaian", fragCapaian); + map.put("persenCapaianDibulatkan", + new BigDecimal(Double.valueOf(map.get("fragCapaian").toString()) * 100).setScale(2, + RoundingMode.HALF_UP)); + data.add(map); + } else { + hasil += Double.valueOf(map.get("fragCapaian").toString()) + * Double.valueOf(map.get("bobot").toString()); + map.put("persenCapaianDibulatkan", + new BigDecimal(Double.valueOf(map.get("fragCapaian").toString()) * 100).setScale(2, + RoundingMode.HALF_UP)); + data.add(map); + } } } @@ -527,4 +557,188 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + @Override + public List> findLogbookSkoringDokter(Integer idPegawai, Long bulan) { + List> result = new ArrayList<>(); + List listTglPelayanan = new ArrayList<>(); + List listIdIndikator = new ArrayList<>(); + List listIdProduk = new ArrayList<>(); + List listSkor = new ArrayList<>(); + + DateFormat mf = new SimpleDateFormat("yyyy-MM"); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); + + List> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)), + Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Master.Produk.KARCIS); + + List> dataSkor = skoringTindakanMedisDao + .findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM)); + + // SCORE + for (Map mapLayanan : dataLayanan) { + for (Map mapSkor : dataSkor) { + if (mapLayanan.get("produkId").equals(mapSkor.get("produkId")) + && (((Date) mapLayanan.get("tglPelayanan")).after((Date) mapSkor.get("tglMulaiBerlaku")) + || ((Date) mapLayanan.get("tglPelayanan")) + .equals((Date) mapSkor.get("tglMulaiBerlaku")))) { + mapLayanan.put("skor", mapSkor.get("skor")); + break; + } + } + if (!mapLayanan.containsKey("skor")) { + mapLayanan.put("skor", 1.0); + } + } + + // RULES + for (Map mapLayanan : dataLayanan) { + if (mapLayanan.get("jenisPetugasId").equals(Master.JenisPetugasPelaksana.ASISTEN_SPESIALIS)) { + mapLayanan.put("tSkor", + Double.valueOf(mapLayanan.get("skor").toString()) + * Master.Remunerasi.PERSEN_SKOR_ASISTEN_SPESIALIS + * Double.valueOf(mapLayanan.get("jumlah").toString())); + } else if (Double.valueOf(mapLayanan.get("hargaDiskon").toString()) > 0.0 + && (CommonUtil.isNullOrEmpty(mapLayanan.get("statusDiskon")) + || !Boolean.valueOf(mapLayanan.get("statusDiskon").toString()))) { + // tidak_dapat_skor_untuk_diskon_dpjp + mapLayanan.put("skor", 0.0); + mapLayanan.put("tSkor", 0.0); + } else { + mapLayanan.put("tSkor", Double.valueOf(mapLayanan.get("skor").toString()) + * Double.valueOf(mapLayanan.get("jumlah").toString())); + } + } + + // GROUPING_INDIKATOR + for (Map mapLayanan : dataLayanan) { + if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && listRuangEks.contains(mapLayanan.get("ruanganId"))) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_EKS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_EKS)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL) + && mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_GADAR); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_GADAR)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.KONSUL)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.KONSUL_REG); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.KONSUL_REG)); + } else if (mapLayanan.get("namaProduk").toString().toLowerCase().contains(Master.VISIT)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.VISITE); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.VISITE)); + } else if (listRuangEks.contains(mapLayanan.get("ruanganId"))) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_EKS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_EKS)); + } else if (mapLayanan.get("departemenId").equals(Master.Departemen.IGD)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_GADAR); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_GADAR)); + } else if (mapLayanan.get("ruanganId").equals(Master.Ruangan.OK)) { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_OPS); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_OPS)); + } else { + mapLayanan.put("indikatorId", Master.IndikatorKinerjaDetail.TINDAKAN_REG); + mapLayanan.put("namaIndikator", + indikatorKinerjaDetailDao.findNamaIndikator(Master.IndikatorKinerjaDetail.TINDAKAN_REG)); + } + } + + for (Map mapLayanan : dataLayanan) { + if (!listIdIndikator.contains(mapLayanan.get("indikatorId"))) { + listIdIndikator.add(Integer.valueOf(mapLayanan.get("indikatorId").toString())); + } + if (!listIdProduk.contains(mapLayanan.get("produkId"))) { + listIdProduk.add(Integer.valueOf(mapLayanan.get("produkId").toString())); + } + if (!listSkor.contains(mapLayanan.get("skor"))) { + listSkor.add(Double.valueOf(mapLayanan.get("skor").toString())); + } + if (!listTglPelayanan.contains(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { + listTglPelayanan.add(df.format(((Date) mapLayanan.get("tglPelayanan")))); + } + } + + List listTglPelayananSorted = listTglPelayanan.stream().sorted().collect(Collectors.toList()); + + // GROUPING_TANGGAL_PELAYANAN + List> dataTglPelayanan = new ArrayList<>(); + for (Integer idIndikator : listIdIndikator) { + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + for (String tglPelayanan : listTglPelayananSorted) { + Map data = new HashMap<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : dataLayanan) { + if (idIndikator.equals(mapLayanan.get("indikatorId")) + && idProduk.equals(mapLayanan.get("produkId")) + && skor.equals(mapLayanan.get("skor")) + && tglPelayanan.equals(df.format(((Date) mapLayanan.get("tglPelayanan"))))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + data.putAll(mapLayanan); + data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan")))); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("jumlah", jumlahTindakan); + data.put("tSkor", jumlahSkor); + + dataTglPelayanan.add(data); + } + } + } + } + } + + // GROUPING_HEADER + for (Integer idIndikator : listIdIndikator) { + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + Map data = new HashMap<>(); + List> detail = new ArrayList<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : dataTglPelayanan) { + if (idIndikator.equals(mapLayanan.get("indikatorId")) + && idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + + Map mapDetail = new HashMap<>(); + mapDetail.put("jumlah", mapLayanan.get("jumlah")); + mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan")); + detail.add(mapDetail); + + mapLayanan.remove("noRec"); + mapLayanan.remove("tglPelayanan"); + mapLayanan.remove("statusDiskon"); + mapLayanan.remove("hargaDiskon"); + mapLayanan.remove("departemenId"); + mapLayanan.remove("ruanganId"); + data.putAll(mapLayanan); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("detail", detail); + data.put("jumlah", jumlahTindakan); + data.put("tSkor", jumlahSkor); + + result.add(data); + } + } + } + } + + return result; + } + } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 93cbad24..c96eb041 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -1138,7 +1138,7 @@ public class IkiDanRemunerasiController extends LocaleController> result = service.findLogbookSkoringDokter(idPegawai, bulan); + List> result = logbookKinerjaService.findLogbookSkoringDokter(idPegawai, bulan); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);