- penambahan kondisi kedudukan inactive login pada perhitungan target layanan dokter otomatis

- perbaikan service penentuan jumlah anggota kelompok kerja untuk pembagian target layanan dokter per individu
- perbaikan penentuan iki dan kriteria dari mapping saat pencarian penilaian kinerja individu
- perbaikan penentuan iki dari mapping saat pencarian dashboard pencatatan kinerja
This commit is contained in:
salmanoe 2021-10-30 20:25:53 +07:00
parent f589bc92b6
commit f91c28db49
5 changed files with 71 additions and 38 deletions

View File

@ -113,9 +113,9 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and ppp.ObjectPegawaiId = mpju.pegawaiId " + "and mpju.pegawaiId = pg.id "
+ "and pjk.pegawaiId = ppp.ObjectPegawaiId " + "and pjk.pegawaiId = mpju.pegawaiId "
+ "and pjk.pegawaiId = pg.id " + "and pg.kategoryPegawaiId in (:listKategoriRemun) "
+ "and mpju.unitKerjaPegawaiId in (:listKsmId) " + "and jb.levelJabatan = 5 "
+ "and mpju.statusEnabled is true " + "and pg.statusEnabled is true " + "and su.statusEnabled is true "
+ "and pd.statusEnabled is true " + "and sk.statusEnabled is true "
+ "and pg.kedudukanId not in (:listInactiveId) " + "and mpju.unitKerjaPegawaiId in (:listKsmId) "
+ "and jb.levelJabatan = 5 " + "and mpju.statusEnabled is true " + "and pg.statusEnabled is true "
+ "and su.statusEnabled is true " + "and pd.statusEnabled is true " + "and sk.statusEnabled is true "
+ "and pp.tglPelayanan between :tglAwal and :tglAkhir "
+ "and cast(pp.tglPelayanan as date) = cast(kl.tanggal as date) "
+ "and ((pd.kelompokPasienId in (:listBpjsId) or (pd.kelompokPasienId = :asuransiLainId and pd.rekananId = :jaminanKemenkesId)) "
@ -130,7 +130,8 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
@Param("tglAkhir") Date tglAkhir, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listDepartemenId") List<Integer> listIdDepartemen,
@Param("listKategoriRemun") List<Integer> listKategoriRemun, @Param("listKsmId") List<Integer> listIdKsm,
@Param("listKategoriRemun") List<Integer> listKategoriRemun,
@Param("listInactiveId") List<Integer> listIdInactive, @Param("listKsmId") List<Integer> listIdKsm,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("asuransiLainId") Integer idAsuransiLain, @Param("jaminanKemenkesId") Integer idJaminanKemenkes,
@Param("karcisId") Integer idKarcis);
@ -156,12 +157,13 @@ public interface IkiDanRemunerasiDao extends PagingAndSortingRepository<IkiDanRe
+ "and ((to_char(pp.tglPelayanan,'dy') in ('mon','tue','wed','thu') and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId in (:listDepartemenId) then '14:00:01' else '15:30:01' end) and '23:59:59' or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) "
+ "or (to_char(pp.tglPelayanan,'dy') in ('fri') and (to_char(pp.tglPelayanan,'HH24:MI:ss') between (case when pp.tglPelayanan between cast(:psbbAwal as timestamp) and cast(:psbbAkhir as timestamp) and ru.departemenId in (:listDepartemenId) then '15:30:01' else '16:00:01'end) and '23:59:59' or to_char(pp.tglPelayanan,'HH24:MI:ss') between '00:00:00' and '07:00:00') and sk.id not in (:listNonjadwalId)) "
+ "or to_char(pp.tglPelayanan,'dy') in ('sat','sun') " + "or sk.id in (:listNonjadwalId))) "
+ "and pg.jenisPegawaiId = :jenisPegawaiId " + "and jb.kelompokJabatanId in (3,4) "
+ "and djp.jenisProdukId not in (:listNontindakanId) " + "and pr.id <> :karcisId "
+ "order by pg.namaLengkap, pr.id")
+ "and pg.jenisPegawaiId = :jenisPegawaiId " + "and pg.kedudukanId not in (:listInactiveId) "
+ "and jb.kelompokJabatanId in (3,4) " + "and djp.jenisProdukId not in (:listNontindakanId) "
+ "and pr.id <> :karcisId " + "order by pg.namaLengkap, pr.id")
public List<Map<String, Object>> getDataLayananLuarJamKerja(@Param("tglAwal") Date tglAwal,
@Param("tglAkhir") Date tglAkhir, @Param("psbbAwal") Date psbbAwal, @Param("psbbAkhir") Date psbbAkhir,
@Param("listNonjadwalId") List<Integer> listIdNonjadwal, @Param("jenisPegawaiId") Integer idJenisPegawai,
@Param("listInactiveId") List<Integer> listIdInactive,
@Param("listDepartemenId") List<Integer> listIdDepartemen, @Param("listKsmId") List<Integer> listIdKsm,
@Param("listNontindakanId") List<Integer> listIdNontindakan, @Param("listBpjsId") List<Integer> listIdBpjs,
@Param("asuransiLainId") Integer idAsuransiLain, @Param("jaminanKemenkesId") Integer idJaminanKemenkes,

View File

@ -16,7 +16,11 @@ public interface IndikatorKinerjaDetailDao extends PagingAndSortingRepository<In
@Query("select new Map(ikd.id as id,ikd.detailIndikator as detailIndikator) " + "from IndikatorKinerjaDetail ikd "
+ "where ikd.statusEnabled is true and ikd.id in (:listDetailId) " + "order by ikd.detailIndikator")
public List<Map<String, Object>> findByListId(@Param("listDetailId") List<Integer> listIdDetail);
@Query("select ikd " + "from IndikatorKinerjaDetail ikd " + "where ikd.statusEnabled is true "
+ "and ikd.indikatorKinerjaId = :indikatorId")
public List<IndikatorKinerjaDetail> findByIndikator(@Param("indikatorId") Integer idIndikator);
@Query("select ikd.detailIndikator from IndikatorKinerjaDetail ikd where ikd.id = :indikatorId")
public String findNamaIndikator(@Param("indikatorId") Integer idIndikator);

View File

@ -479,9 +479,13 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
+ "and mj.pegawaiId = :pegawaiId " + "order by mj.nilaiJabatan desc, " + "mj.isPrimary desc")
List<Map<String, Object>> findNilaiJabatanByPegawai(@Param("pegawaiId") Integer idPegawai);
@Query("select new Map(mj.pegawaiId as pegawaiId,mj.jabatanId as jabatanId) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true "
+ "and mj.subUnitKerjaPegawaiId = :subunitKerjaId")
List<Map<String, Object>> findPegawaiJabatanBySubunitKerja(@Param("subunitKerjaId") Integer idSubunitKerja);
@Query("select distinct new Map(mj.pegawaiId as pegawaiId,mj.jabatanId as jabatanId) "
+ "from MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg " + "where mj.statusEnabled is true "
+ "and pg.statusEnabled is true " + "and mj.subUnitKerjaPegawaiId = :kelompokKerja "
+ "and pg.kategoryPegawaiId in (:remun) " + "and pg.jenisPegawaiId = :dokter "
+ "and pg.kedudukanId not in (:nonAktif)")
List<Map<String, Object>> findPegawaiJabatanByKelompokKerja(@Param("kelompokKerja") Integer idKK,
@Param("remun") List<Integer> listIdRemun, @Param("dokter") Integer idDokter,
@Param("nonAktif") List<Integer> listIdNonAktif);
}

