- pembuatan tabel master detail indikator kinerja

- pembuatan tabel detail kontrak kinerja
- penambahan format output untuk bulan di service tampil bobot jenis indikator
- penyesuaian service hitung target pelayanan medis karena hitung otomatis
- pembuatan service pencarian hasil hitung otomatis target pelayanan medis
- penyesuaian service simpan kontrak kinerja karena detail kontrak kinerja dokter
This commit is contained in:
salmanoe 2021-06-10 17:19:02 +07:00
parent b8bd63df72
commit 585ffb4cf2
15 changed files with 291 additions and 103 deletions

View File

@ -80,16 +80,16 @@ public class Master {
}
public static final class IndikatorKinerja {
public static final Integer KONSUL_EKS = 447;
public static final Integer KONSUL_GADAR = 448;
public static final Integer KONSUL_REG = 449;
public static final Integer TINDAKAN_EKS = 450;
public static final Integer TINDAKAN_GADAR = 451;
public static final Integer TINDAKAN_OPS = 452;
public static final Integer TINDAKAN_REG = 453;
public static final Integer VISITE = 454;
public static final Integer KONSUL_EKS = 1;
public static final Integer KONSUL_GADAR = 2;
public static final Integer KONSUL_REG = 3;
public static final Integer TINDAKAN_EKS = 4;
public static final Integer TINDAKAN_GADAR = 5;
public static final Integer TINDAKAN_OPS = 6;
public static final Integer TINDAKAN_REG = 7;
public static final Integer VISITE = 8;
public static final Integer[] INDIKATOR_PELAYANAN_MEDIS = { 447, 448, 449, 454, 450, 451, 452, 453 };
public static final Integer[] INDIKATOR_PELAYANAN_MEDIS = { 1, 2, 3, 4, 5, 6, 7, 8 };
}
public static final class Jabatan {

View File

@ -14,8 +14,10 @@ import com.jasamedika.medifirst2000.entities.BobotJenisIndikator;
@Repository("BobotJenisIndikatorDao")
public interface BobotJenisIndikatorDao extends PagingAndSortingRepository<BobotJenisIndikator, String> {
@Query("select new Map(bj.noRec as noRec,bj.bulan as bulanBerlaku," + "bj.jenisIndikator as jenisIndikatorId,"
+ "(case when bj.jenisIndikator = 1 then 'Kuantitas' " + "when bj.jenisIndikator = 2 then 'Kualitas' "
@Query("select new Map(bj.noRec as noRec,"
+ "bj.bulan as bulanBerlaku,to_char(bj.bulan,'MM-yyyy') as bulanBerlakuFormatted,"
+ "bj.jenisIndikator as jenisIndikatorId," + "(case when bj.jenisIndikator = 1 then 'Kuantitas' "
+ "when bj.jenisIndikator = 2 then 'Kualitas' "
+ "when bj.jenisIndikator = 3 then 'Perilaku' end) as jenisIndikator,"
+ "kj.id as kelompokJabatanId,kj.namaKelompokJabatan as kelompokJabatan," + "bj.persentase as persentase) "
+ "from BobotJenisIndikator bj " + "left join bj.kelompokJabatan kj " + "where bj.statusEnabled is true "

View File

@ -463,4 +463,9 @@ 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);
}

View File

@ -1,5 +1,6 @@
package com.jasamedika.medifirst2000.dao;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -13,24 +14,39 @@ import com.jasamedika.medifirst2000.entities.TargetLayanan;
@Repository("targetLayananDao")
public interface TargetLayananDao extends CrudRepository<TargetLayanan, String> {
@Query("select new Map(sk.id as kelompokKerjaId," + "ikm.id as indikatorId,"
+ "tl.target as target,to_char(tl.periode,'yyyy-MM') as periode,tl.tglHitung as tglHitung) "
+ "from TargetLayanan tl " + "inner join tl.subUnitKerjaPegawai sk " + "inner join tl.indikator ikm "
+ "where sk.statusEnabled is true " + "and ikm.statusEnabled is true and ikm.statusVerifikasi is true "
@Query("select new Map(sk.id as kelompokKerjaId," + "ikd.id as indikatorId," + "tl.target as target,"
+ "to_char(tl.periode,'yyyy-MM') as periode," + "tl.tglHitung as tglHitung) " + "from TargetLayanan tl "
+ "inner join tl.subUnitKerjaPegawai sk " + "inner join tl.indikatorDetail ikd "
+ "inner join ikd.indikatorKinerja ikm " + "where sk.statusEnabled is true "
+ "and ikd.statusEnabled is true " + "and ikm.statusEnabled is true and ikm.statusVerifikasi is true "
+ "and to_char(tl.periode,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "order by sk.name, tl.tglHitung desc")
public List<Map<String, Object>> getLastTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir);
@Query("select distinct new Map(tl.subUnitKerjaPegawaiId as kelompokKerjaId," + "tl.indikatorId as indikatorId,"
+ "pg.id as pegawaiId," + "tl.target as target," + "tl.capaian as capaian," + "tl.tglHitung as tglHitung) "
@Query("select distinct new Map(tl.subUnitKerjaPegawaiId as kelompokKerjaId,"
+ "tl.indikatorDetailId as indikatorId," + "pg.id as pegawaiId,"
+ "tl.target as target,tl.capaian as capaian,tl.tglHitung as tglHitung) "
+ "from TargetLayanan tl, MapPegawaiJabatanToUnitKerja mj " + "inner join mj.pegawai pg "
+ "where tl.subUnitKerjaPegawaiId = mj.subUnitKerjaPegawaiId " + "and tl.statusEnabled is true "
+ "and mj.statusEnabled is true " + "and pg.statusEnabled is true "
+ "and pg.kategoryPegawaiId in (:listKategoryId) " + "and pg.jenisPegawaiId = :jenisPegawaiId "
+ "and to_char(tl.periode,'yyyy-MM') = :bulan "
+ "order by tl.subUnitKerjaPegawaiId, tl.indikatorId, tl.tglHitung desc, pg.namaLengkap")
+ "order by tl.subUnitKerjaPegawaiId, tl.indikatorDetailId, tl.tglHitung desc, pg.namaLengkap")
public List<Map<String, Object>> findDataPembagianTarget(@Param("listKategoryId") List<Integer> listIdKategori,
@Param("jenisPegawaiId") Integer idJenisPegawai, @Param("bulan") String bulan);
@Query("select tl from TargetLayanan tl " + "where tl.statusEnabled is true "
+ "and to_char(tl.periode,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "order by tl.subUnitKerjaPegawaiId, indikatorDetailId, tl.periode, tl.tglHitung desc")
public List<TargetLayanan> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir);
@Query("select tl from TargetLayanan tl " + "where tl.statusEnabled is true "
+ "and to_char(tl.periode,'yyyy-MM') between :tglAwal and :tglAkhir "
+ "and tl.subUnitKerjaPegawaiId = :kelompokKerjaId "
+ "order by tl.subUnitKerjaPegawaiId, indikatorDetailId, tl.periode, tl.tglHitung desc")
public List<TargetLayanan> findAllTargetLayanan(@Param("tglAwal") String tglAwal,
@Param("tglAkhir") String tglAkhir, @Param("kelompokKerjaId") Integer idKelompokKerja);
}

View File

@ -30,7 +30,8 @@ public interface IkiDanRemunerasiService {
public Map<String, Object> savePirDanIku(List<SettingPirSdmVO> vo);
public List<TargetLayananCustomVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
throws ParseException;
public List<TargetLayananCustomVO> calcTargetCapaianLayanan(String strPeriode, Integer idKsm) throws ParseException;
public List<TargetLayananCustomVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm) throws ParseException;
}

View File

@ -12,7 +12,7 @@ import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO;
public interface TargetLayananService extends BaseVoService<TargetLayanan, TargetLayananVO, String> {
List<String> addAll(List<TargetLayananCustomVO> vos)
List<String> addAll(List<TargetLayananCustomVO> vos, Long periodeHitung)
throws JpaSystemException, ServiceVOException, ParseException;
}

View File

@ -21,7 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.constants.Master;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.IkiDanRemunerasiDao;
import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDao;
import com.jasamedika.medifirst2000.dao.IndikatorKinerjaDetailDao;
import com.jasamedika.medifirst2000.dao.MonitoringAbsenDao;
import com.jasamedika.medifirst2000.dao.RunningNumberDao;
import com.jasamedika.medifirst2000.dao.SettingPirSdmDao;
@ -32,7 +32,7 @@ import com.jasamedika.medifirst2000.dao.SubUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.TargetLayananDao;
import com.jasamedika.medifirst2000.entities.EvaluasiJabatan;
import com.jasamedika.medifirst2000.entities.IkiDanRemunerasi;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail;
import com.jasamedika.medifirst2000.entities.KelompokTransaksi;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.PegawaiHistoriRekap;
@ -43,6 +43,7 @@ import com.jasamedika.medifirst2000.entities.StrukHistori;
import com.jasamedika.medifirst2000.entities.StrukPelayanan;
import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai;
import com.jasamedika.medifirst2000.entities.SuratKeputusan;
import com.jasamedika.medifirst2000.entities.TargetLayanan;
import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai;
import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
@ -50,7 +51,7 @@ import com.jasamedika.medifirst2000.util.CurrencyUtil;
import com.jasamedika.medifirst2000.util.StringUtil;
import com.jasamedika.medifirst2000.vo.EvaluasiJabatanVO;
import com.jasamedika.medifirst2000.vo.IkiDanRemunerasiVO;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.KelompokTransaksiVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;
@ -65,39 +66,9 @@ import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO;
@Service("IkiDanRemunerasiService")
public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements IkiDanRemunerasiService {
@Autowired
private IkiDanRemunerasiDao ikiDanRemunerasiDao;
@Autowired
private StrukPelayananDao strukPelayananDao;
@Autowired
private MonitoringAbsenDao monitoringAbsenDao;
@Autowired
private SettingPirSdmDao settingPirSdmDao;
@Autowired
private RunningNumberDao runningNumberDao;
@Autowired
private StrukHistoriDao strukHistoriDao;
@Autowired
private BaseConverterImpl<StrukHistoriVO, StrukHistori> strukHistoriConverter;
@Autowired
private TargetLayananDao targetLayananDao;
@Autowired
private SkoringTindakanMedisDao skoringTindakanMedisDao;
@Autowired
private IndikatorKinerjaDao indikatorKinerjaDao;
@Autowired
private SubUnitKerjaDao subunitKerjaDao;
@Autowired
private BaseConverterImpl<IkiDanRemunerasiVO, IkiDanRemunerasi> ikiDanRemunerasiConverter;
@ -126,7 +97,37 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
@Autowired
private BaseConverterImpl<IndikatorKinerjaVO, IndikatorKinerja> indikatorKinerjaConverter;
private BaseConverterImpl<IndikatorKinerjaDetailVO, IndikatorKinerjaDetail> indikatorKinerjaDetailConverter;
@Autowired
private IkiDanRemunerasiDao ikiDanRemunerasiDao;
@Autowired
private StrukPelayananDao strukPelayananDao;
@Autowired
private MonitoringAbsenDao monitoringAbsenDao;
@Autowired
private SettingPirSdmDao settingPirSdmDao;
@Autowired
private RunningNumberDao runningNumberDao;
@Autowired
private StrukHistoriDao strukHistoriDao;
@Autowired
private TargetLayananDao targetLayananDao;
@Autowired
private SkoringTindakanMedisDao skoringTindakanMedisDao;
@Autowired
private IndikatorKinerjaDetailDao indikatorKinerjaDetailDao;
@Autowired
private SubUnitKerjaDao subunitKerjaDao;
@Override
public Map<String, Object> loadData() {
@ -459,7 +460,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
}
@Override
public List<TargetLayananCustomVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
public List<TargetLayananCustomVO> calcTargetCapaianLayanan(String strPeriode, Integer idKsm)
throws ParseException {
List<TargetLayananCustomVO> result = new ArrayList<>();
@ -469,14 +470,13 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
Date periode = sdf.parse(strPeriode);
// get_few_months_earlier
Integer jmlBulan = Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis"));
Calendar calTglAwal = Calendar.getInstance();
calTglAwal.setTime(periode);
calTglAwal.set(Calendar.HOUR_OF_DAY, 0);
calTglAwal.set(Calendar.MINUTE, 0);
calTglAwal.set(Calendar.SECOND, 0);
calTglAwal.set(Calendar.DAY_OF_MONTH, 1);
calTglAwal.add(Calendar.MONTH, -jmlBulan);
calTglAwal.add(Calendar.MONTH, -Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis")));
// get_this_period
Calendar bulan = Calendar.getInstance();
@ -488,8 +488,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
List<Integer> listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif");
List<IndikatorKinerja> listIndikatorPelayanan = indikatorKinerjaDao
.findIndikatorById(Arrays.asList(Master.IndikatorKinerja.INDIKATOR_PELAYANAN_MEDIS));
List<IndikatorKinerjaDetail> listIndikatorPelayanan = indikatorKinerjaDetailDao
.findByListId(Arrays.asList(Master.IndikatorKinerja.INDIKATOR_PELAYANAN_MEDIS));
List<Map<String, Object>> dataLayananRaw = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(idKsm)) {
@ -609,7 +609,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
}
for (SubUnitKerjaPegawai kelompokKerja : listKelompokKerja) {
for (IndikatorKinerja indikator : listIndikatorPelayanan) {
for (IndikatorKinerjaDetail indikator : listIndikatorPelayanan) {
TargetLayananCustomVO resultVo = new TargetLayananCustomVO();
List<TargetLayananCustomDetailVO> listDetail = new ArrayList<>();
@ -784,8 +784,98 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik
resultVo.setDetail(listDetail);
resultVo.setKelompokKerja(
subunitKerjaConverter.transferModelToVO(kelompokKerja, new SubUnitKerjaPegawaiVO()));
resultVo.setIndikator(
indikatorKinerjaConverter.transferModelToVO(indikator, new IndikatorKinerjaVO()));
resultVo.setIndikator(indikatorKinerjaDetailConverter.transferModelToVO(indikator,
new IndikatorKinerjaDetailVO()));
result.add(resultVo);
}
}
}
return result;
}
@Override
public List<TargetLayananCustomVO> findAllTargetCapaianLayanan(String strPeriode, Integer idKsm)
throws ParseException {
List<TargetLayananCustomVO> result = new ArrayList<>();
List<TargetLayanan> data = new ArrayList<>();
List<SubUnitKerjaPegawai> listKelompokKerja = new ArrayList<>();
List<Integer> listIdKelompokKerja = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID"));
Date periode = sdf.parse(strPeriode);
// get_few_months_earlier
Calendar calTglAwal = Calendar.getInstance();
calTglAwal.setTime(periode);
calTglAwal.set(Calendar.HOUR_OF_DAY, 0);
calTglAwal.set(Calendar.MINUTE, 0);
calTglAwal.set(Calendar.SECOND, 0);
calTglAwal.set(Calendar.DAY_OF_MONTH, 1);
calTglAwal.add(Calendar.MONTH, -Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis")));
// get_this_period
Calendar bulan = Calendar.getInstance();
bulan.setTime(periode);
bulan.set(Calendar.HOUR_OF_DAY, 23);
bulan.set(Calendar.MINUTE, 59);
bulan.set(Calendar.SECOND, 0);
bulan.set(Calendar.DAY_OF_MONTH, bulan.getActualMaximum(Calendar.DAY_OF_MONTH));
if (CommonUtil.isNotNullOrEmpty(idKsm)) {
data = targetLayananDao.findAllTargetLayanan(sdf.format(calTglAwal.getTime()), sdf.format(bulan.getTime()),
idKsm);
} else {
data = targetLayananDao.findAllTargetLayanan(sdf.format(calTglAwal.getTime()), sdf.format(bulan.getTime()));
}
for (TargetLayanan map : data) {
if (!listIdKelompokKerja.contains(map.getSubUnitKerjaPegawai().getId())) {
listIdKelompokKerja.add(map.getSubUnitKerjaPegawai().getId());
}
}
if (CommonUtil.isNotNullOrEmpty(listIdKelompokKerja)) {
listKelompokKerja = subunitKerjaDao.findSubunitKerjaById(listIdKelompokKerja);
}
List<IndikatorKinerjaDetail> listIndikatorPelayanan = indikatorKinerjaDetailDao
.findByListId(Arrays.asList(Master.IndikatorKinerja.INDIKATOR_PELAYANAN_MEDIS));
for (SubUnitKerjaPegawai kelompokKerja : listKelompokKerja) {
for (IndikatorKinerjaDetail indikator : listIndikatorPelayanan) {
List<String> paramPeriode = new ArrayList<>();
TargetLayananCustomVO resultVo = new TargetLayananCustomVO();
List<TargetLayananCustomDetailVO> listDetail = new ArrayList<>();
for (TargetLayanan targetLayanan : data) {
if (kelompokKerja.getId().equals(targetLayanan.getSubUnitKerjaPegawai().getId())
&& indikator.getId().equals(targetLayanan.getIndikatorDetail().getId())) {
TargetLayananCustomDetailVO detail = new TargetLayananCustomDetailVO();
detail.setDate(sdf.format(targetLayanan.getPeriode()));
detail.setBulan(sdfINA.format(targetLayanan.getPeriode()));
detail.setTarget(targetLayanan.getTarget());
detail.setCapaian(targetLayanan.getCapaian());
if (!paramPeriode.contains(sdf.format(targetLayanan.getPeriode()))) {
listDetail.add(detail);
if (!paramPeriode.contains(sdf.format(targetLayanan.getPeriode()))) {
paramPeriode.add(sdf.format(targetLayanan.getPeriode()));
}
}
}
}
if (listDetail.size() == 4 && listDetail.get(listDetail.size() - 1).getTarget() > 0.0) {
resultVo.setDetail(listDetail);
resultVo.setKelompokKerja(
subunitKerjaConverter.transferModelToVO(kelompokKerja, new SubUnitKerjaPegawaiVO()));
resultVo.setIndikator(indikatorKinerjaDetailConverter.transferModelToVO(indikator,
new IndikatorKinerjaDetailVO()));
result.add(resultVo);
}

View File

@ -13,15 +13,20 @@ import org.springframework.stereotype.Service;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.TargetLayananConverter;
import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.TargetLayananDao;
import com.jasamedika.medifirst2000.entities.IndikatorKinerja;
import com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai;
import com.jasamedika.medifirst2000.entities.TargetLayanan;
import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.TargetLayananService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO;
import com.jasamedika.medifirst2000.vo.TargetLayananVO;
import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomDetailVO;
@ -37,13 +42,19 @@ public class TargetLayananServiceImpl implements TargetLayananService {
private BaseConverterImpl<SubUnitKerjaPegawaiVO, SubUnitKerjaPegawai> subunitKerjaConverter;
@Autowired
private BaseConverterImpl<IndikatorKinerjaVO, IndikatorKinerja> indikatorKinerjaConverter;
private BaseConverterImpl<IndikatorKinerjaDetailVO, IndikatorKinerjaDetail> indikatorKinerjaDetailConverter;
@Autowired
private TargetLayananDao targetLayananDao;
@Autowired
private MapPegawaiJabatanToUnitKerjaDao mapPegawaiJabatanToUnitKerjaDao;
@Autowired
private LogbookKinerjaDokterDao logbookKinerjaDokterDao;
@Override
public List<String> addAll(List<TargetLayananCustomVO> vos)
public List<String> addAll(List<TargetLayananCustomVO> vos, Long periodeHitung)
throws JpaSystemException, ServiceVOException, ParseException {
List<String> resultListVO = new ArrayList<>();
List<TargetLayanan> listTargetLayanan = new ArrayList<>();
@ -57,8 +68,8 @@ public class TargetLayananServiceImpl implements TargetLayananService {
SubUnitKerjaPegawai kelompokKerja = subunitKerjaConverter.transferVOToModel(vo.getKelompokKerja(),
new SubUnitKerjaPegawai());
IndikatorKinerja indikator = indikatorKinerjaConverter.transferVOToModel(vo.getIndikator(),
new IndikatorKinerja());
IndikatorKinerjaDetail indikator = indikatorKinerjaDetailConverter.transferVOToModel(vo.getIndikator(),
new IndikatorKinerjaDetail());
TargetLayanan targetLayanan = new TargetLayanan();
targetLayanan.setKdProfile((short) 0);
@ -67,7 +78,7 @@ public class TargetLayananServiceImpl implements TargetLayananService {
targetLayanan.setSubUnitKerjaPegawai(kelompokKerja);
targetLayanan.setTglHitung(tglHitung);
targetLayanan.setPeriode(sdf.parse(detail.getDate()));
targetLayanan.setIndikator(indikator);
targetLayanan.setIndikatorDetail(indikator);
targetLayanan.setTarget(detail.getTarget());
targetLayanan.setCapaian(detail.getCapaian());
@ -80,12 +91,50 @@ public class TargetLayananServiceImpl implements TargetLayananService {
TargetLayananVO resultVo = new TargetLayananVO();
resultVo = targetLayananConverter.transferModelToVO(resultModel, resultVo);
// pembagian target untuk anggota kelompok kerja
if (sdf.format(resultModel.getPeriode()).equals(sdf.format(new Date(periodeHitung)))) {
setKontrakKinerjaDokter(resultModel);
}
resultListVO.add(resultVo.getNoRec());
}
return resultListVO;
}
public void setKontrakKinerjaDokter(TargetLayanan targetLayanan) throws JpaSystemException, ServiceVOException {
List<LogbookKinerjaDokter> models = new ArrayList<>();
List<Map<String, Object>> dataPegawai = mapPegawaiJabatanToUnitKerjaDao
.findPegawaiJabatanBySubunitKerja(targetLayanan.getSubUnitKerjaPegawai().getId());
Double detailTarget = Math.floor(targetLayanan.target / dataPegawai.size());
if (detailTarget < 1.0) {
detailTarget = 1.0;
}
for (Map<String, Object> map : dataPegawai) {
LogbookKinerjaDokter logbook = new LogbookKinerjaDokter();
logbook.setKdProfile((short) 0);
logbook.setStatusEnabled(true);
logbook.setBulan(targetLayanan.getPeriode());
logbook.setDetailTarget(detailTarget);
logbook.setDetailCapaian(
CommonUtil.isNotNullOrEmpty(targetLayanan.getCapaian()) ? targetLayanan.getCapaian() : 0);
logbook.setIndikatorDetail(targetLayanan.getIndikatorDetail());
Jabatan jabatan = new Jabatan();
jabatan.setId(Integer.valueOf(map.get("jabatanId").toString()));
logbook.setJabatan(jabatan);
Pegawai pegawai = new Pegawai();
pegawai.setId(Integer.valueOf(map.get("pegawaiId").toString()));
logbook.setPegawai(pegawai);
models.add(logbook);
}
logbookKinerjaDokterDao.save(models);
}
@Override
public TargetLayananVO add(TargetLayananVO vo) throws JpaSystemException, ServiceVOException {
TargetLayanan targetLayanan = targetLayananConverter.transferVOToModel(vo, new TargetLayanan());

View File

@ -46,12 +46,12 @@ public class TargetLayanan extends BaseTransaction {
public Date periode;
@ManyToOne
@JoinColumn(name = "objectindikatorfk")
@JoinColumn(name = "objectindikatordetailfk")
@Caption(value = "Indikator Kinerja")
public IndikatorKinerja indikator;
public IndikatorKinerjaDetail indikatorDetail;
@Column(name = "objectindikatorfk", insertable = false, updatable = false)
public Integer indikatorId;
@Column(name = "objectindikatordetailfk", insertable = false, updatable = false)
public Integer indikatorDetailId;
@Column(name = "capaian")
@Caption(value = "Capaian")
@ -109,20 +109,20 @@ public class TargetLayanan extends BaseTransaction {
this.periode = periode;
}
public IndikatorKinerja getIndikator() {
return indikator;
public IndikatorKinerjaDetail getIndikatorDetail() {
return indikatorDetail;
}
public void setIndikator(IndikatorKinerja indikator) {
this.indikator = indikator;
public void setIndikatorDetail(IndikatorKinerjaDetail indikatorDetail) {
this.indikatorDetail = indikatorDetail;
}
public Integer getIndikatorId() {
return indikatorId;
public Integer getIndikatorDetailId() {
return indikatorDetailId;
}
public void setIndikatorId(Integer indikatorId) {
this.indikatorId = indikatorId;
public void setIndikatorDetailId(Integer indikatorDetailId) {
this.indikatorDetailId = indikatorDetailId;
}
public Double getCapaian() {

View File

@ -27,11 +27,11 @@ public class TargetLayananVO extends BaseTransactionVO {
@Caption(value = "Periode")
public Date periode;
@Caption(value = "Indikator Kinerja")
public IndikatorKinerjaVO indikator;
@Caption(value = "Indikator Kinerja Detail")
public IndikatorKinerjaDetailVO indikatorDetail;
@Caption(value = "Id Indikator Kinerja")
public Integer indikatorId;
@Caption(value = "Id Indikator Kinerja Detail")
public Integer indikatorDetailId;
@Caption(value = "Capaian")
public Double capaian;
@ -87,20 +87,20 @@ public class TargetLayananVO extends BaseTransactionVO {
this.periode = periode;
}
public IndikatorKinerjaVO getIndikator() {
return indikator;
public IndikatorKinerjaDetailVO getIndikatorDetail() {
return indikatorDetail;
}
public void setIndikator(IndikatorKinerjaVO indikator) {
this.indikator = indikator;
public void setIndikatorDetail(IndikatorKinerjaDetailVO indikatorDetail) {
this.indikatorDetail = indikatorDetail;
}
public Integer getIndikatorId() {
return indikatorId;
public Integer getIndikatorDetailId() {
return indikatorDetailId;
}
public void setIndikatorId(Integer indikatorId) {
this.indikatorId = indikatorId;
public void setIndikatorDetailId(Integer indikatorDetailId) {
this.indikatorDetailId = indikatorDetailId;
}
public Double getCapaian() {

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.helper.Caption;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaDetailVO;
import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO;
import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO;
@ -12,7 +13,7 @@ public class TargetLayananCustomVO extends BaseTransactionVO {
private static final long serialVersionUID = 3163629696201167352L;
@Caption(value = "Indikator Kinerja")
public IndikatorKinerjaVO indikator;
public IndikatorKinerjaDetailVO indikator;
@Caption(value = "Id Indikator Kinerja")
public Integer indikatorId;
@ -26,11 +27,11 @@ public class TargetLayananCustomVO extends BaseTransactionVO {
@Caption(value = "Detail")
public List<TargetLayananCustomDetailVO> detail;
public IndikatorKinerjaVO getIndikator() {
public IndikatorKinerjaDetailVO getIndikator() {
return indikator;
}
public void setIndikator(IndikatorKinerjaVO indikator) {
public void setIndikator(IndikatorKinerjaDetailVO indikator) {
this.indikator = indikator;
}

View File

@ -686,5 +686,7 @@
<mapping class="com.jasamedika.medifirst2000.entities.AnggaranRemunerasi"/>
<mapping class="com.jasamedika.medifirst2000.entities.GradeRemunerasi"/>
<mapping class="com.jasamedika.medifirst2000.entities.BobotJenisIndikator"/>
<mapping class="com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail"/>
<mapping class="com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter"/>
</session-factory>
</hibernate-configuration>

View File

@ -50,8 +50,8 @@ public class TargetLayananGenerating extends LocaleController<TargetLayananVO> {
try {
if (CommonUtil.isNotNullOrEmpty(remunerasiService)) {
LOGGER.info("Task Target Layanan : Running Generate Target Layanan");
List<String> rsList = targetLayananService.addAll(remunerasiService
.findAllTargetCapaianLayanan(new SimpleDateFormat("yyyy-MM").format(new Date()), null));
List<String> rsList = targetLayananService.addAll(remunerasiService.calcTargetCapaianLayanan(
new SimpleDateFormat("yyyy-MM").format(new Date()), null), new Date().getTime());
if (CommonUtil.isNullOrEmpty(rsList)) {
LOGGER.info("Task Target Layanan : No Generating Target Layanan");
}

View File

@ -239,6 +239,27 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
// Postman using only!
@RequestMapping(value = "/calculate-target-dan-capaian-layanan", method = RequestMethod.GET)
public ResponseEntity<List<TargetLayananCustomVO>> calculateTargetLayanan(HttpServletRequest request,
@RequestParam(value = "periode", required = true) String periode,
@RequestParam(value = "ksmId", required = false) Integer idKsm) throws ParseException {
try {
List<TargetLayananCustomVO> result = service.calcTargetCapaianLayanan(periode, idKsm);
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 calculate target dan capaian layanan", 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 calculate target dan capaian layanan", jse.getMessage());
addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage());
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage);
}
}
@RequestMapping(value = "/get-all-target-dan-capaian-layanan", method = RequestMethod.GET)
public ResponseEntity<List<TargetLayananCustomVO>> getAllTargetLayanan(HttpServletRequest request,
@RequestParam(value = "periode", required = true) String periode,
@ -986,7 +1007,7 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/delete-master-bobot-jenis-indikator", method = RequestMethod.DELETE)
@RequestMapping(value = "/delete-master-bobot-jenis-indikator", method = RequestMethod.POST)
public ResponseEntity<Boolean> deleteMasterBobotJenisIndikator(HttpServletRequest request,
@RequestParam(value = "noRec", required = true) String norec) throws ParseException {
try {

View File

@ -5531,10 +5531,11 @@ public class SdmController extends LocaleController<AkunVO> {
}
@RequestMapping(value = "/save-target-layanan/", method = RequestMethod.POST)
public ResponseEntity<List<String>> addAllTargetLayanan(@RequestBody List<TargetLayananCustomVO> vos,
HttpServletRequest request) throws ParseException {
public ResponseEntity<List<String>> saveTargetLayanan(HttpServletRequest request,
@RequestBody List<TargetLayananCustomVO> vos,
@RequestParam(value = "periodeHitung", required = true) Long periodeHitung) throws ParseException {
try {
List<String> result = targetLayananService.addAll(vos);
List<String> result = targetLayananService.addAll(vos, periodeHitung);
if (null != result)
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));