Update logbook kinerja service
Pembuatan service otomatis pembuatan kontrak kinerja dokter
This commit is contained in:
parent
3804590d35
commit
e422673457
@ -49,6 +49,19 @@ public interface LogbookKinerjaDao extends PagingAndSortingRepository<LogbookKin
|
||||
List<Map<String, Object>> findIndikatorByJabatan(@Param("jabatanId") Integer idJabatan,
|
||||
@Param("bulan") String bulan);
|
||||
|
||||
@Query("select new Map(ikt.jabatanId as jabatanId,"
|
||||
+ "ikm.jenisIndikator as jenisIndikatorId,ikm.id as indikatorId,ikm.namaIndikator as namaIndikator,"
|
||||
+ "si.id as satuanId,si.satuanIndikator as satuanIndikator,"
|
||||
+ "ikt.noRec as noRecMap,ikt.tanggalMulaiBerlaku as tglBerlaku,ikt.tanggalPembaharuanData as tglPembaharuanData) "
|
||||
+ "from IndikatorKinerjaJabatan ikt " + "inner join ikt.indikatorKinerja ikm "
|
||||
+ "inner join ikm.satuanIndikator si " + "where ikt.statusEnabled is true "
|
||||
+ "and ikm.statusEnabled is true " + "and ikm.statusVerifikasi is true " + "and si.statusEnabled is true "
|
||||
+ "and ikt.jabatanId in (:listIdJabatan) " + "and to_char(ikt.tanggalMulaiBerlaku,'yyyy-MM') <= :bulan "
|
||||
+ "order by ikm.jenisIndikator, ikm.namaIndikator, "
|
||||
+ "ikt.tanggalMulaiBerlaku desc, ikt.tanggalPembaharuanData desc")
|
||||
List<Map<String, Object>> findIndikatorByJabatan(@Param("listIdJabatan") List<Integer> listIdJabatan,
|
||||
@Param("bulan") String bulan);
|
||||
|
||||
@Query("select new Map(lkh.noRec as noRec,ikm.jenisIndikator as jenisIndikatorId,"
|
||||
+ "ikm.id as indikatorId,ikm.namaIndikator as namaIndikator,"
|
||||
+ "si.id as satuanId,si.satuanIndikator as satuanIndikator," + "lkh.target as target,lkh.bobot as bobot,"
|
||||
|
||||
@ -537,8 +537,8 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
|
||||
Optional<Double> findByPegawaiAndJabatan(@Param("pegawaiId") Integer idPegawai,
|
||||
@Param("jabatanId") Integer idJabatan);
|
||||
|
||||
@Query("select distinct mj.pegawaiId " + "from MapPegawaiJabatanToUnitKerja mj "
|
||||
+ "where mj.jabatanId in (:listIdJabatan)")
|
||||
List<Integer> listIdPegawaiByAllJabatan(@Param("listIdJabatan") List<Integer> listIdJabatan);
|
||||
@Query("select distinct new Map(mj.pegawaiId as pegawaiId,mj.jabatanId as jabatanId) "
|
||||
+ "from MapPegawaiJabatanToUnitKerja mj " + "where mj.jabatanId in (:listIdJabatan)")
|
||||
List<Map<String, Object>> findAllPegawaiByJabatan(@Param("listIdJabatan") List<Integer> listIdJabatan);
|
||||
|
||||
}
|
||||
|
||||
@ -28,4 +28,10 @@ public interface TargetSkorDokterDetailDao extends PagingAndSortingRepository<Ta
|
||||
public List<Double> findTargetByPegawai(@Param("pegawaiId") Integer idPegawai, @Param("bulan") String bulan,
|
||||
@Param("tahun") String tahun) 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")
|
||||
public List<Map<String, Object>> findTargetByPegawai(@Param("listIdPegawai") List<Integer> listIdPegawai,
|
||||
@Param("bulan") String bulan, @Param("tahun") String tahun) throws JpaSystemException;
|
||||
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ import com.jasamedika.medifirst2000.dao.PelayananNakesDao;
|
||||
import com.jasamedika.medifirst2000.dao.PelayananPasienNakesDao;
|
||||
import com.jasamedika.medifirst2000.dao.PelayananPasienPerawatDao;
|
||||
import com.jasamedika.medifirst2000.dao.PelayananPasienPetugasDao;
|
||||
import com.jasamedika.medifirst2000.dao.SettingDataFixedDao;
|
||||
import com.jasamedika.medifirst2000.dao.ShiftKerjaDao;
|
||||
import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao;
|
||||
import com.jasamedika.medifirst2000.dao.TabelAcuanIndeksIKIDao;
|
||||
@ -169,6 +170,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
@Autowired
|
||||
private IndikatorKinerjaJabatanDao indikatorKinerjaJabatanDao;
|
||||
|
||||
@Autowired
|
||||
private SettingDataFixedDao settingDataFixedDao;
|
||||
|
||||
@Override
|
||||
public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
|
||||
Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai());
|
||||
@ -3078,48 +3082,191 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
DateFormat yf = new SimpleDateFormat("yyyy");
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
|
||||
Integer targetHariKerja = hitungTargetHariKerja(bulan);
|
||||
Double targetJamKerja = hitungTargetMenitKerja(bulan);
|
||||
|
||||
List<Integer> listIdPegawai = new ArrayList<>();
|
||||
List<Integer> listIdJabatan = new ArrayList<>();
|
||||
List<String> listJabatanIndikator = new ArrayList<>();
|
||||
List<Map<String, Object>> listMapFilter = new ArrayList<>();
|
||||
/*
|
||||
* Get All Mapping Indikator Dokter
|
||||
*/
|
||||
List<Map<String, Object>> listIndikatorDokter = indikatorKinerjaJabatanDao
|
||||
.findAllByIndikator(Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA);
|
||||
List<Integer> listIdIndikator = new ArrayList<>();
|
||||
for (Map<String, Object> map : listIndikatorDokter) {
|
||||
listIdIndikator.add(Integer.parseInt(map.get("jabatanId").toString()));
|
||||
if (!listIdJabatan.contains(Integer.parseInt(map.get("jabatanId").toString()))) {
|
||||
listIdJabatan.add(Integer.parseInt(map.get("jabatanId").toString()));
|
||||
}
|
||||
}
|
||||
|
||||
// Double targetSkorJamKerja = 0.0;
|
||||
// List<Double> target = targetSkorDokterDetailDao.findTargetByPegawai(idPegawai, mf.format(bulan),
|
||||
// yf.format(bulan));
|
||||
// if (CommonUtil.isNotNullOrEmpty(target)) {
|
||||
// targetSkorJamKerja = Math.floor(target.get(0));
|
||||
// }
|
||||
List<Map<String, Object>> listMapIndikator = logbookKinerjaDao.findIndikatorByJabatan(listIdJabatan,
|
||||
mf.format(bulan));
|
||||
for (Map<String, Object> map : listMapIndikator) {
|
||||
if (!listJabatanIndikator
|
||||
.contains(map.get("jabatanId").toString() + "" + map.get("indikatorId").toString())) {
|
||||
listMapFilter.add(map);
|
||||
}
|
||||
}
|
||||
|
||||
// List<IndikatorKinerjaDetail> ikds = indikatorKinerjaDetailDao
|
||||
// .findByIndikator(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS);
|
||||
// List<LogbookKinerjaDokter> lkds = new ArrayList<>();
|
||||
// for (IndikatorKinerjaDetail ikd : ikds) {
|
||||
// Jabatan jb = jabatanDao.findOne(idJabatan);
|
||||
// Pegawai pg = pegawaiDao.findOne(idPegawai);
|
||||
//
|
||||
// LogbookKinerjaDokter logbookKinerjaLama = logbookKinerjaDokterDao.findOne(mf.format(bulan), idPegawai,
|
||||
// idJabatan, ikd.getId());
|
||||
// if (CommonUtil.isNullOrEmpty(logbookKinerjaLama)) {
|
||||
// LogbookKinerjaDokter logbookKinerjaBaru = new LogbookKinerjaDokter();
|
||||
// logbookKinerjaBaru.setBulan(bulan);
|
||||
// logbookKinerjaBaru.setDetailTarget(70.0);
|
||||
// logbookKinerjaBaru.setKdProfile((short) 0);
|
||||
// logbookKinerjaBaru.setStatusEnabled(true);
|
||||
// logbookKinerjaBaru.setTglHitung(new Date());
|
||||
// logbookKinerjaBaru.setIndikatorDetail(ikd);
|
||||
// logbookKinerjaBaru.setJabatan(jb);
|
||||
// logbookKinerjaBaru.setPegawai(pg);
|
||||
// lkds.add(logbookKinerjaBaru);
|
||||
// }
|
||||
// }
|
||||
// if (CommonUtil.isNotNullOrEmpty(lkds)) {
|
||||
// logbookKinerjaDokterDao.save(lkds);
|
||||
// }
|
||||
/*
|
||||
* Get All Dokter Mapped Indikator
|
||||
*/
|
||||
List<Map<String, Object>> listKontrak = mapPegawaiJabatanToUnitKerjaDao.findAllPegawaiByJabatan(listIdJabatan);
|
||||
for (Map<String, Object> map : listKontrak) {
|
||||
if (!listIdPegawai.contains(Integer.parseInt(map.get("pegawaiId").toString()))) {
|
||||
listIdPegawai.add(Integer.parseInt(map.get("pegawaiId").toString()));
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Get Target Jumlah Pemenuhan Medis
|
||||
*/
|
||||
List<Map<String, Object>> listTargetSkor = targetSkorDokterDetailDao.findTargetByPegawai(listIdPegawai,
|
||||
mf.format(bulan), yf.format(bulan));
|
||||
/*
|
||||
* Get Bobot Jumlah Pemenuhan Medis
|
||||
*/
|
||||
Double bobotSkor = Double.parseDouble(settingDataFixedDao.getSettingDataFixed("bobotSkorDokter"));
|
||||
/*
|
||||
* Get Target Pemenuhan Hari Kerja
|
||||
*/
|
||||
Integer targetHariKerja = hitungTargetHariKerja(bulan);
|
||||
/*
|
||||
* Get Bobot Pemenuhan Hari Kerja
|
||||
*/
|
||||
Double bobotHariKerja = Double.parseDouble(settingDataFixedDao.getSettingDataFixed("bobotHariKerja"));
|
||||
/*
|
||||
* Get Target Pemenuhan Jam Kerja
|
||||
*/
|
||||
Double targetJamKerja = hitungTargetMenitKerja(bulan);
|
||||
/*
|
||||
* Get Bobot Pemenuhan Jam Kerja
|
||||
*/
|
||||
Double bobotJamKerja = Double.parseDouble(settingDataFixedDao.getSettingDataFixed("bobotJamKerja"));
|
||||
/*
|
||||
* Get Target Kepatuhan Pelayanan Medis
|
||||
*/
|
||||
Double targetKualitasPelayanan = Double
|
||||
.parseDouble(settingDataFixedDao.getSettingDataFixed("targetKualitasDokter"));
|
||||
/*
|
||||
* Get Bobot Kepatuhan Pelayanan Medis
|
||||
*/
|
||||
Double bobotKualitasPelayanan = Double
|
||||
.parseDouble(settingDataFixedDao.getSettingDataFixed("bobotKualitasDokter"));
|
||||
/*
|
||||
* Get Detail Target Kepatuhan Pelayanan Medis
|
||||
*/
|
||||
List<IndikatorKinerjaDetail> ikds = indikatorKinerjaDetailDao
|
||||
.findByIndikator(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS);
|
||||
/*
|
||||
* Get Target Kepatuhan Waktu Visite
|
||||
*/
|
||||
Double targetPatuhWaktuVisite = Double
|
||||
.parseDouble(settingDataFixedDao.getSettingDataFixed("targetPatuhWaktuVisite"));
|
||||
/*
|
||||
* Get Target Ketepatan Kehadiran
|
||||
*/
|
||||
Double targetPerilakuDokter = Double
|
||||
.parseDouble(settingDataFixedDao.getSettingDataFixed("targetPerilakuDokter"));
|
||||
/*
|
||||
* Get Bobot Ketepatan Kehadiran
|
||||
*/
|
||||
Double bobotPerilakuDokter = Double.parseDouble(settingDataFixedDao.getSettingDataFixed("bobotPerilakuDokter"));
|
||||
/*
|
||||
* Merge for virtual object logbook kinerja
|
||||
*/
|
||||
for (Map<String, Object> map : listMapFilter) {
|
||||
Integer idJabatan1 = Integer.parseInt(map.get("jabatanId").toString());
|
||||
for (Map<String, Object> kontrak : listKontrak) {
|
||||
Integer idJabatan2 = Integer.parseInt(kontrak.get("jabatanId").toString());
|
||||
if (idJabatan1.equals(idJabatan2)) {
|
||||
map.putAll(kontrak);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Save logbook kinerja dokter
|
||||
*/
|
||||
for (Map<String, Object> map : listMapFilter) {
|
||||
if (CommonUtil.isNotNullOrEmpty(map.get("pegawaiId"))
|
||||
&& CommonUtil.isNotNullOrEmpty(map.get("jabatanId"))) {
|
||||
LogbookKinerjaVO vo = new LogbookKinerjaVO();
|
||||
vo.setBulan(bulan);
|
||||
Integer idPegawai = Integer.parseInt(map.get("pegawaiId").toString());
|
||||
PegawaiVO pegawaiVO = new PegawaiVO();
|
||||
pegawaiVO.setId(idPegawai);
|
||||
vo.setPegawai(pegawaiVO);
|
||||
Integer idJabatan = Integer.parseInt(map.get("jabatanId").toString());
|
||||
JabatanVO jabatanVO = new JabatanVO();
|
||||
jabatanVO.setId(idJabatan);
|
||||
vo.setJabatan(jabatanVO);
|
||||
vo.setKdProfile((short) 0);
|
||||
vo.setStatusEnabled(true);
|
||||
vo.setStatusVerifikasi(true);
|
||||
IndikatorKinerjaVO logbookKinerjaVO = new IndikatorKinerjaVO();
|
||||
List<LogbookKinerjaDokter> lkds = new ArrayList<>();
|
||||
if (map.get("indikatorId").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA)) {
|
||||
logbookKinerjaVO.setId(Integer.parseInt(map.get("indikatorId").toString()));
|
||||
vo.setIndikatorKinerja(logbookKinerjaVO);
|
||||
vo.setBobot(bobotSkor);
|
||||
for (Map<String, Object> targetSkor : listTargetSkor) {
|
||||
if (idPegawai.equals(targetSkor.get("pegawaiId"))) {
|
||||
double target = Double.parseDouble(targetSkor.get("skor").toString());
|
||||
vo.setTarget(Math.floor(target));
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (map.get("indikatorId").equals(Master.IndikatorKinerja.PEMENUHAN_HARI_KERJA)) {
|
||||
logbookKinerjaVO.setId(Integer.parseInt(map.get("indikatorId").toString()));
|
||||
vo.setIndikatorKinerja(logbookKinerjaVO);
|
||||
vo.setBobot(bobotHariKerja);
|
||||
vo.setTarget(targetHariKerja.doubleValue());
|
||||
vo.setCapaian(targetHariKerja.doubleValue());
|
||||
} else if (map.get("indikatorId").equals(Master.IndikatorKinerja.PEMENUHAN_JAM_KERJA)) {
|
||||
logbookKinerjaVO.setId(Integer.parseInt(map.get("indikatorId").toString()));
|
||||
vo.setIndikatorKinerja(logbookKinerjaVO);
|
||||
vo.setBobot(bobotJamKerja);
|
||||
vo.setTarget(targetJamKerja);
|
||||
vo.setCapaian(targetJamKerja);
|
||||
} else if (map.get("indikatorId").equals(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS)) {
|
||||
logbookKinerjaVO.setId(Integer.parseInt(map.get("indikatorId").toString()));
|
||||
vo.setIndikatorKinerja(logbookKinerjaVO);
|
||||
vo.setBobot(bobotKualitasPelayanan);
|
||||
vo.setTarget(targetKualitasPelayanan);
|
||||
vo.setCapaian(targetKualitasPelayanan);
|
||||
/*
|
||||
* Set Detail Target Kepatuhan Pelayanan Medis
|
||||
*/
|
||||
for (IndikatorKinerjaDetail ikd : ikds) {
|
||||
LogbookKinerjaDokter logbookKinerjaBaru = new LogbookKinerjaDokter();
|
||||
logbookKinerjaBaru.setBulan(bulan);
|
||||
logbookKinerjaBaru.setDetailTarget(targetPatuhWaktuVisite);
|
||||
logbookKinerjaBaru.setKdProfile((short) 0);
|
||||
logbookKinerjaBaru.setStatusEnabled(true);
|
||||
logbookKinerjaBaru.setTglHitung(new Date());
|
||||
logbookKinerjaBaru.setIndikatorDetail(ikd);
|
||||
Jabatan jb = new Jabatan();
|
||||
jb.setId(Integer.parseInt(map.get("jabatanId").toString()));
|
||||
logbookKinerjaBaru.setJabatan(jb);
|
||||
Pegawai pg = new Pegawai();
|
||||
pg.setId(Integer.parseInt(map.get("pegawaiId").toString()));
|
||||
logbookKinerjaBaru.setPegawai(pg);
|
||||
lkds.add(logbookKinerjaBaru);
|
||||
}
|
||||
} else if (map.get("indikatorId").equals(Master.IndikatorKinerja.KETEPATAN_KEHADIRAN)) {
|
||||
logbookKinerjaVO.setId(Integer.parseInt(map.get("indikatorId").toString()));
|
||||
vo.setIndikatorKinerja(logbookKinerjaVO);
|
||||
vo.setBobot(bobotPerilakuDokter);
|
||||
vo.setTarget(targetPerilakuDokter);
|
||||
vo.setCapaian(targetPerilakuDokter);
|
||||
}
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(lkds) && CommonUtil.isNotNullOrEmpty(vo.getTarget())) {
|
||||
logbookKinerjaDokterDao.save(lkds);
|
||||
this.add(vo);
|
||||
} else if (CommonUtil.isNotNullOrEmpty(vo.getTarget())) {
|
||||
this.add(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.jasamedika.medifirst2000.controller;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -813,6 +814,24 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/set-kontrak-kinerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<Boolean> setKontrakKinerja(HttpServletRequest request, @RequestBody Long bulan) {
|
||||
try {
|
||||
logbookKinerjaService.autoVerifKontrakJamKerjaDokter(new Date(bulan));
|
||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||
return RestUtil.getJsonResponse(true, HttpStatus.CREATED, mapHeaderMessage);
|
||||
} catch (ServiceVOException sve) {
|
||||
LOGGER.error("Got exception {} when add/update working record", 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 add/update working record", jse.getMessage());
|
||||
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
|
||||
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/get-kontrak-kinerja", method = RequestMethod.GET)
|
||||
public ResponseEntity<Map<String, Object>> getKontrakKinerja(HttpServletRequest request,
|
||||
@RequestParam(value = "pegawaiId", required = true) Integer idPegawai,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user