View File

@ -546,9 +546,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Map<String, Object>> dataRaw = ikiDanRemunerasiDao.getDataLayananJamKerja(calTglAwal.getTime(),
bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER,
Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN), Arrays.asList(Master.KategoryPegawai.REMUN),
Arrays.asList(Master.UnitKerja.KSM), Arrays.asList(Master.JenisProduk.NONTINDAKAN),
Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS), Master.KelompokPasien.ASURANSI_LAIN,
Master.Rekanan.JAMINAN_KEMENKES, Master.Produk.KARCIS);
Arrays.asList(Master.KedudukanPegawai.INACTIVE_LOGIN), Arrays.asList(Master.UnitKerja.KSM),
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.KelompokPasien.ASURANSI_LAIN, Master.Rekanan.JAMINAN_KEMENKES, Master.Produk.KARCIS);
// filter detail jenis produk
for (Map<String, Object> map : dataRaw) {
@ -970,7 +970,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
targetLayananDao.save(targetLayanan);
if (sdf.format(targetLayanan.getPeriode()).equals(sdf.format(periodeHitung))) {
List<Map<String, Object>> dataPegawai = mapPegawaiJabatanToUnitKerjaDao
.findPegawaiJabatanBySubunitKerja(targetLayanan.getSubUnitKerjaPegawai().getId());
.findPegawaiJabatanByKelompokKerja(targetLayanan.getSubUnitKerjaPegawai().getId(),
Arrays.asList(Master.KategoryPegawai.REMUN), Master.JenisPegawai.DOKTER,
Arrays.asList(Master.KedudukanPegawai.INACTIVE_LOGIN));
Double detailTarget = Math.floor(targetLayanan.getTarget() / dataPegawai.size());
if (detailTarget < 1.0) {
@ -1060,6 +1062,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Map<String, Object>> dataRaw = ikiDanRemunerasiDao.getDataLayananLuarJamKerja(calTglAwal.getTime(),
bulan.getTime(), pssbAwal, pssbAkhir, listIdNonjadwal, Master.JenisPegawai.DOKTER,
Arrays.asList(Master.KedudukanPegawai.INACTIVE_LOGIN),
Arrays.asList(Master.Departemen.GRUP_RAWAT_JALAN), Arrays.asList(Master.UnitKerja.KSM),
Arrays.asList(Master.JenisProduk.NONTINDAKAN), Arrays.asList(Master.KelompokPasien.KELOMPOK_BPJS),
Master.KelompokPasien.ASURANSI_LAIN, Master.Rekanan.JAMINAN_KEMENKES, Master.Produk.KARCIS);

View File

@ -422,21 +422,26 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
if (CommonUtil.isNotNullOrEmpty(detailIndikator2)) {
map.put("detail", detailIndikator2);
} else {
IndikatorKinerjaDetail ikd = indikatorKinerjaDetailDao.findOne(17);
Jabatan jb = jabatanDao.findOne(idJabatan);
Pegawai pg = pegawaiDao.findOne(idPegawai);
List<IndikatorKinerjaDetail> ikds = indikatorKinerjaDetailDao
.findByIndikator(Integer.valueOf(map.get("indikatorId").toString()));
List<LogbookKinerjaDokter> lkds = new ArrayList<>();
for (IndikatorKinerjaDetail ikd : ikds) {
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);
LogbookKinerjaDokter model = logbookKinerjaDokterDao.save(lkd);
if (CommonUtil.isNotNullOrEmpty(model)) {
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);
}
Iterable<LogbookKinerjaDokter> models = logbookKinerjaDokterDao.save(lkds);
if (CommonUtil.isNotNullOrEmpty(models)) {
List<Map<String, Object>> detailIndikator3 = logbookKinerjaDokterDao
.findDetailKontrakKinerja(df.format(new Date(bulan)), idJabatan, idPegawai,
Integer.valueOf(map.get("indikatorId").toString()));
@ -644,9 +649,17 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
}
Double iki = 0.0;
Map<String, Object> acuanIndeks = tabelAcuanIndeksIKIDao.findIKI(totAllPersen);
if (CommonUtil.isNotNullOrEmpty(acuanIndeks)) {
iki = Double.valueOf(acuanIndeks.get("indeks").toString());
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());
break;
}
}
double targetRupiahP1 = nilaiJabatan * Master.Remunerasi.IKI_STANDAR * pir * Master.Remunerasi.PERSEN_P1;
@ -2049,10 +2062,17 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Double iki = 0.0;
String kriteria = "-";
Map<String, Object> acuanIndeks = tabelAcuanIndeksIKIDao.findIKI(Double.parseDouble(df.format(tHasil)));
if (CommonUtil.isNotNullOrEmpty(acuanIndeks)) {
iki = Double.valueOf(acuanIndeks.get("indeks").toString());
kriteria = acuanIndeks.get("kriteria").toString();
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();
break;
}
}
result.put("tBobot", tBobot);
@ -2178,7 +2198,7 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb
Double iki = 0.00;
String kriteria = "";
for (Map<String, Object> aiki : acuanIndeks) {
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) <= Double
if ((Double.valueOf(aiki.get("nilaiBawah").toString()) < Double
.parseDouble(df.format(tHasil))
&& Double.parseDouble(df.format(tHasil)) <= Double
.valueOf(aiki.get("nilaiAtas").toString()))