From 4705b4d24832cccdf781f00682ae762a47bdf43f Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 31 Dec 2021 10:52:09 +0700 Subject: [PATCH] Add CRUD Service target skor dokter Penambahan service simpan, update, delete, view untuk target skor dokter kelompok kerja dan individu. Penambahan hitung pembagian skor kelopmok kerja untuk individu. --- .../dao/IndeksKinerjaDokterDao.java | 14 +- .../dao/TargetSkorDokterDetailDao.java | 12 + .../TargetSkorDokterDetailService.java | 13 + .../service/TargetSkorDokterService.java | 22 ++ .../impl/IkiDanRemunerasiServiceImpl.java | 37 +++ .../TargetSkorDokterDetailServiceImpl.java | 120 ++++++++++ .../impl/TargetSkorDokterServiceImpl.java | 224 ++++++++++++++++++ 7 files changed, 438 insertions(+), 4 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterDetailService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterDetailServiceImpl.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterServiceImpl.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java index a6a06ebe..aefc9907 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java @@ -18,10 +18,16 @@ import com.jasamedika.medifirst2000.entities.IndeksKinerjaDokter; @Repository("indeksKinerjaDokterDao") public interface IndeksKinerjaDokterDao extends PagingAndSortingRepository { - @Query("select new Map(pkd.noRec as noRec," + "pkd.bulan as bulan," + "pkd.unitKerjaId as unitKerjaId," - + "pkd.subunitKerjaId as subunitKerjaId," + "pkd.pegawaiId as pegawaiId," + "pkd.iki as iki," - + "pkd.skor as skor," + "pkd.skorDasar as skorDasar) " + "from IndeksKinerjaDokter pkd " - + "where pkd.statusEnabled is true " + "and to_char(pkd.bulan,'yyyy') = :tahun") + @Query("select new Map(ikid.noRec as noRec," + "ikid.bulan as bulan," + "ikid.unitKerjaId as unitKerjaId," + + "ikid.subunitKerjaId as subunitKerjaId," + "ikid.pegawaiId as pegawaiId," + "ikid.iki as iki," + + "ikid.skor as skor," + "ikid.skorDasar as skorDasar) " + "from IndeksKinerjaDokter ikid " + + "where ikid.statusEnabled is true " + "and to_char(ikid.bulan,'yyyy') = :tahun") List> findAll(@Param("tahun") String tahun) throws JpaSystemException; + @Query("select new Map(ikid.unitKerjaId as unitKerjaId," + "ikid.subunitKerjaId as subunitKerjaId," + + "coalesce(sum(ikid.skorDasar),0) as totalSkorDasar) " + "from IndeksKinerjaDokter ikid " + + "where ikid.statusEnabled is true " + "and to_char(ikid.bulan,'yyyy') = :tahun " + + "group by ikid.unitKerjaId, ikid.subunitKerjaId " + "order by ikid.unitKerjaId, ikid.subunitKerjaId") + List> findTotalSkorByKelompokKerja(@Param("tahun") String tahun) throws JpaSystemException; + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java index 4d8b3be6..3cb67b8e 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/TargetSkorDokterDetailDao.java @@ -1,6 +1,12 @@ package com.jasamedika.medifirst2000.dao; +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.orm.jpa.JpaSystemException; import com.jasamedika.medifirst2000.entities.TargetSkorDokterDetail; @@ -10,4 +16,10 @@ import com.jasamedika.medifirst2000.entities.TargetSkorDokterDetail; */ public interface TargetSkorDokterDetailDao extends PagingAndSortingRepository { + @Query("select new Map(tsdd.kdProfile as kdProfile,tsdd.statusEnabled as statusEnabled," + + "tsdd.targetSkorId as targetSkorId,tsdd.noRec as noRec," + + "tsdd.pegawaiId as pegawaiId,tsdd.skor as skor) " + "from TargetSkorDokterDetail tsdd " + + "where tsdd.statusEnabled is true " + "and tsdd.targetSkorId = :noRec") + public List> findByHeadId(@Param("noRec") String noRec) throws JpaSystemException; + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterDetailService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterDetailService.java new file mode 100644 index 00000000..12783f90 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterDetailService.java @@ -0,0 +1,13 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.entities.TargetSkorDokterDetail; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterDetailVO; + +/** + * @author salmanoe + * @since Dec 27, 2021 + */ +public interface TargetSkorDokterDetailService + extends BaseVoService { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterService.java new file mode 100644 index 00000000..859a2783 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/TargetSkorDokterService.java @@ -0,0 +1,22 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.TargetSkorDokter; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterDetailVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterVO; + +/** + * @author salmanoe + * @since Dec 24, 2021 + */ +public interface TargetSkorDokterService extends BaseVoService { + + public List getDetail(TargetSkorDokter targetSkor) throws JpaSystemException; + + public List> findAll(Long tahun) throws JpaSystemException; + +} 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 3edb0528..43dc727e 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 @@ -6,6 +6,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -62,6 +63,7 @@ import com.jasamedika.medifirst2000.entities.TargetLayanan; import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai; import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; +import com.jasamedika.medifirst2000.service.TargetSkorDokterService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CurrencyUtil; import com.jasamedika.medifirst2000.util.StringUtil; @@ -77,6 +79,7 @@ import com.jasamedika.medifirst2000.vo.SkorDokterVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; import com.jasamedika.medifirst2000.vo.SuratKeputusanVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterVO; import com.jasamedika.medifirst2000.vo.UnitKerjaPegawaiVO; import com.jasamedika.medifirst2000.vo.custom.TargetLayananJamKerjaDetailVO; import com.jasamedika.medifirst2000.vo.custom.TargetLayananJamKerjaVO; @@ -89,6 +92,9 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik @Autowired private LogbookKinerjaService logbookKinerjaService; + @Autowired + private TargetSkorDokterService targetSkorDokterService; + @Autowired private BaseConverterImpl strukHistoriConverter; @@ -501,6 +507,8 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik public void autoSaveTargetCapaianLayananJamKerja() throws ParseException { List> listIkiDokter = new ArrayList<>(); + Date tglHitung = new Date(); + LocalDate firstDayOfYear = LocalDate.now().with(TemporalAdjusters.firstDayOfYear()); Integer lastYear = LocalDate.now().minusYears(1).getYear(); List> data = indeksKinerjaDokterDao.findAll(lastYear.toString()); @@ -565,6 +573,35 @@ public class IkiDanRemunerasiServiceImpl extends BaseVoServiceImpl implements Ik } indeksKinerjaDokterDao.save(models); + + List> listTotalSkor = indeksKinerjaDokterDao + .findTotalSkorByKelompokKerja(lastYear.toString()); + for (Map totalSkor : listTotalSkor) { + TargetSkorDokterVO vo = new TargetSkorDokterVO(); + vo.setKdProfile((short) 0); + vo.setStatusEnabled(true); + + UnitKerjaPegawaiVO unitKerjVO = new UnitKerjaPegawaiVO(); + unitKerjVO.setId(Integer.parseInt(totalSkor.get("unitKerjaId").toString())); + vo.setUnitKerjaPegawai(unitKerjVO); + + SubUnitKerjaPegawaiVO subunitKerjaVO = new SubUnitKerjaPegawaiVO(); + subunitKerjaVO.setId(Integer.parseInt(totalSkor.get("subunitKerjaId").toString())); + vo.setSubUnitKerjaPegawai(subunitKerjaVO); + + vo.setTotalSkorDasar(Double.parseDouble(totalSkor.get("totalSkorDasar").toString())); + vo.setTglHitung(tglHitung); + vo.setTmt(Date.from(firstDayOfYear.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); + + /** + * Tidak memungkinkan untuk hitung ulang target skor kelompok kerja + * dengan asumsi tidak adanya fitur batal verifikasi logbook skor + * dokter + * + * Sehingga tidak memanggil service update + */ + targetSkorDokterService.add(vo); + } } @Override diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterDetailServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterDetailServiceImpl.java new file mode 100644 index 00000000..0b6aee12 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterDetailServiceImpl.java @@ -0,0 +1,120 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +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.TargetSkorDokterDetailDao; +import com.jasamedika.medifirst2000.entities.Pegawai; +import com.jasamedika.medifirst2000.entities.TargetSkorDokter; +import com.jasamedika.medifirst2000.entities.TargetSkorDokterDetail; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.TargetSkorDokterDetailService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterDetailVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterVO; + +/** + * @author salmanoe + * @since Dec 27, 2021 + */ +@Service("targetSkorDokterDetailService") +public class TargetSkorDokterDetailServiceImpl extends BaseVoServiceImpl implements TargetSkorDokterDetailService { + + @Autowired + private BaseConverterImpl targetSkorConverter; + + @Autowired + private BaseConverterImpl pegawaiConverter; + + @Autowired + private BaseConverterImpl targetSkorDetailConverter; + + @Autowired + private TargetSkorDokterDetailDao targetSkorDetailDao; + + @Override + public TargetSkorDokterDetailVO add(TargetSkorDokterDetailVO vo) throws JpaSystemException, ServiceVOException { + TargetSkorDokter targetSkor = targetSkorConverter.transferVOToModel(vo.getTargetSkor(), new TargetSkorDokter()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + + TargetSkorDokterDetail targetSkorDetail = targetSkorDetailConverter.transferVOToModel(vo, + new TargetSkorDokterDetail()); + targetSkorDetail.setTargetSkor(targetSkor); + targetSkorDetail.setPegawai(pegawai); + TargetSkorDokterDetail resultModel = targetSkorDetailDao.save(targetSkorDetail); + + TargetSkorDokterDetailVO resultVO = new TargetSkorDokterDetailVO(); + resultVO = targetSkorDetailConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public TargetSkorDokterDetailVO update(TargetSkorDokterDetailVO vo) throws JpaSystemException, ServiceVOException { + TargetSkorDokterDetail targetSkorDetailLama = targetSkorDetailDao.findOne(vo.getNoRec()); + + TargetSkorDokter targetSkor = targetSkorConverter.transferVOToModel(vo.getTargetSkor(), new TargetSkorDokter()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + + TargetSkorDokterDetail targetSkorDetailBaru = targetSkorDetailConverter.transferVOToModel(vo, + targetSkorDetailLama); + targetSkorDetailBaru.setTargetSkor(targetSkor); + targetSkorDetailBaru.setPegawai(pegawai); + TargetSkorDokterDetail resultModel = targetSkorDetailDao.save(targetSkorDetailBaru); + + TargetSkorDokterDetailVO resultVO = new TargetSkorDokterDetailVO(); + resultVO = targetSkorDetailConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + targetSkorDetailDao.delete(key); + + return true; + } + + @Override + public TargetSkorDokterDetailVO findById(String key) throws JpaSystemException { + TargetSkorDokterDetailVO result = new TargetSkorDokterDetailVO(); + + TargetSkorDokterDetail targetSkorDetail = targetSkorDetailDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(targetSkorDetail)) { + result = targetSkorDetailConverter.transferModelToVO(targetSkorDetail, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = targetSkorDetailDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (TargetSkorDokterDetail model : models) { + TargetSkorDokterDetailVO vo = new TargetSkorDokterDetailVO(); + vo = targetSkorDetailConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterServiceImpl.java new file mode 100644 index 00000000..284d7ed7 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/TargetSkorDokterServiceImpl.java @@ -0,0 +1,224 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +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.constants.Master; +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; +import com.jasamedika.medifirst2000.dao.TargetSkorDokterDao; +import com.jasamedika.medifirst2000.dao.TargetSkorDokterDetailDao; +import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai; +import com.jasamedika.medifirst2000.entities.TargetSkorDokter; +import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.TargetSkorDokterDetailService; +import com.jasamedika.medifirst2000.service.TargetSkorDokterService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.MathUtil; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterDetailVO; +import com.jasamedika.medifirst2000.vo.TargetSkorDokterVO; +import com.jasamedika.medifirst2000.vo.UnitKerjaPegawaiVO; + +/** + * @author salmanoe + * @since Dec 24, 2021 + */ +@Service("targetSkorDokterService") +public class TargetSkorDokterServiceImpl extends BaseVoServiceImpl implements TargetSkorDokterService { + + @Autowired + private TargetSkorDokterDetailService targetSkorDetailService; + + @Autowired + private BaseConverterImpl unitKerjaConverter; + + @Autowired + private BaseConverterImpl subunitKerjaConverter; + + @Autowired + private BaseConverterImpl targetSkorConverter; + + @Autowired + private TargetSkorDokterDao targetSkorDao; + + @Autowired + private TargetSkorDokterDetailDao targetSkorDetailDao; + + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mapJabatanDao; + + @Override + public TargetSkorDokterVO add(TargetSkorDokterVO vo) throws JpaSystemException, ServiceVOException { + UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerjaPegawai(), + new UnitKerjaPegawai()); + SubUnitKerjaPegawai subunitKerja = subunitKerjaConverter.transferVOToModel(vo.getSubUnitKerjaPegawai(), + new SubUnitKerjaPegawai()); + TargetSkorDokter targetSkor = targetSkorConverter.transferVOToModel(vo, new TargetSkorDokter()); + targetSkor.setUnitKerjaPegawai(unitKerja); + targetSkor.setSubUnitKerjaPegawai(subunitKerja); + targetSkor.setTglHitung(new Date()); + TargetSkorDokter resultModel = targetSkorDao.save(targetSkor); + + TargetSkorDokterVO resultVO = new TargetSkorDokterVO(); + if (CommonUtil.isNotNullOrEmpty(resultModel)) { + resultVO = targetSkorConverter.transferModelToVO(resultModel, resultVO); + + /** + * Pembagian skor untuk seluruh anggota kelompok kerja + */ + List listDetailVO = this.getDetail(resultModel); + for (TargetSkorDokterDetailVO detailVO : listDetailVO) { + if (CommonUtil.isNotNullOrEmpty(detailVO.getNoRec())) { + targetSkorDetailService.update(detailVO); + } else { + targetSkorDetailService.add(detailVO); + } + } + } + + return resultVO; + } + + @Override + public TargetSkorDokterVO update(TargetSkorDokterVO vo) throws JpaSystemException, ServiceVOException { + TargetSkorDokter targetSkorLama = targetSkorDao.findOne(vo.getNoRec()); + + UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerjaPegawai(), + new UnitKerjaPegawai()); + SubUnitKerjaPegawai subunitKerja = subunitKerjaConverter.transferVOToModel(vo.getSubUnitKerjaPegawai(), + new SubUnitKerjaPegawai()); + + TargetSkorDokter targetSkorBaru = targetSkorConverter.transferVOToModel(vo, targetSkorLama); + targetSkorBaru.setUnitKerjaPegawai(unitKerja); + targetSkorBaru.setSubUnitKerjaPegawai(subunitKerja); + targetSkorBaru.setTglHitung(new Date()); + TargetSkorDokter resultModel = targetSkorDao.save(targetSkorBaru); + + TargetSkorDokterVO resultVO = new TargetSkorDokterVO(); + if (CommonUtil.isNotNullOrEmpty(resultModel)) { + resultVO = targetSkorConverter.transferModelToVO(resultModel, resultVO); + + /** + * Pembagian skor untuk seluruh anggota kelompok kerja + */ + List listDetailVO = this.getDetail(resultModel); + for (TargetSkorDokterDetailVO detailVO : listDetailVO) { + if (CommonUtil.isNotNullOrEmpty(detailVO.getNoRec())) { + targetSkorDetailService.update(detailVO); + } else { + targetSkorDetailService.add(detailVO); + } + } + } + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + targetSkorDao.delete(key); + + return true; + } + + @Override + public TargetSkorDokterVO findById(String key) throws JpaSystemException { + TargetSkorDokterVO result = new TargetSkorDokterVO(); + + TargetSkorDokter targetSkor = targetSkorDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(targetSkor)) { + result = targetSkorConverter.transferModelToVO(targetSkor, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = targetSkorDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (TargetSkorDokter model : models) { + TargetSkorDokterVO vo = new TargetSkorDokterVO(); + vo = targetSkorConverter.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 getDetail(TargetSkorDokter targetSkor) throws JpaSystemException { + List result = new ArrayList<>(); + + List> listPegawai = mapJabatanDao.findPegawaiJabatanByKelompokKerja( + targetSkor.getSubUnitKerjaPegawai().getId(), Arrays.asList(Master.KategoryPegawai.REMUN), + Master.JenisPegawai.DOKTER, Arrays.asList(Master.KedudukanPegawai.INACTIVE_LOGIN)); + + List> listDetail = targetSkorDetailDao.findByHeadId(targetSkor.getNoRec()); + + for (Map pegawai : listPegawai) { + TargetSkorDokterDetailVO vo = new TargetSkorDokterDetailVO(); + + for (Map detail : listDetail) { + if (detail.get("pegawaiId").toString().equals(pegawai.get("pegawaiId").toString())) { + vo.setNoRec(detail.get("noRec").toString()); + + break; + } + } + + TargetSkorDokterVO targetSkorVO = new TargetSkorDokterVO(); + targetSkorVO = targetSkorConverter.transferModelToVO(targetSkor, targetSkorVO); + vo.setTargetSkor(targetSkorVO); + + PegawaiVO pegawaiVO = new PegawaiVO(); + pegawaiVO.setId(Integer.parseInt(pegawai.get("pegawaiId").toString())); + vo.setPegawai(pegawaiVO); + + vo.setKdProfile((short) 0); + vo.setStatusEnabled(true); + vo.setSkor(targetSkor.getTotalSkorDasar() / listPegawai.size()); + + result.add(vo); + } + + return result; + } + + @Override + public List> findAll(Long tahun) throws JpaSystemException { + DateFormat tf = new SimpleDateFormat("yyyy"); + + List> result = targetSkorDao.findAll(tf.format(new Date(tahun))); + for (Map rs : result) { + double totalTargetSkor = Double.parseDouble(rs.get("totalTargetSkor").toString()); + + rs.put("totalTargetSkor", MathUtil.round(totalTargetSkor, 2)); + } + + return result; + } + +}