- 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:
parent
b8bd63df72
commit
585ffb4cf2
@ -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 {
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user