pembuatan service hitung capaian skor dokter berdasarkan tahun

This commit is contained in:
salmanoe 2021-11-10 08:57:28 +07:00
parent 2ce47a9614
commit f7db1f389e
4 changed files with 119 additions and 10 deletions

View File

@ -488,4 +488,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
@Param("remun") List<Integer> listIdRemun, @Param("dokter") Integer idDokter,
@Param("nonAktif") List<Integer> listIdNonAktif);
@Query("select distinct mj.pegawaiId " + "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg "
+ "inner join mj.jabatan jb " + "where mj.unitKerjaPegawaiId in (:listKsmId) "
+ "and pg.jenisPegawaiId = 1 " + "and jb.levelJabatan = 5")
List<Integer> findAllDokterKelompokStafMedik(@Param("listKsmId") List<Integer> listIdKsm);
}

View File

@ -1,5 +1,6 @@
package com.jasamedika.medifirst2000.service;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -9,6 +10,7 @@ import org.springframework.orm.jpa.JpaSystemException;
import com.jasamedika.medifirst2000.entities.LogbookKinerja;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
import com.jasamedika.medifirst2000.vo.SkorDokterVO;
public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, LogbookKinerjaVO, String> {
@ -53,9 +55,11 @@ public interface LogbookKinerjaService extends BaseVoService<LogbookKinerja, Log
Integer idPegawai) throws JpaSystemException;
public void autoVerifLogbookJamKerjaDokter(Date bulan);
public List<SkorDokterVO> hitungTargetSkorLogbookDokter(String tahun) throws ParseException;
public List<Double> findBobotJenisJabatan(Long periode, Integer idJabatan);
List<Map<String, Object>> findJabatanKontrakVerifKinerja(Integer idPegawai, Integer idPegawaiLogin);
}

View File

