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 c43a5e88..14c6f798 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 @@ -1,23 +1,5 @@ package com.jasamedika.medifirst2000.service.impl; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -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.LogbookKinerjaDao; @@ -29,7 +11,19 @@ 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; +import org.springframework.stereotype.Service; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.*; @Service("LogbookKinerjaDetailService") public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implements LogbookKinerjaDetailService { @@ -60,7 +54,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetail); if (CommonUtil.isNotNullOrEmpty(resultModel)) { - /** + /* * menghitung capaian indikator satuan yang harus dihitung secara * akumulatif */ @@ -76,7 +70,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement logbookKinerjaDao.save(models); } - /** + /* * menghitung capaian indikator satuan yang harus dihitung secara * rata-rata */ @@ -104,14 +98,18 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement 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()) { - logbookKinerja.setCapaian(logbookKinerja.getCapaian() - vo.getCapaian()); + DoubleCounter capaianSubstracted = new DoubleCounter(logbookKinerja.getCapaian()); + capaianSubstracted.add(vo.getCapaian()); + logbookKinerja.setCapaian(capaianSubstracted.getResult()); } else if (vo.getStatusEnabled() && vo.getStatusVerifikasi()) { - logbookKinerja.setCapaian(logbookKinerja.getCapaian() + vo.getCapaian()); + DoubleCounter capaianAdded = new DoubleCounter(logbookKinerja.getCapaian()); + capaianAdded.add(vo.getCapaian()); + logbookKinerja.setCapaian(capaianAdded.getResult()); } LogbookKinerjaDetail logbookKinerjaDetailBaru = logbookKinerjaDetailConverter.transferVOToModel(vo, @@ -122,7 +120,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement logbookKinerjaDao.save(logbookKinerja); LogbookKinerjaDetail resultModel = logbookKinerjaDetailDao.save(logbookKinerjaDetailBaru); - /** + /* * menghitung capaian indikator satuan yang harus dihitung secara * rata-rata */ @@ -167,7 +165,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement @Override public List findAll() throws JpaSystemException { - List result = new ArrayList(); + List result = new ArrayList<>(); Iterable models = logbookKinerjaDetailDao.findAll(); if (CommonUtil.isNotNullOrEmpty(models)) { @@ -202,7 +200,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement List> result = logbookKinerjaDetailDao.findWorkingRecord(idPegawai, idJabatan, start, end, statusVerif); for (Map map : result) { - Map logbook = new HashMap(); + Map logbook = new HashMap<>(); logbook.put("noRec", map.get("logbookNoRec")); map.put("logbookKinerja", logbook); map.put("tglBatasAkhirVerif", Date.from(tglLimitVerif.atZone(ZoneId.systemDefault()).toInstant())); @@ -221,7 +219,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement List> result = logbookKinerjaDetailDao.findWorkingRecord(idPegawai, idJabatan, idIndikator, start, end); for (Map map : result) { - Map logbook = new HashMap(); + Map logbook = new HashMap<>(); logbook.put("noRec", map.get("logbookNoRec")); map.put("logbookKinerja", logbook); map.remove("logbookNoRec"); @@ -250,15 +248,14 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement DateFormat mf = new SimpleDateFormat("yyyy-MM"); - List listKategoriPegawaiWorkingRecord = new ArrayList<>(); - listKategoriPegawaiWorkingRecord.addAll(Arrays.asList(Master.KategoryPegawai.REMUN)); + List listKategoriPegawaiWorkingRecord = new ArrayList<>(Arrays.asList(Master.KategoryPegawai.REMUN)); listKategoriPegawaiWorkingRecord.add(Master.KategoryPegawai.BLU_PKWT); List> tugasVerifikasi = logbookKinerjaDetailDao.findVerifWorkingRecord(idPegawai, mf.format(new Date(bulan)), listKategoriPegawaiWorkingRecord, Arrays.asList(Master.UnitKerja.KSM)); if (CommonUtil.isNotNullOrEmpty(tugasVerifikasi) && tugasVerifikasi.size() == 2) { for (Map tv : tugasVerifikasi) { - if (Boolean.valueOf(tv.get("statusVerifikasi").toString())) { + if (Boolean.parseBoolean(tv.get("statusVerifikasi").toString())) { rsMap1.put("sudahDiverifikasi", tv.get("jumlah")); } else { rsMap1.put("belumDiverifikasi", tv.get("jumlah")); @@ -266,7 +263,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement } } else if (CommonUtil.isNotNullOrEmpty(tugasVerifikasi) && tugasVerifikasi.size() == 1) { for (Map tv : tugasVerifikasi) { - if (Boolean.valueOf(tv.get("statusVerifikasi").toString())) { + if (Boolean.parseBoolean(tv.get("statusVerifikasi").toString())) { rsMap1.put("sudahDiverifikasi", tv.get("jumlah")); rsMap1.put("belumDiverifikasi", 0); } else { @@ -284,7 +281,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement mf.format(new Date(bulan)), listKategoriPegawaiWorkingRecord); if (CommonUtil.isNotNullOrEmpty(statusVerifikasi) && statusVerifikasi.size() == 2) { for (Map sv : statusVerifikasi) { - if (Boolean.valueOf(sv.get("statusVerifikasi").toString())) { + if (Boolean.parseBoolean(sv.get("statusVerifikasi").toString())) { rsMap2.put("sudahDiverifikasi", sv.get("jumlah")); } else { rsMap2.put("belumDiverifikasi", sv.get("jumlah")); @@ -292,7 +289,7 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement } } else if (CommonUtil.isNotNullOrEmpty(statusVerifikasi) && statusVerifikasi.size() == 1) { for (Map sv : statusVerifikasi) { - if (Boolean.valueOf(sv.get("statusVerifikasi").toString())) { + if (Boolean.parseBoolean(sv.get("statusVerifikasi").toString())) { rsMap2.put("sudahDiverifikasi", sv.get("jumlah")); rsMap2.put("belumDiverifikasi", 0); } else { diff --git a/jasamedika-core/pom.xml b/jasamedika-core/pom.xml index 93d6afb0..c95ffbe3 100644 --- a/jasamedika-core/pom.xml +++ b/jasamedika-core/pom.xml @@ -62,7 +62,7 @@ specification-arg-resolver 0.9.0 - + com.itextpdf.tool @@ -77,6 +77,13 @@ 5.5.9 + + + org.projectlombok + lombok + ${project.lombok.version} + provided + 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 new file mode 100644 index 00000000..f37ac193 --- /dev/null +++ b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DoubleCounter.java @@ -0,0 +1,26 @@ +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; + } +}