Update LogbookKinerjaService
Perbaikan service update kontrak kinerja tidak lagi membentuk detail indikator kualitas dokter setiap kali update. Penerapan validasi maksimal iki berdasarkan kelompok jabatan di dashboard pencatatan kinerja, penilaian kinerja individu, dan rekap penilaian kinerja individu
This commit is contained in:
parent
470aa31395
commit
5ef1f7c942
@ -180,7 +180,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
|
||||
@Override
|
||||
public LogbookKinerjaVO update(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException {
|
||||
List<Map<String, Object>> existedWorkingRecord = findUsedWorkingRecordByKontrak(vo.getNoRec());
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
|
||||
LogbookKinerja logbookKinerjaLama = logbookKinerjaDao.findOne(vo.getNoRec());
|
||||
|
||||
@ -200,13 +200,56 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
}
|
||||
|
||||
LogbookKinerjaVO resultVO = new LogbookKinerjaVO();
|
||||
if (existedWorkingRecord.size() > 0 && !vo.getStatusVerifikasi() && vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage("Catatan kegiatan kinerja sudah diisi, tidak dapat batal verifikasi!");
|
||||
} else if (existedWorkingRecord.size() > 0 && !vo.getStatusVerifikasi() && !vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage("Catatan kegiatan kinerja sudah diisi, tidak dapat hapus kontrak!");
|
||||
if (vo.getIndikatorKinerja().getId().equals(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS)) {
|
||||
List<LogbookKinerjaDokter> listLogbookDetail = new ArrayList<>();
|
||||
|
||||
List<IndikatorKinerjaDetail> listIndikatorDetail = indikatorKinerjaDetailDao
|
||||
.findByIndikator(vo.getIndikatorKinerja().getId());
|
||||
for (IndikatorKinerjaDetail indikatorDetail : listIndikatorDetail) {
|
||||
LogbookKinerjaDokter logbookDetail = logbookKinerjaDokterDao.findOne(mf.format(vo.getBulan()),
|
||||
vo.getPegawai().getId(), vo.getJabatan().getId(), indikatorDetail.getId());
|
||||
listLogbookDetail.add(logbookDetail);
|
||||
}
|
||||
for (LogbookKinerjaDokter logbookDetail : listLogbookDetail) {
|
||||
if (CommonUtil.isNotNullOrEmpty(logbookDetail)
|
||||
&& CommonUtil.isNotNullOrEmpty(logbookDetail.getDetailCapaian()) && !vo.getStatusVerifikasi()
|
||||
&& vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage(
|
||||
"Catatan kegiatan kinerja sudah diverifikasi, tidak dapat batal verifikasi kontrak!");
|
||||
|
||||
break;
|
||||
} else if (CommonUtil.isNotNullOrEmpty(logbookDetail)
|
||||
&& CommonUtil.isNotNullOrEmpty(logbookDetail.getDetailCapaian()) && !vo.getStatusVerifikasi()
|
||||
&& !vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage(
|
||||
"Catatan kegiatan kinerja sudah diverifikasi, tidak dapat hapus kontrak!");
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CommonUtil.isNullOrEmpty(resultVO.getResponseMessage()) && !vo.getStatusEnabled()) {
|
||||
/**
|
||||
* Hapus komponen detail kontrak kinerja
|
||||
*/
|
||||
logbookKinerjaDokterDao.delete(listLogbookDetail);
|
||||
|
||||
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
|
||||
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
|
||||
} else if (CommonUtil.isNullOrEmpty(resultVO.getResponseMessage())) {
|
||||
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
|
||||
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
|
||||
}
|
||||
} else {
|
||||
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
|
||||
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
|
||||
List<Map<String, Object>> existedWorkingRecord = findUsedWorkingRecordByKontrak(vo.getNoRec());
|
||||
if (existedWorkingRecord.size() > 0 && !vo.getStatusVerifikasi() && vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage("Catatan kegiatan kinerja sudah diisi, tidak dapat batal verifikasi!");
|
||||
} else if (existedWorkingRecord.size() > 0 && !vo.getStatusVerifikasi() && !vo.getStatusEnabled()) {
|
||||
resultVO.setResponseMessage("Catatan kegiatan kinerja sudah diisi, tidak dapat hapus kontrak!");
|
||||
} else {
|
||||
LogbookKinerja resultModel = logbookKinerjaDao.save(logbookKinerjaBaru);
|
||||
resultVO = logbookKinerjaConverter.transferModelToVO(resultModel, resultVO);
|
||||
}
|
||||
}
|
||||
|
||||
return resultVO;
|
||||
@ -424,6 +467,19 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
List<Map<String, Object>> data = logbookKinerjaDao.findKontrakKinerja(idPegawai, idJabatan,
|
||||
mf.format(new Date(bulan)));
|
||||
|
||||
/**
|
||||
* Mengecek status indikator yang memiliki komponen detail
|
||||
*/
|
||||
boolean isKualitasDokterExisted = false;
|
||||
for (Map<String, Object> map : data) {
|
||||
if (Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS.equals(map.get("indikatorId"))
|
||||
&& Boolean.parseBoolean(map.get("isStatusVerifikasi").toString())) {
|
||||
isKualitasDokterExisted = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (Map<String, Object> map : listMap) {
|
||||
if (!listIdIndikator.contains(map.get("indikatorId"))) {
|
||||
listIdIndikator.add(Integer.valueOf(map.get("indikatorId").toString()));
|
||||
@ -434,13 +490,18 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
if (map.get("indikatorId").equals(Master.IndikatorKinerja.PELAYANAN_MEDIS_JAM_KERJA)) {
|
||||
List<Double> target = targetSkorDokterDetailDao.findTargetByPegawai(idPegawai,
|
||||
mf.format(new Date(bulan)), yf.format(new Date(bulan)));
|
||||
map.put("target", Math.floor(target.get(0)));
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(target)) {
|
||||
map.put("target", Math.floor(target.get(0)));
|
||||
} else {
|
||||
map.put("target", 0);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Komponen target kualitas indikator pelayanan medis
|
||||
*/
|
||||
if (map.get("indikatorId").equals(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS)) {
|
||||
if (map.get("indikatorId").equals(Master.IndikatorKinerja.KEPATUHAN_PELAYANAN_MEDIS)
|
||||
&& isKualitasDokterExisted) {
|
||||
List<Map<String, Object>> detailIndikator2 = logbookKinerjaDokterDao.findDetailLogbookDokter(
|
||||
mf.format(new Date(bulan)), idPegawai, idJabatan,
|
||||
Integer.valueOf(map.get("indikatorId").toString()));
|
||||
@ -454,24 +515,31 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
Jabatan jb = jabatanDao.findOne(idJabatan);
|
||||
Pegawai pg = pegawaiDao.findOne(idPegawai);
|
||||
|
||||
LogbookKinerjaDokter lkd = new LogbookKinerjaDokter();
|
||||
lkd.setBulan(new Date(bulan));
|
||||
lkd.setDetailTarget(70.0);
|
||||
lkd.setKdProfile((short) 0);
|
||||
lkd.setStatusEnabled(true);
|
||||
lkd.setTglHitung(new Date());
|
||||
lkd.setIndikatorDetail(ikd);
|
||||
lkd.setJabatan(jb);
|
||||
lkd.setPegawai(pg);
|
||||
lkds.add(lkd);
|
||||
LogbookKinerjaDokter logbookKinerjaLama = logbookKinerjaDokterDao
|
||||
.findOne(mf.format(new Date(bulan)), idPegawai, idJabatan, ikd.getId());
|
||||
if (CommonUtil.isNullOrEmpty(logbookKinerjaLama)) {
|
||||
LogbookKinerjaDokter logbookKinerjaBaru = new LogbookKinerjaDokter();
|
||||
logbookKinerjaBaru.setBulan(new Date(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);
|
||||
}
|
||||
}
|
||||
Iterable<LogbookKinerjaDokter> models = logbookKinerjaDokterDao.save(lkds);
|
||||
if (CommonUtil.isNotNullOrEmpty(models)) {
|
||||
List<Map<String, Object>> detailIndikator3 = logbookKinerjaDokterDao
|
||||
.findDetailLogbookDokter(mf.format(new Date(bulan)), idPegawai, idJabatan,
|
||||
Integer.valueOf(map.get("indikatorId").toString()));
|
||||
if (CommonUtil.isNotNullOrEmpty(detailIndikator3)) {
|
||||
map.put("detail", detailIndikator3);
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(lkds)) {
|
||||
Iterable<LogbookKinerjaDokter> models = logbookKinerjaDokterDao.save(lkds);
|
||||
if (CommonUtil.isNotNullOrEmpty(models)) {
|
||||
List<Map<String, Object>> detailIndikator3 = logbookKinerjaDokterDao
|
||||
.findDetailLogbookDokter(mf.format(new Date(bulan)), idPegawai, idJabatan,
|
||||
Integer.valueOf(map.get("indikatorId").toString()));
|
||||
if (CommonUtil.isNotNullOrEmpty(detailIndikator3)) {
|
||||
map.put("detail", detailIndikator3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -571,6 +639,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
List<Map<String, Object>> listJenisIndikator = new ArrayList<>();
|
||||
DateFormat mf = new SimpleDateFormat("yyyy-MM");
|
||||
DateFormat yf = new SimpleDateFormat("yyyy");
|
||||
Integer idKelompokJabatan = null;
|
||||
double totAllPersen = 0.0;
|
||||
double nilaiJabatan = 0.0;
|
||||
double pir = 0.0;
|
||||
@ -609,6 +678,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
|
||||
if (CommonUtil.isNotNullOrEmpty(rs) && rs.size() > 0) {
|
||||
nilaiJabatan = Double.valueOf(rs.get(0).get("nilaiJabatan").toString());
|
||||
idKelompokJabatan = Integer.parseInt(rs.get(0).get("kelompokJabatanId").toString());
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(anggaran)) {
|
||||
pir = Double.valueOf(anggaran.get("pir").toString());
|
||||
@ -660,12 +730,6 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
/ Double.valueOf(detail.get("detailTarget").toString());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/**
|
||||
* TODO inserted by salmanoe [Nov 19, 2021,
|
||||
* 5:14:28 PM] : Detail Indikator Kinerja
|
||||
* lainnya
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -740,16 +804,33 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
}
|
||||
|
||||
Double iki = 0.0;
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao.findAllAcuanIndeks();
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(totAllPersen))
|
||||
&& Double.parseDouble(df.format(totAllPersen)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(totAllPersen)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
if (Arrays.asList(Master.KelompokJabatan.DIR_MS).contains(idKelompokJabatan)) {
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao
|
||||
.findAllAcuanIndeks(Master.TabelAcuanIndeksIKI.MAX_DIR_MS);
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(totAllPersen))
|
||||
&& Double.parseDouble(df.format(totAllPersen)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(totAllPersen)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao
|
||||
.findAllAcuanIndeks(Master.TabelAcuanIndeksIKI.MAX_OTHERS);
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(totAllPersen))
|
||||
&& Double.parseDouble(df.format(totAllPersen)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(totAllPersen)) > 160
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 160)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2328,6 +2409,11 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
List<Map<String, Object>> data = logbookKinerjaDao.findPenilaianKinerja(idPegawai, idJabatan,
|
||||
mf.format(new Date(bulan)));
|
||||
|
||||
Integer idKelompokJabatan = null;
|
||||
if (CommonUtil.isNotNullOrEmpty(data) && data.size() > 0) {
|
||||
idKelompokJabatan = Integer.parseInt(data.get(0).get("kelompokJabatanId").toString());
|
||||
}
|
||||
|
||||
double tBobot = 0.00;
|
||||
double tHasil = 0.00;
|
||||
for (Integer idJenisIndikator : Arrays.asList(Master.Remunerasi.JENIS_INDIKATOR)) {
|
||||
@ -2368,16 +2454,33 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
|
||||
Double iki = 0.0;
|
||||
String kriteria = "-";
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao.findAllAcuanIndeks();
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
if (Arrays.asList(Master.KelompokJabatan.DIR_MS).contains(idKelompokJabatan)) {
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao
|
||||
.findAllAcuanIndeks(Master.TabelAcuanIndeksIKI.MAX_DIR_MS);
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<Map<String, Object>> acuanIndeks = tabelAcuanIndeksIKIDao
|
||||
.findAllAcuanIndeks(Master.TabelAcuanIndeksIKI.MAX_OTHERS);
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 160
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 160)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2456,6 +2559,8 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
for (Integer idSK : listIdSubunitKerja) {
|
||||
for (Integer idP : listIdPegawai) {
|
||||
for (Integer idJ : listIdJabatan) {
|
||||
Integer idKelompokJabatan = Integer.parseInt(data.get(0).get("kelompokJabatanId").toString());
|
||||
|
||||
Map<String, Object> rsMap = new HashMap<>();
|
||||
double tHasil = 0.00;
|
||||
for (Integer idJI : Arrays.asList(Master.Remunerasi.JENIS_INDIKATOR)) {
|
||||
@ -2503,19 +2608,44 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
|
||||
&& CommonUtil.isNotNullOrEmpty(rsMap.get("nilaiJabatan"))) {
|
||||
Double iki = 0.00;
|
||||
String kriteria = "";
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double
|
||||
.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
if (Arrays.asList(Master.KelompokJabatan.DIR_MS).contains(idKelompokJabatan)) {
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double
|
||||
.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 1000
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 1000)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<Map<String, Object>> acuanIndeksLain = new ArrayList<>();
|
||||
for (Map<String, Object> aiki : acuanIndeks) {
|
||||
if (Double.parseDouble(
|
||||
aiki.get("iki").toString()) <= Master.TabelAcuanIndeksIKI.MAX_OTHERS) {
|
||||
acuanIndeksLain.add(aiki);
|
||||
}
|
||||
}
|
||||
|
||||
for (Map<String, Object> aiki : acuanIndeksLain) {
|
||||
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double
|
||||
.parseDouble(df.format(tHasil))
|
||||
&& Double.parseDouble(df.format(tHasil)) <= Double
|
||||
.valueOf(aiki.get("nilaiAtas").toString()))
|
||||
|| (Double.parseDouble(df.format(tHasil)) > 160
|
||||
&& Double.valueOf(aiki.get("nilaiAtas").toString()) == 160)) {
|
||||
iki = Double.valueOf(aiki.get("iki").toString());
|
||||
kriteria = aiki.get("kriteria").toString();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rsMap.put("totalHasil", Double.parseDouble(df.format(tHasil)));
|
||||
rsMap.put("iki", iki);
|
||||
rsMap.put("kriteria", kriteria);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user