@ -5,6 +5,7 @@ import java.math.RoundingMode;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
@ -57,6 +58,7 @@ import com.jasamedika.medifirst2000.vo.JabatanVO;
import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.SatuanIndikatorVO;
import com.jasamedika.medifirst2000.vo.SkorDokterVO;
@Service("LogbookKinerjaService")
public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements LogbookKinerjaService {
@ -2247,8 +2249,14 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
return result;
}
@Override
public void autoVerifLogbookJamKerjaDokter(Date bulan) {
/**
* @param bulan
* bulan spesifik perhitungan
* @param typeId
* 1-Hitung Target, 2-Hitung Verifikasi
*/
public List<SkorDokterVO> hitungSkorDokter(Date bulan, byte typeId) {
List<SkorDokterVO> result = new ArrayList<>();
List<Integer> listDetailJenisProduk = new ArrayList<>();
List<Integer> listDetailJenisProdukException = new ArrayList<>();
@ -2269,8 +2277,14 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> listIdNonjadwal = shiftKerjaDao.findListNonjadwal();
List<Integer> listIdPegawai = logbookKinerjaDao.findPegawaiKontrakByIndikator(mf.format(bulan),
Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA);
List<Integer> listIdPegawai = new ArrayList<>();
if (typeId == 1) {
listIdPegawai = mapPegawaiJabatanToUnitKerjaDao
.findAllDokterKelompokStafMedik(Arrays.asList(Master.UnitKerja.KSM));
} else if (typeId == 2) {
listIdPegawai = logbookKinerjaDao.findPegawaiKontrakByIndikator(mf.format(bulan),
Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA);
}
List<Map<String, Object>> dataLayanan = ikiDanRemunerasiDao.getDataLogbookJamKerjaDokter(mf.format(bulan),
pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER, listIdPegawai,
@ -2330,6 +2344,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
List<Integer> drKsmUmumList = mapPegawaiJabatanToUnitKerjaDao.getPegawaiByUnitKerja(Master.UnitKerja.KSM_UMUM);
for (Integer idPegawai : listIdPegawai) {
SkorDokterVO skorDokterVO = new SkorDokterVO();
if (pegawaiDao.getDokterLabPatologiAnatomi().contains(idPegawai)) {
listDetailJenisProduk = new ArrayList<>(
Arrays.asList(Master.DetailJenisProduk.PENUNJANG_PATOLOGI_ANATOMI));
@ -2362,19 +2378,83 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
}
}
skorDokterVO.setBulan(bulan);
skorDokterVO.setIdPegawai(idPegawai);
skorDokterVO.setSkor(capaian);
result.add(skorDokterVO);
}
return result;
}
@Override
public void autoVerifLogbookJamKerjaDokter(Date bulan) {
byte verifId = 2;
List<SkorDokterVO> listSkorDokterVO = hitungSkorDokter(bulan, verifId);
for (SkorDokterVO skorDokterVO : listSkorDokterVO) {
LogbookKinerjaVO vo = new LogbookKinerjaVO();
PegawaiVO pegawai = new PegawaiVO();
pegawai.setId(idPegawai);
pegawai.setId(skorDokterVO.getIdPegawai());
vo.setPegawai(pegawai);
IndikatorKinerjaVO indikator = new IndikatorKinerjaVO();
indikator.setId(Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA);
vo.setIndikatorKinerja(indikator);
vo.setBulan(bulan);
vo.setCapaian(capaian);
vo.setBulan(skorDokterVO.getBulan());
vo.setCapaian(skorDokterVO.getSkor());
this.autoVerify(vo);
}
}
@Override
public List<SkorDokterVO> hitungTargetSkorLogbookDokter(String tahun) throws ParseException {
List<SkorDokterVO> result = new ArrayList<>();
DateFormat mf = new SimpleDateFormat("yyyy-MM");
byte hitungTargetId = 1;
for (int bulan = 1; bulan <= 12; bulan++) {
List<SkorDokterVO> listRs = hitungSkorDokter(mf.parse(tahun + "-" + (bulan < 10 ? "0" + bulan : bulan)),
hitungTargetId);
result.addAll(listRs);
}
/**
* Untuk output internal
*/
List<Integer> listIdPegawai = new ArrayList<>();
List<Date> listBulan = new ArrayList<>();
for (SkorDokterVO skorDokterVO : result) {
if (!listIdPegawai.contains(skorDokterVO.getIdPegawai())) {
listIdPegawai.add(skorDokterVO.getIdPegawai());
}
if (!listBulan.contains(skorDokterVO.getBulan())) {
listBulan.add(skorDokterVO.getBulan());
}
}
List<Integer> sortedListIdPegawai = listIdPegawai.stream().sorted().collect(Collectors.toList());
List<Date> sortedListBulan = listBulan.stream().sorted().collect(Collectors.toList());
for (Integer idPegawai : sortedListIdPegawai) {
String out = "";
String skor = "";
for (Date bulan : sortedListBulan) {
for (SkorDokterVO vo : result) {
if (idPegawai.equals(vo.getIdPegawai()) && bulan.equals(vo.getBulan())) {
if (skor == "") {
skor = vo.getSkor().toString();
} else {
skor += "," + vo.getSkor().toString();
}
}
}
}
out = idPegawai + "," + skor;
System.out.println(out);
}
return result;
}
@Override
public List<Double> findBobotJenisJabatan(Long periode, Integer idJabatan) {
List<Double> result = new ArrayList<>();
@ -2422,4 +2502,4 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
return result;
}
}
}

View File

@ -64,6 +64,7 @@ import com.jasamedika.medifirst2000.vo.ProdukPerawatVO;
import com.jasamedika.medifirst2000.vo.ProfesiVO;
import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO;
import com.jasamedika.medifirst2000.vo.SettingPirSdmVO;
import com.jasamedika.medifirst2000.vo.SkorDokterVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO;
import com.jasamedika.medifirst2000.vo.SkoringTindakanPerawatVO;
@ -2074,4 +2075,23 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/get-skor-dokter", method = RequestMethod.GET)
public ResponseEntity<List<SkorDokterVO>> getSkorDokter(HttpServletRequest request,
@RequestParam(value = "tahun", required = true) String tahun) throws ParseException {
try {
List<SkorDokterVO> result = logbookKinerjaService.hitungTargetSkorLogbookDokter(tahun);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);
} catch (ServiceVOException sve) {
LOGGER.error("Got exception {} when get skor dokter", sve.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage);
} catch (JpaSystemException jse) {
LOGGER.error("Got exception {} when get skor dokter", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
}