From 6e2975c7606d35be946e01d1ade58961ecdd4357 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 12 Jul 2021 08:42:32 +0700 Subject: [PATCH] - pembuatan service perhitungan pir remunerasi dengan anggaran operasional - pembuatan service simpan perhitungan pir remunerasi dengan anggaran operasional --- .../dao/RemunerasiOperasionalDao.java | 22 +++ .../service/RemunerasiOperasionalService.java | 15 ++ .../RemunerasiOperasionalServiceImpl.java | 164 ++++++++++++++++++ .../entities/RemunerasiOperasional.java | 92 ++++++++++ .../vo/RemunerasiOperasionalVO.java | 86 +++++++++ .../src/main/resources/hibernate.cfg.xml | 1 + .../IkiDanRemunerasiController.java | 33 ++++ .../controller/SdmController.java | 23 +++ 8 files changed, 436 insertions(+) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RemunerasiOperasionalDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RemunerasiOperasionalService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiOperasionalServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/RemunerasiOperasional.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/RemunerasiOperasionalVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RemunerasiOperasionalDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RemunerasiOperasionalDao.java new file mode 100644 index 00000000..6cac2fab --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/RemunerasiOperasionalDao.java @@ -0,0 +1,22 @@ +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.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.RemunerasiOperasional; + +@Repository("remunerasiOperasionalDao") +public interface RemunerasiOperasionalDao extends PagingAndSortingRepository { + + @Query("select distinct new Map(ro.anggaranRemunTahun as anggaranTahun,ro.anggaranRemunBulan as anggaranBulan," + + "ro.poinIndeksRupiah as pir,ro.totalNilaiJabatan as totNilaiJabatan," + + "ro.tanggalPembaharuanData as tglPembaharuanData) " + "from RemunerasiOperasional ro " + + "where ro.statusEnabled is true " + "and to_char(ro.tahun,'yyyy') = to_char(now(),'yyyy') " + + "order by ro.tanggalPembaharuanData desc") + List> findTahunIni(); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RemunerasiOperasionalService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RemunerasiOperasionalService.java new file mode 100644 index 00000000..742f29fb --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/RemunerasiOperasionalService.java @@ -0,0 +1,15 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.RemunerasiOperasional; +import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; + +public interface RemunerasiOperasionalService + extends BaseVoService { + + Map findAnggaranTahunIni() throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiOperasionalServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiOperasionalServiceImpl.java new file mode 100644 index 00000000..33b4800f --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiOperasionalServiceImpl.java @@ -0,0 +1,164 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +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.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.LoggingUserDao; +import com.jasamedika.medifirst2000.dao.RemunerasiOperasionalDao; +import com.jasamedika.medifirst2000.entities.LoggingUser; +import com.jasamedika.medifirst2000.entities.LoginUser; +import com.jasamedika.medifirst2000.entities.RemunerasiOperasional; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; + +@Service("remunerasiOperasionalService") +public class RemunerasiOperasionalServiceImpl extends BaseVoServiceImpl implements RemunerasiOperasionalService { + + @Autowired + private BaseConverterImpl remunerasiOperasionalConverter; + + @Autowired + private RemunerasiOperasionalDao remunerasiOperasionalDao; + + @Autowired + private LoggingUserDao loggingUserDao; + + public void addLoggingUser(Integer idLoginUser, String idReferensi, String keterangan) { + LoggingUser loggingUser = new LoggingUser(); + LoginUser loginUser = new LoginUser(); + + loggingUser.setKdProfile((short) 0); + loggingUser.setStatusEnabled(true); + loggingUser.setTanggal(new Date()); + loginUser.setId(idLoginUser); + loggingUser.setLoginUser(loginUser); + loggingUser.setJenisLog("Anggaran Remunerasi Fee for Service"); + loggingUser.setReferensiId(idReferensi); + loggingUser.setReferensi("sdm_remunerasioperasional_t"); + loggingUser.setKeterangan(keterangan); + + loggingUserDao.save(loggingUser); + } + + public void addAllLoggingUser(List> listLog) { + List listLoggingUser = new ArrayList<>(); + Date now = new Date(); + + for (Map mapLog : listLog) { + LoggingUser loggingUser = new LoggingUser(); + LoginUser loginUser = new LoginUser(); + + loggingUser.setKdProfile((short) 0); + loggingUser.setStatusEnabled(true); + loggingUser.setTanggal(now); + loginUser.setId(Integer.valueOf(mapLog.get("idLoginUser").toString())); + loggingUser.setLoginUser(loginUser); + loggingUser.setJenisLog("Anggaran Remunerasi Fee for Service"); + loggingUser.setReferensiId(mapLog.get("idReferensi").toString()); + loggingUser.setReferensi("sdm_remunerasioperasional_t"); + loggingUser.setKeterangan(mapLog.get("keterangan").toString()); + listLoggingUser.add(loggingUser); + } + + loggingUserDao.save(listLoggingUser); + } + + @Override + public RemunerasiOperasionalVO add(RemunerasiOperasionalVO vo) throws JpaSystemException, ServiceVOException { + RemunerasiOperasional remunerasiOperasional = remunerasiOperasionalConverter.transferVOToModel(vo, + new RemunerasiOperasional()); + + remunerasiOperasional.setTanggalPembaharuanData(new Date()); + RemunerasiOperasional resultModel = remunerasiOperasionalDao.save(remunerasiOperasional); + + addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Buat data"); + + RemunerasiOperasionalVO resultVO = new RemunerasiOperasionalVO(); + resultVO = remunerasiOperasionalConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public RemunerasiOperasionalVO update(RemunerasiOperasionalVO vo) throws JpaSystemException, ServiceVOException { + RemunerasiOperasional remunerasiOperasionalLama = remunerasiOperasionalDao.findOne(vo.getNoRec()); + + RemunerasiOperasional remunerasiOperasionalBaru = remunerasiOperasionalConverter.transferVOToModel(vo, + remunerasiOperasionalLama); + + remunerasiOperasionalBaru.setTanggalPembaharuanData(new Date()); + RemunerasiOperasional resultModel = remunerasiOperasionalDao.save(remunerasiOperasionalBaru); + + addLoggingUser(vo.getLoginUserId(), resultModel.getNoRec(), "Edit data"); + + RemunerasiOperasionalVO resultVO = new RemunerasiOperasionalVO(); + resultVO = remunerasiOperasionalConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + remunerasiOperasionalDao.delete(key); + + return true; + } + + @Override + public RemunerasiOperasionalVO findById(String key) throws JpaSystemException { + RemunerasiOperasionalVO result = new RemunerasiOperasionalVO(); + + RemunerasiOperasional remunerasiOperasional = remunerasiOperasionalDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(remunerasiOperasional)) { + result = remunerasiOperasionalConverter.transferModelToVO(remunerasiOperasional, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = remunerasiOperasionalDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (RemunerasiOperasional model : models) { + RemunerasiOperasionalVO vo = new RemunerasiOperasionalVO(); + vo = remunerasiOperasionalConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public Map findAnggaranTahunIni() throws JpaSystemException { + Map result = new HashMap<>(); + + List> data = remunerasiOperasionalDao.findTahunIni(); + if (CommonUtil.isNotNullOrEmpty(data)) { + result = data.get(0); + } + + return result; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/RemunerasiOperasional.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/RemunerasiOperasional.java new file mode 100644 index 00000000..eaf6957c --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/RemunerasiOperasional.java @@ -0,0 +1,92 @@ +package com.jasamedika.medifirst2000.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +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_remunerasioperasional_t") +public class RemunerasiOperasional extends BaseTransaction { + + @Caption(value = "Tahun") + @Column(name = "tahun", nullable = false) + @Temporal(TemporalType.DATE) + private Date tahun; + + @Column(name = "totalnilaijabatan", nullable = false) + @Caption(value = "Total Nilai Jabatan") + private Long totalNilaiJabatan; + + @Column(name = "anggaranremuntahun", nullable = false) + @Caption(value = "Anggaran Remunerasi Tahunan") + private Double anggaranRemunTahun; + + @Column(name = "anggaranremunbulan", nullable = false) + @Caption(value = "Anggaran Remun Bulanan") + private Double anggaranRemunBulan; + + @Column(name = "poinindeksrupiah", nullable = false) + @Caption(value = "Poin Indeks Rupiah") + private Double poinIndeksRupiah; + + @Caption(value = "Tanggal Pembaharuan Data") + @Column(name = "tanggalpembaharuandata", nullable = false) + @Temporal(TemporalType.TIMESTAMP) + private Date tanggalPembaharuanData; + + public Date getTahun() { + return tahun; + } + + public void setTahun(Date tahun) { + this.tahun = tahun; + } + + public Long getTotalNilaiJabatan() { + return totalNilaiJabatan; + } + + public void setTotalNilaiJabatan(Long totalNilaiJabatan) { + this.totalNilaiJabatan = totalNilaiJabatan; + } + + public Double getAnggaranRemunTahun() { + return anggaranRemunTahun; + } + + public void setAnggaranRemunTahun(Double anggaranRemunTahun) { + this.anggaranRemunTahun = anggaranRemunTahun; + } + + public Double getAnggaranRemunBulan() { + return anggaranRemunBulan; + } + + public void setAnggaranRemunBulan(Double anggaranRemunBulan) { + this.anggaranRemunBulan = anggaranRemunBulan; + } + + public Double getPoinIndeksRupiah() { + return poinIndeksRupiah; + } + + public void setPoinIndeksRupiah(Double poinIndeksRupiah) { + this.poinIndeksRupiah = poinIndeksRupiah; + } + + public Date getTanggalPembaharuanData() { + return tanggalPembaharuanData; + } + + public void setTanggalPembaharuanData(Date tanggalPembaharuanData) { + this.tanggalPembaharuanData = tanggalPembaharuanData; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/RemunerasiOperasionalVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/RemunerasiOperasionalVO.java new file mode 100644 index 00000000..0ec1f886 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/RemunerasiOperasionalVO.java @@ -0,0 +1,86 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class RemunerasiOperasionalVO extends BaseTransactionVO { + + @Caption(value = "Tahun") + private Date tahun; + + @Caption(value = "Total Nilai Jabatan") + private Long totalNilaiJabatan; + + @Caption(value = "Anggaran Remunerasi Tahunan") + private Double anggaranRemunTahun; + + @Caption(value = "Anggaran Remunerasi Bulanan") + private Double anggaranRemunBulan; + + @Caption(value = "Poin Indeks Rupiah") + private Double poinIndeksRupiah; + + @Caption(value = "Tanggal Pembaharuan Data") + private Date tanggalPembaharuanData; + + private Integer loginUserId; + + public Date getTahun() { + return tahun; + } + + public void setTahun(Date tahun) { + this.tahun = tahun; + } + + public Long getTotalNilaiJabatan() { + return totalNilaiJabatan; + } + + public void setTotalNilaiJabatan(Long totalNilaiJabatan) { + this.totalNilaiJabatan = totalNilaiJabatan; + } + + public Double getAnggaranRemunTahun() { + return anggaranRemunTahun; + } + + public void setAnggaranRemunTahun(Double anggaranRemunTahun) { + this.anggaranRemunTahun = anggaranRemunTahun; + } + + public Double getAnggaranRemunBulan() { + return anggaranRemunBulan; + } + + public void setAnggaranRemunBulan(Double anggaranRemunBulan) { + this.anggaranRemunBulan = anggaranRemunBulan; + } + + public Double getPoinIndeksRupiah() { + return poinIndeksRupiah; + } + + public void setPoinIndeksRupiah(Double poinIndeksRupiah) { + this.poinIndeksRupiah = poinIndeksRupiah; + } + + public Date getTanggalPembaharuanData() { + return tanggalPembaharuanData; + } + + public void setTanggalPembaharuanData(Date tanggalPembaharuanData) { + this.tanggalPembaharuanData = tanggalPembaharuanData; + } + + public Integer getLoginUserId() { + return loginUserId; + } + + public void setLoginUserId(Integer loginUserId) { + this.loginUserId = loginUserId; + } + +} diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index e6b1f1e8..b4e00a7f 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -689,5 +689,6 @@ + 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 53db7022..6140016a 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 @@ -34,6 +34,7 @@ import com.jasamedika.medifirst2000.service.IndikatorKinerjaJabatanService; import com.jasamedika.medifirst2000.service.IndikatorKinerjaService; import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; +import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.rest.RestUtil; @@ -45,6 +46,7 @@ import com.jasamedika.medifirst2000.vo.IndikatorKinerjaJabatanVO; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; +import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; import com.jasamedika.medifirst2000.vo.StrukHistoriVO; @@ -65,6 +67,9 @@ public class IkiDanRemunerasiController extends LocaleController saveRemunerasiOperasional(HttpServletRequest request, + @Valid @RequestBody RemunerasiOperasionalVO vo) { + try { + RemunerasiOperasionalVO result = new RemunerasiOperasionalVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = remunerasiOperasionalService.update(vo); + } else { + result = remunerasiOperasionalService.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 master remunerasi operasional", 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 master remunerasi operasional", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/save-all-anggaran-remunerasi", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> saveAllAnggaranRemunerasi(HttpServletRequest request, @Valid @RequestBody List listVO, 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 590e1e8b..03171e18 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 @@ -109,6 +109,7 @@ import com.jasamedika.medifirst2000.service.RangeKmkService; import com.jasamedika.medifirst2000.service.RegistrasiKeanggotaanService; import com.jasamedika.medifirst2000.service.RekamDataPegawaiService; import com.jasamedika.medifirst2000.service.RekamUraianRincianKegiatanService; +import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; import com.jasamedika.medifirst2000.service.RemunerasiService; import com.jasamedika.medifirst2000.service.ReservasiService; import com.jasamedika.medifirst2000.service.RiwayatJabatanService; @@ -411,6 +412,9 @@ public class SdmController extends LocaleController { @Autowired private AnggaranRemunerasiService anggaranRemunerasiService; + @Autowired + private RemunerasiOperasionalService remunerasiOperasionalService; + @RequestMapping(value = "/save-custom-uraian-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo, HttpServletRequest request) throws ParseException { @@ -5830,6 +5834,25 @@ public class SdmController extends LocaleController { } } + @RequestMapping(value = "/get-remunerasi-operasional-tahun-ini", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity> getRemunerasiOperasionalTahunIni(HttpServletRequest request) { + try { + Map result = remunerasiOperasionalService.findAnggaranTahunIni(); + if (null != result) + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException e) { + LOGGER.error("Got exception {} when get remunerasi operasional tahun ini", e.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when get remunerasi operasional tahun ini", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/get-plafon-remunerasi", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity>> getPlafonRemunerasi(HttpServletRequest request) { try {