From b8bd63df720bbf06c9cffbf483f672fc382a2399 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 8 Jun 2021 19:47:56 +0700 Subject: [PATCH] - penambahan tabel bobot jenis indikator - pembuatan fungsi simpan data master bobot jenis indikator - pembuatan fungsi delete data master bobot jenis indikator - pembuatan fungsi tampil data master bobot jenis indikator - penyesuaian fungsi hitung target dari capaian pelayanan medis - penyesuaian jenis presensi untuk fitur penanda masuk atau pulang - pembuatan service simpan otomatis target dari capaian pelayanan medis bulanan --- .../dao/BobotJenisIndikatorDao.java | 41 ++++++ .../dao/IndikatorKinerjaDao.java | 4 + .../medifirst2000/dao/SubUnitKerjaDao.java | 4 + .../service/BobotJenisIndikatorService.java | 13 ++ .../service/IkiDanRemunerasiService.java | 6 +- .../service/TargetLayananService.java | 2 +- .../impl/BobotJenisIndikatorServiceImpl.java | 122 ++++++++++++++++++ .../impl/IkiDanRemunerasiServiceImpl.java | 120 ++++++++++------- .../impl/TargetLayananServiceImpl.java | 4 +- .../entities/BobotJenisIndikator.java | 80 ++++++++++++ .../medifirst2000/entities/Habsen.java | 12 ++ .../vo/BobotJenisIndikatorVO.java | 64 +++++++++ .../jasamedika/medifirst2000/vo/HabsenVO.java | 15 ++- .../TargetLayananCustomDetailVO.java | 2 +- .../{ => custom}/TargetLayananCustomVO.java | 4 +- .../src/main/resources/hibernate.cfg.xml | 1 + .../asynctask/CalendarSystemGenerating.java | 1 + .../PegawaiJadwalKerjaGenerating.java | 1 + .../asynctask/TargetLayananGenerating.java | 68 ++++++++++ .../asynctask/{ => timer}/MonthlyTimer.java | 17 +-- .../asynctask/{ => timer}/YearlyTimer.java | 16 +-- .../IkiDanRemunerasiController.java | 78 ++++++++++- .../controller/SdmController.java | 1 + 23 files changed, 583 insertions(+), 93 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/BobotJenisIndikatorDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BobotJenisIndikatorService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/BobotJenisIndikatorServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/BobotJenisIndikator.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/BobotJenisIndikatorVO.java rename jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/{ => custom}/TargetLayananCustomDetailVO.java (93%) rename jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/{ => custom}/TargetLayananCustomVO.java (89%) create mode 100644 jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java rename jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/{ => timer}/MonthlyTimer.java (64%) rename jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/{ => timer}/YearlyTimer.java (65%) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/BobotJenisIndikatorDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/BobotJenisIndikatorDao.java new file mode 100644 index 00000000..8773a903 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/BobotJenisIndikatorDao.java @@ -0,0 +1,41 @@ +package com.jasamedika.medifirst2000.dao; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.BobotJenisIndikator; + +@Repository("BobotJenisIndikatorDao") +public interface BobotJenisIndikatorDao extends PagingAndSortingRepository { + + @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' " + + "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 " + + "and to_char(bj.bulan,'yyyy-MM') <= :periode " + + "order by bj.bulan desc, kj.namaKelompokJabatan, bj.jenisIndikator ") + public List> findAllBobotJenis(@Param("periode") String periode); + + @Query("select distinct bj.bulan " + "from BobotJenisIndikator bj " + "where bj.statusEnabled is true " + + "and bj.bulan <= :periode " + "order by bj.bulan desc") + public List findBulanBerlakuByPeriode(@Param("periode") Date periode); + + @Query("select new Map(bj.jenisIndikator as jenisIndikatorId," + "bj.persentase as persentase) " + + "from BobotJenisIndikator bj " + "where bj.statusEnabled is true " + "and bj.bulan = :periode " + + "order by bj.jenisIndikator") + public List> findBobotJenis(@Param("periode") Date periode); + + @Query("select new Map(bj.jenisIndikator as jenisIndikatorId," + "bj.persentase as persentase) " + + "from BobotJenisIndikator bj " + "inner join bj.kelompokJabatan kj " + "where bj.statusEnabled is true " + + "and bj.bulan = :periode " + "and kj.id = :kelompokJabatanId " + "order by bj.jenisIndikator") + public List> findBobotJenis(@Param("periode") Date periode, + @Param("kelompokJabatanId") Integer idKelompokJabatan); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaDao.java index 81fdd480..a314b3d0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaDao.java @@ -74,4 +74,8 @@ public interface IndikatorKinerjaDao extends PagingAndSortingRepository> findIndikator(@Param("listIdIndikator") List listIdIndikator); + @Query("select ik from IndikatorKinerja ik " + "where ik.statusEnabled is true " + + "and ik.id in (:listIdIndikator)") + List findIndikatorById(@Param("listIdIndikator") List listIdIndikator); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SubUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SubUnitKerjaDao.java index 2bb727d9..435a8cbe 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SubUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SubUnitKerjaDao.java @@ -22,6 +22,10 @@ public interface SubUnitKerjaDao extends PagingAndSortingRepository getSubUnitKerjaByUnitkerja(@Param("id") Integer id); + @Query("select model from SubUnitKerjaPegawai model " + "where model.statusEnabled is true " + + "and model.id in (:listSubunitKerjaId) " + "order by model.name") + List findSubunitKerjaById(@Param("listSubunitKerjaId") List listIdSubunitKerja); + @Query("select subUnitKerja.id " + "from MapPegawaiJabatanToUnitKerja mappeg " + "left join mappeg.pegawai p " + "inner join mappeg.subUnitKerjaPegawai subUnitKerja " + "where mappeg.statusEnabled is true " + "and mappeg.isPrimary is true " + "and mappeg.statusEnabled is true " + "and p.statusEnabled is true " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BobotJenisIndikatorService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BobotJenisIndikatorService.java new file mode 100644 index 00000000..453d6bc4 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/BobotJenisIndikatorService.java @@ -0,0 +1,13 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import com.jasamedika.medifirst2000.entities.BobotJenisIndikator; +import com.jasamedika.medifirst2000.vo.BobotJenisIndikatorVO; + +public interface BobotJenisIndikatorService extends BaseVoService { + + public List> findAllBobotJenis(Long periode); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java index 111c62d6..1c312628 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IkiDanRemunerasiService.java @@ -6,6 +6,7 @@ import java.util.Map; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; public interface IkiDanRemunerasiService { @@ -28,7 +29,8 @@ public interface IkiDanRemunerasiService { public List> findAllIKU(); public Map savePirDanIku(List vo); - - public List> findAllTargetCapaianLayanan(String strPeriode, Integer jmlBulan) throws ParseException; + + public List findAllTargetCapaianLayanan(String strPeriode, Integer idKsm) + throws ParseException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetLayananService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetLayananService.java index f25ff0b5..58d996c7 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetLayananService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetLayananService.java @@ -7,8 +7,8 @@ import org.springframework.orm.jpa.JpaSystemException; import com.jasamedika.medifirst2000.entities.TargetLayanan; import com.jasamedika.medifirst2000.exception.ServiceVOException; -import com.jasamedika.medifirst2000.vo.TargetLayananCustomVO; import com.jasamedika.medifirst2000.vo.TargetLayananVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; public interface TargetLayananService extends BaseVoService { diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/BobotJenisIndikatorServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/BobotJenisIndikatorServiceImpl.java new file mode 100644 index 00000000..5d062914 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/BobotJenisIndikatorServiceImpl.java @@ -0,0 +1,122 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.BobotJenisIndikatorDao; +import com.jasamedika.medifirst2000.entities.BobotJenisIndikator; +import com.jasamedika.medifirst2000.entities.KelompokJabatan; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.BobotJenisIndikatorService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.BobotJenisIndikatorVO; +import com.jasamedika.medifirst2000.vo.KelompokJabatanVO; + +@Service("BobotJenisIndikatorService") +public class BobotJenisIndikatorServiceImpl extends BaseVoServiceImpl implements BobotJenisIndikatorService { + + @Autowired + private BaseConverterImpl bobotJenisIndikatorConverter; + + @Autowired + private BaseConverterImpl kelompokJabatanConverter; + + @Autowired + private BobotJenisIndikatorDao bobotJenisIndikatorDao; + + @Override + public BobotJenisIndikatorVO add(BobotJenisIndikatorVO vo) throws JpaSystemException, ServiceVOException { + BobotJenisIndikator bobotJenis = bobotJenisIndikatorConverter.transferVOToModel(vo, new BobotJenisIndikator()); + + if (CommonUtil.isNotNullOrEmpty(vo.getKelompokJabatan())) { + KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(), + new KelompokJabatan()); + bobotJenis.setKelompokJabatan(kelompokJabatan); + } + + BobotJenisIndikator resultModel = bobotJenisIndikatorDao.save(bobotJenis); + + BobotJenisIndikatorVO resultVO = new BobotJenisIndikatorVO(); + resultVO = bobotJenisIndikatorConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public BobotJenisIndikatorVO update(BobotJenisIndikatorVO vo) throws JpaSystemException, ServiceVOException { + BobotJenisIndikator bobotJenisLama = bobotJenisIndikatorDao.findOne(vo.getNoRec()); + BobotJenisIndikator bobotJenisBaru = bobotJenisIndikatorConverter.transferVOToModel(vo, bobotJenisLama); + + if (CommonUtil.isNotNullOrEmpty(vo.getKelompokJabatan())) { + KelompokJabatan kelompokJabatan = kelompokJabatanConverter.transferVOToModel(vo.getKelompokJabatan(), + new KelompokJabatan()); + bobotJenisBaru.setKelompokJabatan(kelompokJabatan); + } + + BobotJenisIndikator resultModel = bobotJenisIndikatorDao.save(bobotJenisBaru); + + BobotJenisIndikatorVO resultVO = new BobotJenisIndikatorVO(); + resultVO = bobotJenisIndikatorConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + bobotJenisIndikatorDao.delete(key); + + return true; + } + + @Override + public BobotJenisIndikatorVO findById(String key) throws JpaSystemException { + BobotJenisIndikatorVO result = new BobotJenisIndikatorVO(); + + BobotJenisIndikator bobotJenis = bobotJenisIndikatorDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(bobotJenis)) { + result = bobotJenisIndikatorConverter.transferModelToVO(bobotJenis, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = bobotJenisIndikatorDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (BobotJenisIndikator model : models) { + BobotJenisIndikatorVO vo = new BobotJenisIndikatorVO(); + vo = bobotJenisIndikatorConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findAllBobotJenis(Long periode) { + List> result = bobotJenisIndikatorDao + .findAllBobotJenis(new SimpleDateFormat("yyyy-MM").format(new Date(periode))); + + return result; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java index 4d002d4e..43fb9fb3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IkiDanRemunerasiServiceImpl.java @@ -32,6 +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.KelompokTransaksi; import com.jasamedika.medifirst2000.entities.Pegawai; import com.jasamedika.medifirst2000.entities.PegawaiHistoriRekap; @@ -40,6 +41,7 @@ import com.jasamedika.medifirst2000.entities.RunningNumber; import com.jasamedika.medifirst2000.entities.SettingPirSdm; 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.UnitKerjaPegawai; import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; @@ -48,13 +50,17 @@ 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.KelompokTransaksiVO; import com.jasamedika.medifirst2000.vo.PegawaiVO; import com.jasamedika.medifirst2000.vo.RuanganVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; +import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; import com.jasamedika.medifirst2000.vo.SuratKeputusanVO; import com.jasamedika.medifirst2000.vo.UnitKerjaPegawaiVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomDetailVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; @Service("IkiDanRemunerasiService") public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements IkiDanRemunerasiService { @@ -98,6 +104,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Autowired private BaseConverterImpl unitKerjaPegawaiConverter; + @Autowired + private BaseConverterImpl subunitKerjaConverter; + @Autowired private BaseConverterImpl ruanganConverter; @@ -116,6 +125,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Autowired private BaseConverterImpl pegawaiConverter; + @Autowired + private BaseConverterImpl indikatorKinerjaConverter; + @Override public Map loadData() { Map result = new HashMap<>(); @@ -447,16 +459,17 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } @Override - public List> findAllTargetCapaianLayanan(String strPeriode, Integer jmlBulan) + public List findAllTargetCapaianLayanan(String strPeriode, Integer idKsm) throws ParseException { - List> result = new ArrayList<>(); + List result = new ArrayList<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdfINA = new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")); Date periode = sdf.parse(strPeriode); - // get_three_month_earlier + // get_few_months_earlier + Integer jmlBulan = Integer.valueOf(GetSettingDataFixed("jmlBlnHitungTargetMedis")); Calendar calTglAwal = Calendar.getInstance(); calTglAwal.setTime(periode); calTglAwal.set(Calendar.HOUR_OF_DAY, 0); @@ -475,12 +488,19 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik List listRuangEks = splitDataSettingDatafixed("IdRuanganEksekutif"); - List> listIndikatorPelayanan = indikatorKinerjaDao - .findIndikator(Arrays.asList(Master.IndikatorKinerja.INDIKATOR_PELAYANAN_MEDIS)); + List listIndikatorPelayanan = indikatorKinerjaDao + .findIndikatorById(Arrays.asList(Master.IndikatorKinerja.INDIKATOR_PELAYANAN_MEDIS)); - List> dataLayananRaw = ikiDanRemunerasiDao.getDataLayanan(calTglAwal.getTime(), - bulan.getTime(), Master.JenisPegawai.DOKTER, Arrays.asList(Master.UnitKerja.KSM), - Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); + List> dataLayananRaw = new ArrayList<>(); + if (CommonUtil.isNotNullOrEmpty(idKsm)) { + dataLayananRaw = ikiDanRemunerasiDao.getDataLayanan(calTglAwal.getTime(), bulan.getTime(), + Master.JenisPegawai.DOKTER, Arrays.asList(idKsm), Arrays.asList(Master.JenisProduk.NONTINDAKAN), + Master.Produk.KARCIS); + } else { + dataLayananRaw = ikiDanRemunerasiDao.getDataLayanan(calTglAwal.getTime(), bulan.getTime(), + Master.JenisPegawai.DOKTER, Arrays.asList(Master.UnitKerja.KSM), + Arrays.asList(Master.JenisProduk.NONTINDAKAN), Master.Produk.KARCIS); + } // get_kategori_bulan List listBulanPelayanan = new ArrayList<>(); @@ -499,7 +519,7 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik listIdKK.add(Integer.parseInt(map.get("idKelompokKerja").toString())); } } - List> listKelompokKerja = subunitKerjaDao.findSubunitKerja(listIdKK); + List listKelompokKerja = subunitKerjaDao.findSubunitKerjaById(listIdKK); List> dataLastTargetLayanan = targetLayananDao .getLastTargetLayanan(sdf.format(calTglAwal.getTime()), sdf.format(bulan.getTime())); @@ -588,10 +608,10 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik dataLayananScored.add(layanan); } - for (Map kelompokKerja : listKelompokKerja) { - for (Map indikator : listIndikatorPelayanan) { - Map rsMap = new HashMap<>(); - List> listDetail = new ArrayList<>(); + for (SubUnitKerjaPegawai kelompokKerja : listKelompokKerja) { + for (IndikatorKinerja indikator : listIndikatorPelayanan) { + TargetLayananCustomVO resultVo = new TargetLayananCustomVO(); + List listDetail = new ArrayList<>(); double capaianTriwulanKE = 0.0; double capaianTriwulanKG = 0.0; @@ -605,22 +625,22 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik int i = 0; for (String datePelayanan : listBulanPelayananSorted) { i++; - Map detail = new HashMap<>(); + TargetLayananCustomDetailVO detail = new TargetLayananCustomDetailVO(); double capaianBulanan = 0.0; double targetBulanan = 0.0; for (Map data : dataLayananScored) { - if (kelompokKerja.get("id").equals(data.get("idKelompokKerja")) + if (kelompokKerja.getId().equals(data.get("idKelompokKerja")) && datePelayanan.equals(sdf.format(data.get("tglPelayanan")))) { - if (indikator.get("id").equals(Master.IndikatorKinerja.KONSUL_EKS) + if (indikator.getId().equals(Master.IndikatorKinerja.KONSUL_EKS) && data.get("namaTindakan").equals(Master.KONSUL) && listRuangEks.contains(data.get("idRuangan"))) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanKE += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -630,15 +650,15 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanKE / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.KONSUL_GADAR) + } else if (indikator.getId().equals(Master.IndikatorKinerja.KONSUL_GADAR) && data.get("namaTindakan").equals(Master.KONSUL) && data.get("idDepartemen").equals(Master.Departemen.IGD)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanKG += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -648,14 +668,14 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanKG / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.KONSUL_REG) + } else if (indikator.getId().equals(Master.IndikatorKinerja.KONSUL_REG) && data.get("namaTindakan").equals(Master.KONSUL)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanKR += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -665,14 +685,14 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanKR / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.VISITE) + } else if (indikator.getId().equals(Master.IndikatorKinerja.VISITE) && data.get("namaTindakan").equals(Master.VISIT)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanVI += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -682,14 +702,14 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanVI / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.TINDAKAN_EKS) + } else if (indikator.getId().equals(Master.IndikatorKinerja.TINDAKAN_EKS) && listRuangEks.contains(data.get("idRuangan"))) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanTE += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -699,14 +719,14 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanTE / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.TINDAKAN_GADAR) + } else if (indikator.getId().equals(Master.IndikatorKinerja.TINDAKAN_GADAR) && data.get("idDepartemen").equals(Master.Departemen.IGD)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanTG += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -716,14 +736,14 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanTG / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.TINDAKAN_OPS) + } else if (indikator.getId().equals(Master.IndikatorKinerja.TINDAKAN_OPS) && data.get("idRuangan").equals(Master.Ruangan.OK)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanTO += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -733,13 +753,13 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik targetBulanan = Math .floor(capaianTriwulanTO / (listBulanPelayananSorted.size() - 1)); } - } else if (indikator.get("id").equals(Master.IndikatorKinerja.TINDAKAN_REG)) { + } else if (indikator.getId().equals(Master.IndikatorKinerja.TINDAKAN_REG)) { capaianBulanan += Double.valueOf(data.get("jumlahTindakan").toString()); if (i < listBulanPelayananSorted.size()) { capaianTriwulanTR += Double.valueOf(data.get("jumlahTindakan").toString()); for (Map target : dataTargetFiltered) { - if (kelompokKerja.get("id").equals(target.get("kelompokKerjaId")) - && indikator.get("id").equals(target.get("indikatorId")) + if (kelompokKerja.getId().equals(target.get("kelompokKerjaId")) + && indikator.getId().equals(target.get("indikatorId")) && datePelayanan.equals(target.get("periode"))) { targetBulanan = Double.valueOf(target.get("target").toString()); break; @@ -754,20 +774,20 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } Date bulanPelayanan = sdf.parse(datePelayanan); - detail.put("date", datePelayanan); - detail.put("bulan", sdfINA.format(bulanPelayanan)); - detail.put("target", targetBulanan); - detail.put("capaian", capaianBulanan); + detail.setDate(datePelayanan); + detail.setBulan(sdfINA.format(bulanPelayanan)); + detail.setTarget(targetBulanan); + detail.setCapaian(capaianBulanan); listDetail.add(detail); } - if (Double.valueOf(listDetail.get(listDetail.size() - 1).get("target").toString()) > 0.0) { - rsMap.put("detail", listDetail); - rsMap.put("kelompokKerja", kelompokKerja); - rsMap.put("indikator", indikator); - } + if (Double.valueOf(listDetail.get(listDetail.size() - 1).getTarget()) > 0.0) { + resultVo.setDetail(listDetail); + resultVo.setKelompokKerja( + subunitKerjaConverter.transferModelToVO(kelompokKerja, new SubUnitKerjaPegawaiVO())); + resultVo.setIndikator( + indikatorKinerjaConverter.transferModelToVO(indikator, new IndikatorKinerjaVO())); - if (CommonUtil.isNotNullOrEmpty(rsMap)) { - result.add(rsMap); + result.add(resultVo); } } } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetLayananServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetLayananServiceImpl.java index 3a5a35d6..946c0a2b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetLayananServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetLayananServiceImpl.java @@ -23,9 +23,9 @@ import com.jasamedika.medifirst2000.service.TargetLayananService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; -import com.jasamedika.medifirst2000.vo.TargetLayananCustomDetailVO; -import com.jasamedika.medifirst2000.vo.TargetLayananCustomVO; import com.jasamedika.medifirst2000.vo.TargetLayananVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomDetailVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; @Service("targetLayananService") public class TargetLayananServiceImpl implements TargetLayananService { diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/BobotJenisIndikator.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/BobotJenisIndikator.java new file mode 100644 index 00000000..7d12e701 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/BobotJenisIndikator.java @@ -0,0 +1,80 @@ +package com.jasamedika.medifirst2000.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.helper.Caption; + +@Entity +@Table(name = "sdm_bobotjenisindikator_t") +public class BobotJenisIndikator extends BaseTransaction { + + @Caption(value = "Bulan") + @Column(name = "bulan", nullable = false) + @Temporal(TemporalType.DATE) + private Date bulan; + + @Caption(value = "Jenis Indikator") + @Column(name = "jenisindikator", nullable = false) + private Integer jenisIndikator; + + @ManyToOne + @JoinColumn(name = "objectkelompokjabatanfk") + @Caption(value = "Kelompok Jabatan") + private KelompokJabatan kelompokJabatan; + + @Column(name = "objectkelompokjabatanfk", insertable = false, updatable = false, nullable = true) + private Integer kelompokJabatanId; + + @Caption(value = "Persentase") + @Column(name = "persentase", nullable = false) + private Double persentase; + + public Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public Integer getJenisIndikator() { + return jenisIndikator; + } + + public void setJenisIndikator(Integer jenisIndikator) { + this.jenisIndikator = jenisIndikator; + } + + public KelompokJabatan getKelompokJabatan() { + return kelompokJabatan; + } + + public void setKelompokJabatan(KelompokJabatan kelompokJabatan) { + this.kelompokJabatan = kelompokJabatan; + } + + public Integer getKelompokJabatanId() { + return kelompokJabatanId; + } + + public void setKelompokJabatanId(Integer kelompokJabatanId) { + this.kelompokJabatanId = kelompokJabatanId; + } + + public Double getPersentase() { + return persentase; + } + + public void setPersentase(Double persentase) { + this.persentase = persentase; + } +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java index b8a86b0d..f41e6509 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Habsen.java @@ -76,6 +76,10 @@ public class Habsen extends BaseModel { @Column(name = "lokasi", nullable = true, length = 1000) @Caption(value = "lokasi") private String lokasi; + + @Column(name = "jenispresensi", nullable = true) + @Caption(value = "Jenis Presensi") + private Integer jenisPresensi; public Integer getTr_no() { return tr_no; @@ -189,4 +193,12 @@ public class Habsen extends BaseModel { this.lokasi = lokasi; } + public Integer getJenisPresensi() { + return jenisPresensi; + } + + public void setJenisPresensi(Integer jenisPresensi) { + this.jenisPresensi = jenisPresensi; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/BobotJenisIndikatorVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/BobotJenisIndikatorVO.java new file mode 100644 index 00000000..ca866cdc --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/BobotJenisIndikatorVO.java @@ -0,0 +1,64 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class BobotJenisIndikatorVO extends BaseTransactionVO { + + @Caption(value = "Bulan") + private Date bulan; + + @Caption(value = "Jenis Indikator") + private Integer jenisIndikator; + + @Caption(value = "Kelompok Jabatan") + private KelompokJabatanVO kelompokJabatan; + + private Integer kelompokJabatanId; + + @Caption(value = "Persentase") + private Double persentase; + + public Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public Integer getJenisIndikator() { + return jenisIndikator; + } + + public void setJenisIndikator(Integer jenisIndikator) { + this.jenisIndikator = jenisIndikator; + } + + public KelompokJabatanVO getKelompokJabatan() { + return kelompokJabatan; + } + + public void setKelompokJabatan(KelompokJabatanVO kelompokJabatan) { + this.kelompokJabatan = kelompokJabatan; + } + + public Integer getKelompokJabatanId() { + return kelompokJabatanId; + } + + public void setKelompokJabatanId(Integer kelompokJabatanId) { + this.kelompokJabatanId = kelompokJabatanId; + } + + public Double getPersentase() { + return persentase; + } + + public void setPersentase(Double persentase) { + this.persentase = persentase; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java index ae4f2d5b..68fa09ee 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/HabsenVO.java @@ -36,7 +36,7 @@ public class HabsenVO extends BaseMasterVO { @Caption(value = "ip_addr") private String ip_addr; - + @Caption(value = "clientIPAddress") private String clientIPAddress; @@ -51,7 +51,10 @@ public class HabsenVO extends BaseMasterVO { @Caption(value = "lokasi") private String lokasi; - + + @Caption(value = "jenispresensi") + private Integer jenisPresensi; + @Caption(value = "imageURLData") private String imageURLData; @@ -175,6 +178,14 @@ public class HabsenVO extends BaseMasterVO { this.lokasi = lokasi; } + public Integer getJenisPresensi() { + return jenisPresensi; + } + + public void setJenisPresensi(Integer jenisPresensi) { + this.jenisPresensi = jenisPresensi; + } + public String getImageURLData() { return imageURLData; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomDetailVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomDetailVO.java similarity index 93% rename from jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomDetailVO.java rename to jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomDetailVO.java index ca8631a8..906b7750 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomDetailVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomDetailVO.java @@ -1,4 +1,4 @@ -package com.jasamedika.medifirst2000.vo; +package com.jasamedika.medifirst2000.vo.custom; import com.jasamedika.medifirst2000.helper.Caption; diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomVO.java similarity index 89% rename from jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomVO.java rename to jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomVO.java index b6dffed0..ee61174c 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/TargetLayananCustomVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/custom/TargetLayananCustomVO.java @@ -1,9 +1,11 @@ -package com.jasamedika.medifirst2000.vo; +package com.jasamedika.medifirst2000.vo.custom; import java.util.List; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.helper.Caption; +import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; +import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; public class TargetLayananCustomVO extends BaseTransactionVO { diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index d5938abb..99700321 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -685,5 +685,6 @@ + diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java index 35cd2781..271c582f 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/CalendarSystemGenerating.java @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import com.jasamedika.medifirst2000.asynctask.timer.YearlyTimer; import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.service.KalenderService; import com.jasamedika.medifirst2000.util.CommonUtil; diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java index 1b55582a..da444267 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/PegawaiJadwalKerjaGenerating.java @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import com.jasamedika.medifirst2000.asynctask.timer.MonthlyTimer; import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.service.PegawaiJadwalKerjaService; import com.jasamedika.medifirst2000.util.CommonUtil; diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java new file mode 100644 index 00000000..6f238de5 --- /dev/null +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/TargetLayananGenerating.java @@ -0,0 +1,68 @@ +package com.jasamedika.medifirst2000.asynctask; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import com.jasamedika.medifirst2000.asynctask.timer.MonthlyTimer; +import com.jasamedika.medifirst2000.controller.base.LocaleController; +import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; +import com.jasamedika.medifirst2000.service.TargetLayananService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.TargetLayananVO; + +@Component +public class TargetLayananGenerating extends LocaleController { + private final static Logger LOGGER = LoggerFactory.getLogger(TargetLayananGenerating.class); + + @Autowired + private IkiDanRemunerasiService remunerasiService; + + @Autowired + private TargetLayananService targetLayananService; + + public TargetLayananGenerating() { + int the1st = 1; + int at0hrs = 0; + MonthlyTimer.schedule(new Runnable() { + @Override + public void run() { + try { + LOGGER.info("Task Target Layanan : Running Task Target Layanan"); + genTargetLayanan(); + } catch (Exception ex) { + LOGGER.error("Task Target Layanan : Task Target Layanan " + ex.getMessage()); + } finally { + LOGGER.info("Task Target Layanan : Finishing Task Target Layanan"); + } + } + }, the1st, at0hrs); + } + + @Async + public void genTargetLayanan() { + try { + if (CommonUtil.isNotNullOrEmpty(remunerasiService)) { + LOGGER.info("Task Target Layanan : Running Generate Target Layanan"); + List rsList = targetLayananService.addAll(remunerasiService + .findAllTargetCapaianLayanan(new SimpleDateFormat("yyyy-MM").format(new Date()), null)); + if (CommonUtil.isNullOrEmpty(rsList)) { + LOGGER.info("Task Target Layanan : No Generating Target Layanan"); + } + } else { + LOGGER.warn("Task Target Layanan : Undefined service"); + } + } catch (Exception ex) { + LOGGER.error("Task Target Layanan : Generate Target Layanan " + ex.getMessage()); + } finally { + LOGGER.info("Task Target Layanan : Finishing Generate Target Layanan"); + } + } + +} \ No newline at end of file diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/MonthlyTimer.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java similarity index 64% rename from jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/MonthlyTimer.java rename to jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java index 5df59c09..5cd6e04f 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/MonthlyTimer.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/MonthlyTimer.java @@ -1,16 +1,11 @@ -package com.jasamedika.medifirst2000.asynctask; +package com.jasamedika.medifirst2000.asynctask.timer; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class MonthlyTimer { - private final static Logger LOGGER = LoggerFactory.getLogger(MonthlyTimer.class); - // What to do private final Runnable whatToDo; @@ -22,15 +17,11 @@ public class MonthlyTimer { private Timer current = new Timer(); public void cancelCurrent() { - LOGGER.info("MonthlyTimer : Cancel current execution"); current.cancel(); - - LOGGER.info("MonthlyTimer : Removes the timertask so it can be garbage collected"); current.purge(); } public static MonthlyTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { - LOGGER.info("MonthlyTimer : Create a new instance"); return new MonthlyTimer(runnable, dayOfMonth, hourOfDay); } @@ -45,16 +36,12 @@ public class MonthlyTimer { private void schedule() { cancelCurrent(); - LOGGER.info("MonthlyTimer : Assigning a new instance of Timer, allow the previous Timer to be garbage collected"); current = new Timer(); - current.schedule(new TimerTask() { public void run() { try { - LOGGER.info("MonthlyTimer : Running schedule"); whatToDo.run(); } finally { - LOGGER.info("MonthlyTimer : Schedule for the next month"); schedule(); } } @@ -70,8 +57,6 @@ public class MonthlyTimer { runDate.set(Calendar.MILLISECOND, 0); runDate.add(Calendar.MONTH, 1); - LOGGER.info("MonthlyTimer : Set to next month " + runDate.getTime()); - return runDate.getTime(); } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/YearlyTimer.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java similarity index 65% rename from jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/YearlyTimer.java rename to jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java index ccb730bc..faacfa94 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/YearlyTimer.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/asynctask/timer/YearlyTimer.java @@ -1,15 +1,11 @@ -package com.jasamedika.medifirst2000.asynctask; +package com.jasamedika.medifirst2000.asynctask.timer; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class YearlyTimer { - private final static Logger LOGGER = LoggerFactory.getLogger(YearlyTimer.class); // What to do private final Runnable whatToDo; @@ -22,15 +18,11 @@ public class YearlyTimer { private Timer current = new Timer(); public void cancelCurrent() { - LOGGER.info("YearlyTimer : Cancel current execution"); current.cancel(); - - LOGGER.info("YearlyTimer : Removes the timertask so it can be garbage collected"); current.purge(); } public static YearlyTimer schedule(Runnable runnable, int dayOfMonth, int hourOfDay) { - LOGGER.info("YearlyTimer : Create a new instance"); return new YearlyTimer(runnable, dayOfMonth, hourOfDay); } @@ -45,16 +37,12 @@ public class YearlyTimer { private void schedule() { cancelCurrent(); - LOGGER.info("YearlyTimer : Assigning a new instance of Timer, allow the previous Timer to be garbage collected"); current = new Timer(); - current.schedule(new TimerTask() { public void run() { try { - LOGGER.info("YearlyTimer : Running schedule"); whatToDo.run(); } finally { - LOGGER.info("YearlyTimer : Schedule for the next year"); schedule(); } } @@ -71,8 +59,6 @@ public class YearlyTimer { runDate.set(Calendar.MILLISECOND, 0); runDate.add(Calendar.YEAR, 1); - LOGGER.info("YearlyTimer : Set to next year " + runDate.getTime()); - return runDate.getTime(); } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 889f6136..43f0eebe 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -27,6 +27,7 @@ import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.core.web.WebConstants; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.AnggaranRemunerasiService; +import com.jasamedika.medifirst2000.service.BobotJenisIndikatorService; import com.jasamedika.medifirst2000.service.GradeRemunService; import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; import com.jasamedika.medifirst2000.service.IndikatorKinerjaJabatanService; @@ -37,6 +38,7 @@ import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.rest.RestUtil; import com.jasamedika.medifirst2000.vo.AnggaranRemunerasiVO; +import com.jasamedika.medifirst2000.vo.BobotJenisIndikatorVO; import com.jasamedika.medifirst2000.vo.GradeRemunerasiVO; import com.jasamedika.medifirst2000.vo.IkiDanRemunerasiVO; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaJabatanVO; @@ -46,6 +48,7 @@ import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; @RestController @RequestMapping("/iki-remunerasi") @@ -77,6 +80,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -234,11 +240,11 @@ public class IkiDanRemunerasiController extends LocaleController>> getAllTargetLayanan(HttpServletRequest request, + public ResponseEntity> getAllTargetLayanan(HttpServletRequest request, @RequestParam(value = "periode", required = true) String periode, - @RequestParam(value = "jumlahBulan", required = true) Integer jumlahBulan) throws ParseException { + @RequestParam(value = "ksmId", required = false) Integer idKsm) throws ParseException { try { - List> result = service.findAllTargetCapaianLayanan(periode, jumlahBulan); + List result = service.findAllTargetCapaianLayanan(periode, idKsm); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -932,4 +938,70 @@ public class IkiDanRemunerasiController extends LocaleController saveBobotJenisIndikator(HttpServletRequest request, + @Valid @RequestBody BobotJenisIndikatorVO vo) { + try { + BobotJenisIndikatorVO result = new BobotJenisIndikatorVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = bobotJenisIndikatorService.update(vo); + } else { + result = bobotJenisIndikatorService.add(vo); + } + if (CommonUtil.isNotNullOrEmpty(result)) { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); + } else { + return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when add/update bobot jenis indikator", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when add/update bobot jenis indikator", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-master-bobot-jenis-indikator", method = RequestMethod.GET) + public ResponseEntity>> getMasterBobotJenisIndikator(HttpServletRequest request, + @RequestParam(value = "periode", required = true) Long periode) throws ParseException { + try { + List> result = bobotJenisIndikatorService.findAllBobotJenis(periode); + 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 get master bobot jenis indikator", 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 get master bobot jenis indikator", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/delete-master-bobot-jenis-indikator", method = RequestMethod.DELETE) + public ResponseEntity deleteMasterBobotJenisIndikator(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String norec) throws ParseException { + try { + Boolean result = bobotJenisIndikatorService.delete(norec); + 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 delete master bobot jenis indikator", 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 delete master bobot jenis indikator", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java index 6a526559..96d25526 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java @@ -132,6 +132,7 @@ import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.rest.RestUtil; import com.jasamedika.medifirst2000.vo.*; +import com.jasamedika.medifirst2000.vo.custom.TargetLayananCustomVO; @RestController @RequestMapping("/sdm")