penerapan logbook kinerja dokter untuk tampilan dashboard pencatatan kinerja
This commit is contained in:
parent
62cae9f3e2
commit
aff09769a5
@ -74,7 +74,7 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository<LogbookKin
|
||||
+ "when ik.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
|
||||
+ "ik.id as idIndikator,ik.namaIndikator as namaIndikator,"
|
||||
+ "si.id as satuanId,si.satuanIndikator as satuanIndikator,"
|
||||
+ "lk.capaian/lk.target as fragCapaian,lk.bobot as bobot) "
|
||||
+ "lk.target as target,lk.capaian/lk.target as fragCapaian,lk.bobot as bobot) "
|
||||
+ "from LogbookKinerja lk, MapPegawaiJabatanToUnitKerja mj " + "inner join lk.indikatorKinerja ik "
|
||||
+ "inner join ik.satuanIndikator si " + "inner join lk.pegawai pg " + "inner join lk.jabatan jb "
|
||||
+ "where lk.pegawaiId = mj.pegawaiId " + "and lk.jabatanId = mj.jabatanId " + "and mj.pegawaiId = pg.id "
|
||||
|
||||
@ -38,6 +38,4 @@ public interface IkiDanRemunerasiService {
|
||||
public List<TargetLayananCustomVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
|
||||
throws ParseException;
|
||||
|
||||
public List<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan);
|
||||
|
||||
}
|
||||
|
||||
@ -33,4 +33,6 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
|
||||
|
||||
public List<Map<String, Object>> findAksesPegawai(Integer idPegawai);
|
||||
|
||||
public List<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan);
|
||||
|
||||
}
|
||||
|
||||
@ -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<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<String> listTglPelayanan = new ArrayList<>();
|
||||
List<Integer> listIdIndikator = new ArrayList<>();
|
||||
List<Integer> listIdProduk = new ArrayList<>();
|
||||
List<Double> listSkor = new ArrayList<>();
|
||||
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
|
||||
|
||||
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)),
|
||||
Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
|
||||
Master.Produk.KARCIS);
|
||||
|
||||
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao
|
||||
.findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM));
|
||||
|
||||
// SCORE
|
||||
for (Map<String, Object> mapLayanan : dataLayanan) {
|
||||
for (Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String> listTglPelayananSorted = listTglPelayanan.stream().sorted().collect(Collectors.toList());
|
||||
|
||||
// GROUPING_TANGGAL_PELAYANAN
|
||||
List<Map<String, Object>> dataTglPelayanan = new ArrayList<>();
|
||||
for (Integer idIndikator : listIdIndikator) {
|
||||
for (Integer idProduk : listIdProduk) {
|
||||
for (Double skor : listSkor) {
|
||||
for (String tglPelayanan : listTglPelayananSorted) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> 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<String, Object> data = new HashMap<>();
|
||||
List<Map<String, Object>> detail = new ArrayList<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> 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<String, Object> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<String, Object> 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<Map<String, Object>> logbookDokter = findLogbookSkoringDokter(idPegawai, bulan);
|
||||
double capaian = 0.0;
|
||||
for (Map<String, Object> 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<Map<String, Object>> findLogbookSkoringDokter(Integer idPegawai, Long bulan) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
List<String> listTglPelayanan = new ArrayList<>();
|
||||
List<Integer> listIdIndikator = new ArrayList<>();
|
||||
List<Integer> listIdProduk = new ArrayList<>();
|
||||
List<Double> listSkor = new ArrayList<>();
|
||||
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
|
||||
|
||||
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookDokter(mf.format(new Date(bulan)),
|
||||
Master.JenisPegawai.DOKTER, idPegawai, Arrays.asList(Master.JenisProduk.NONTINDAKAN),
|
||||
Master.Produk.KARCIS);
|
||||
|
||||
List<Map<String, Object>> dataSkor = skoringTindakanMedisDao
|
||||
.findSkoringLogbookDokter(mf.format(new Date(bulan)), idPegawai, Arrays.asList(Master.UnitKerja.KSM));
|
||||
|
||||
// SCORE
|
||||
for (Map<String, Object> mapLayanan : dataLayanan) {
|
||||
for (Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String> listTglPelayananSorted = listTglPelayanan.stream().sorted().collect(Collectors.toList());
|
||||
|
||||
// GROUPING_TANGGAL_PELAYANAN
|
||||
List<Map<String, Object>> dataTglPelayanan = new ArrayList<>();
|
||||
for (Integer idIndikator : listIdIndikator) {
|
||||
for (Integer idProduk : listIdProduk) {
|
||||
for (Double skor : listSkor) {
|
||||
for (String tglPelayanan : listTglPelayananSorted) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> 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<String, Object> data = new HashMap<>();
|
||||
List<Map<String, Object>> detail = new ArrayList<>();
|
||||
double jumlahTindakan = 0.0;
|
||||
double jumlahSkor = 0.0;
|
||||
for (Map<String, Object> 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<String, Object> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1138,7 +1138,7 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
@RequestParam(value = "bulan", required = true) Long bulan,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException {
|
||||
try {
|
||||
List<Map<String, Object>> result = service.findLogbookSkoringDokter(idPegawai, bulan);
|
||||
List<Map<String, Object>> result = logbookKinerjaService.findLogbookSkoringDokter(idPegawai, bulan);
|
||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user