- pembuatan service perhitungan pir remunerasi dengan anggaran operasional

- pembuatan service simpan perhitungan pir remunerasi dengan anggaran operasional
This commit is contained in:
salmanoe 2021-07-12 08:42:32 +07:00
parent 3d646df006
commit 6e2975c760
8 changed files with 436 additions and 0 deletions

View File

@ -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<RemunerasiOperasional, String> {
@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<Map<String, Object>> findTahunIni();
}

View File

@ -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<RemunerasiOperasional, RemunerasiOperasionalVO, String> {
Map<String, Object> findAnggaranTahunIni() throws JpaSystemException;
}

View File

@ -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<RemunerasiOperasionalVO, RemunerasiOperasional> 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<Map<String, Object>> listLog) {
List<LoggingUser> listLoggingUser = new ArrayList<>();
Date now = new Date();
for (Map<String, Object> 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<RemunerasiOperasionalVO> findAll() throws JpaSystemException {
List<RemunerasiOperasionalVO> result = new ArrayList<RemunerasiOperasionalVO>();
Iterable<RemunerasiOperasional> 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<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
String sort, String dir) {
return null;
}
@Override
public Map<String, Object> findAnggaranTahunIni() throws JpaSystemException {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> data = remunerasiOperasionalDao.findTahunIni();
if (CommonUtil.isNotNullOrEmpty(data)) {
result = data.get(0);
}
return result;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -689,5 +689,6 @@
<mapping class="com.jasamedika.medifirst2000.entities.IndikatorKinerjaDetail"/>
<mapping class="com.jasamedika.medifirst2000.entities.LogbookKinerjaDokter"/>
<mapping class="com.jasamedika.medifirst2000.entities.TabelAcuanIndeksIKI"/>
<mapping class="com.jasamedika.medifirst2000.entities.RemunerasiOperasional"/>
</session-factory>
</hibernate-configuration>

View File

@ -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<IkiDanRemuneras
@Autowired
private AnggaranRemunerasiService anggaranRemunerasiService;
@Autowired
private RemunerasiOperasionalService remunerasiOperasionalService;
@Autowired
private IndikatorKinerjaService indikatorKinerjaService;
@ -315,6 +320,34 @@ public class IkiDanRemunerasiController extends LocaleController<IkiDanRemuneras
}
}
@RequestMapping(value = "/save-remunerasi-operasional", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<RemunerasiOperasionalVO> 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<List<String>> saveAllAnggaranRemunerasi(HttpServletRequest request,
@Valid @RequestBody List<AnggaranRemunerasiVO> listVO,

View File

@ -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<AkunVO> {
@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<Map<String, Object>> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo,
HttpServletRequest request) throws ParseException {
@ -5830,6 +5834,25 @@ public class SdmController extends LocaleController<AkunVO> {
}
}
@RequestMapping(value = "/get-remunerasi-operasional-tahun-ini", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getRemunerasiOperasionalTahunIni(HttpServletRequest request) {
try {
Map<String, Object> 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<List<Map<String, Object>>> getPlafonRemunerasi(HttpServletRequest request) {
try {