From adddffcc75c709338a0470476bd9fced3626aedc Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 1 Dec 2023 10:05:41 +0700 Subject: [PATCH] Update service logbook kinerja Penerapan hitung akumulasi capaian by database --- .../dao/LogbookKinerjaDetailDao.java | 9 ++-- .../impl/LogbookKinerjaDetailServiceImpl.java | 53 +++++++------------ jasamedika-core/pom.xml | 9 ---- .../medifirst2000/util/DoubleCounter.java | 26 --------- 4 files changed, 23 insertions(+), 74 deletions(-) delete mode 100644 jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DoubleCounter.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailDao.java index e07e2b06..64816cc0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/LogbookKinerjaDetailDao.java @@ -1,15 +1,14 @@ package com.jasamedika.medifirst2000.dao; -import java.util.Date; -import java.util.List; -import java.util.Map; - +import com.jasamedika.medifirst2000.entities.LogbookKinerjaDetail; 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.LogbookKinerjaDetail; +import java.util.Date; +import java.util.List; +import java.util.Map; @Repository("logbookKinerjaDetailDao") public interface LogbookKinerjaDetailDao extends PagingAndSortingRepository { diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java index 14c6f798..4c65feb5 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaDetailServiceImpl.java @@ -11,7 +11,6 @@ import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; -import com.jasamedika.medifirst2000.util.DoubleCounter; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.jpa.JpaSystemException; @@ -43,15 +42,10 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement @Override public LogbookKinerjaDetailVO add(LogbookKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException { LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(vo.getLogbookKinerja().getNoRec()); - LogbookKinerjaDetail logbookKinerjaDetail = logbookKinerjaDetailConverter.transferVOToModel(vo, new LogbookKinerjaDetail()); - logbookKinerjaDetail.setLogbookKinerja(logbookKinerja); logbookKinerjaDetail.setTanggalKegiatan(new Date()); - - logbookKinerjaDao.save(logbookKinerja); - LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetail); if (CommonUtil.isNotNullOrEmpty(resultModel)) { /* @@ -69,7 +63,6 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement } logbookKinerjaDao.save(models); } - /* * menghitung capaian indikator satuan yang harus dihitung secara * rata-rata @@ -86,10 +79,8 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement logbookKinerjaDao.save(models); } } - LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO(); resultVO = logbookKinerjaDetailConverter.transferModelToVO(resultModel, resultVO); - return resultVO; } @@ -97,34 +88,30 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement public LogbookKinerjaDetailVO update(LogbookKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException { LogbookKinerja logbookKinerja = logbookKinerjaDao.findOne(vo.getLogbookKinerja().getNoRec()); LogbookKinerjaDetail logbookKinerjaDetailLama = logbookKinerjaDetailDao.findOne(vo.getNoRec()); - - /* - * menghitung indikator capaian satuan yang harus dihitung secara - * akumulatif - */ - if (!vo.getStatusEnabled() && !vo.getStatusVerifikasi()) { - DoubleCounter capaianSubstracted = new DoubleCounter(logbookKinerja.getCapaian()); - capaianSubstracted.add(vo.getCapaian()); - logbookKinerja.setCapaian(capaianSubstracted.getResult()); - } else if (vo.getStatusEnabled() && vo.getStatusVerifikasi()) { - DoubleCounter capaianAdded = new DoubleCounter(logbookKinerja.getCapaian()); - capaianAdded.add(vo.getCapaian()); - logbookKinerja.setCapaian(capaianAdded.getResult()); - } - LogbookKinerjaDetail logbookKinerjaDetailBaru = logbookKinerjaDetailConverter.transferVOToModel(vo, logbookKinerjaDetailLama); - logbookKinerjaDetailBaru.setLogbookKinerja(logbookKinerja); - - logbookKinerjaDao.save(logbookKinerja); LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetailBaru); - - /* - * menghitung capaian indikator satuan yang harus dihitung secara - * rata-rata - */ if (CommonUtil.isNotNullOrEmpty(resultModel)) { + /* + * menghitung capaian indikator satuan yang harus dihitung secara + * akumulatif + */ + List> dataSatuanJumlah = logbookKinerjaDetailDao.findSumCapaianByKontrak( + vo.getLogbookKinerja().getNoRec(), Arrays.asList(Master.SatuanIndikator.PERCENTAGE)); + if (CommonUtil.isNotNullOrEmpty(dataSatuanJumlah)) { + List models = new ArrayList<>(); + for (Map map : dataSatuanJumlah) { + LogbookKinerja model = logbookKinerjaDao.findOne(map.get("logbookId").toString()); + model.setCapaian(Double.valueOf(map.get("sumCapaian").toString())); + models.add(model); + } + logbookKinerjaDao.save(models); + } + /* + * menghitung capaian indikator satuan yang harus dihitung secara + * rata-rata + */ List> dataSatuanRatarata = logbookKinerjaDetailDao.findAvgCapaianByKontrak( vo.getLogbookKinerja().getNoRec(), Arrays.asList(Master.SatuanIndikator.PERCENTAGE)); if (CommonUtil.isNotNullOrEmpty(dataSatuanRatarata)) { @@ -137,10 +124,8 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement logbookKinerjaDao.save(models); } } - LogbookKinerjaDetailVO resultVO = new LogbookKinerjaDetailVO(); resultVO = logbookKinerjaDetailConverter.transferModelToVO(resultModel, resultVO); - return resultVO; } diff --git a/jasamedika-core/pom.xml b/jasamedika-core/pom.xml index c95ffbe3..e60cfec5 100644 --- a/jasamedika-core/pom.xml +++ b/jasamedika-core/pom.xml @@ -76,15 +76,6 @@ itextpdf 5.5.9 - - - - org.projectlombok - lombok - ${project.lombok.version} - provided - - Jasa Medika diff --git a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DoubleCounter.java b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DoubleCounter.java deleted file mode 100644 index f37ac193..00000000 --- a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DoubleCounter.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jasamedika.medifirst2000.util; - -import lombok.AllArgsConstructor; - -/** - * @author salmanoe - * @version 1.0.0 - * @since 01/12/2023 - */ -@AllArgsConstructor -public class DoubleCounter { - - private double result; - - public synchronized void add(double x) { - result += x; - } - - public synchronized void substract(double x) { - result -= x; - } - - public synchronized double getResult() { - return result; - } -}