From eb475e66a82f66255510eca4c7ebfff2476a3c91 Mon Sep 17 00:00:00 2001 From: salmanoersabhk Date: Tue, 12 Jul 2022 07:56:37 +0700 Subject: [PATCH] Add PenilaianKinerjaService Penambahan fitur verifikasi penilaian kinerja individu --- .../dao/MapPegawaiJabatanToUnitKerjaDao.java | 6 + .../dao/PenilaianKinerjaDao.java | 16 ++ .../dao/PenilaianKinerjaDetailDao.java | 16 ++ .../PenilaianKinerjaDetailService.java | 14 ++ .../service/PenilaianKinerjaService.java | 13 ++ .../PenilaianKinerjaServiceDetailImpl.java | 126 +++++++++++++ .../impl/PenilaianKinerjaServiceImpl.java | 150 +++++++++++++++ .../entities/PenilaianKinerja.java | 158 ++++++++++++++++ .../entities/PenilaianKinerjaDetail.java | 177 ++++++++++++++++++ .../vo/PenilaianKinerjaDetailVO.java | 155 +++++++++++++++ .../medifirst2000/vo/PenilaianKinerjaVO.java | 150 +++++++++++++++ .../src/main/resources/hibernate.cfg.xml | 2 + .../IkiDanRemunerasiController.java | 30 +++ 13 files changed, 1013 insertions(+) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDetailDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaDetailService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceDetailImpl.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerja.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerjaDetail.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaDetailVO.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 971ddcc8..82e1e990 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -2,6 +2,7 @@ package com.jasamedika.medifirst2000.dao; import java.util.List; import java.util.Map; +import java.util.Optional; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -531,4 +532,9 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository> findDokterByRemun(@Param("ksmListId") List ksmListId, @Param("drId") Integer idPegawai); + @Query("select mj.nilaiJabatan " + "from MapPegawaiJabatanToUnitKerja mj " + "where mj.statusEnabled is true " + + "and mj.pegawaiId = :pegawaiId " + "and mj.jabatanId = :jabatanId") + Optional findByPegawaiAndJabatan(@Param("pegawaiId") Integer idPegawai, + @Param("jabatanId") Integer idJabatan); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDao.java new file mode 100644 index 00000000..5e588ed8 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDao.java @@ -0,0 +1,16 @@ +package com.jasamedika.medifirst2000.dao; + +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.PenilaianKinerja; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Repository("penilaianKinerjaDao") +public interface PenilaianKinerjaDao extends PagingAndSortingRepository { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDetailDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDetailDao.java new file mode 100644 index 00000000..22119925 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PenilaianKinerjaDetailDao.java @@ -0,0 +1,16 @@ +package com.jasamedika.medifirst2000.dao; + +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.PenilaianKinerjaDetail; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Repository("penilaianKinerjaDetailDao") +public interface PenilaianKinerjaDetailDao extends PagingAndSortingRepository { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaDetailService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaDetailService.java new file mode 100644 index 00000000..450d1eab --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaDetailService.java @@ -0,0 +1,14 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.entities.PenilaianKinerjaDetail; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaDetailVO; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +public interface PenilaianKinerjaDetailService + extends BaseVoService { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaService.java new file mode 100644 index 00000000..8524fa6c --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PenilaianKinerjaService.java @@ -0,0 +1,13 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.entities.PenilaianKinerja; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaVO; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +public interface PenilaianKinerjaService extends BaseVoService { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceDetailImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceDetailImpl.java new file mode 100644 index 00000000..867e120d --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceDetailImpl.java @@ -0,0 +1,126 @@ +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.PenilaianKinerjaDetailDao; +import com.jasamedika.medifirst2000.entities.IndikatorKinerja; +import com.jasamedika.medifirst2000.entities.PenilaianKinerja; +import com.jasamedika.medifirst2000.entities.PenilaianKinerjaDetail; +import com.jasamedika.medifirst2000.entities.SatuanIndikator; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.PenilaianKinerjaDetailService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaDetailVO; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaVO; +import com.jasamedika.medifirst2000.vo.SatuanIndikatorVO; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Service("penilaianKinerjaDetailService") +public class PenilaianKinerjaServiceDetailImpl extends BaseVoServiceImpl implements PenilaianKinerjaDetailService { + + @Autowired + private BaseConverterImpl penilaianDetailConverter; + + @Autowired + private BaseConverterImpl penilaianConverter; + + @Autowired + private BaseConverterImpl indikatorConverter; + + @Autowired + private BaseConverterImpl satuanConverter; + + @Autowired + private PenilaianKinerjaDetailDao penilaianKinerjaDetailDao; + + @Override + public PenilaianKinerjaDetailVO add(PenilaianKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException { + PenilaianKinerja penilaian = penilaianConverter.transferVOToModel(vo.getPenilaianKinerja(), + new PenilaianKinerja()); + IndikatorKinerja indikator = indikatorConverter.transferVOToModel(vo.getIndikatorKinerja(), + new IndikatorKinerja()); + SatuanIndikator satuan = satuanConverter.transferVOToModel(vo.getSatuan(), new SatuanIndikator()); + PenilaianKinerjaDetail penilaianDetail = penilaianDetailConverter.transferVOToModel(vo, + new PenilaianKinerjaDetail()); + penilaianDetail.setPenilaianKinerja(penilaian); + penilaianDetail.setIndikatorKinerja(indikator); + penilaianDetail.setSatuan(satuan); + penilaianDetail.setStatusEnabled(Boolean.TRUE); + penilaianDetail.setKdProfile((short) 0); + PenilaianKinerjaDetail resultModel = penilaianKinerjaDetailDao.save(penilaianDetail); + PenilaianKinerjaDetailVO resultVO = new PenilaianKinerjaDetailVO(); + resultVO = penilaianDetailConverter.transferModelToVO(resultModel, resultVO); + return resultVO; + } + + @Override + public PenilaianKinerjaDetailVO update(PenilaianKinerjaDetailVO vo) throws JpaSystemException, ServiceVOException { + PenilaianKinerjaDetail penilaianDetailLama = penilaianKinerjaDetailDao.findOne(vo.getNoRec()); + PenilaianKinerja penilaian = penilaianConverter.transferVOToModel(vo.getPenilaianKinerja(), + new PenilaianKinerja()); + IndikatorKinerja indikator = indikatorConverter.transferVOToModel(vo.getIndikatorKinerja(), + new IndikatorKinerja()); + SatuanIndikator satuan = satuanConverter.transferVOToModel(vo.getSatuan(), new SatuanIndikator()); + PenilaianKinerjaDetail penilaianDetailBaru = penilaianDetailConverter.transferVOToModel(vo, + penilaianDetailLama); + penilaianDetailBaru.setPenilaianKinerja(penilaian); + penilaianDetailBaru.setIndikatorKinerja(indikator); + penilaianDetailBaru.setSatuan(satuan); + PenilaianKinerjaDetail resultModel = penilaianKinerjaDetailDao.save(penilaianDetailBaru); + PenilaianKinerjaDetailVO resultVO = new PenilaianKinerjaDetailVO(); + resultVO = penilaianDetailConverter.transferModelToVO(resultModel, resultVO); + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + penilaianKinerjaDetailDao.delete(key); + return true; + } + + @Override + public PenilaianKinerjaDetailVO findById(String key) throws JpaSystemException { + PenilaianKinerjaDetailVO result = new PenilaianKinerjaDetailVO(); + + PenilaianKinerjaDetail penilaianDetail = penilaianKinerjaDetailDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(penilaianDetail)) { + result = penilaianDetailConverter.transferModelToVO(penilaianDetail, result); + } + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = penilaianKinerjaDetailDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (PenilaianKinerjaDetail model : models) { + PenilaianKinerjaDetailVO vo = new PenilaianKinerjaDetailVO(); + vo = penilaianDetailConverter.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/PenilaianKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceImpl.java new file mode 100644 index 00000000..14dad934 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PenilaianKinerjaServiceImpl.java @@ -0,0 +1,150 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +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.MapPegawaiJabatanToUnitKerjaDao; +import com.jasamedika.medifirst2000.dao.PenilaianKinerjaDao; +import com.jasamedika.medifirst2000.dao.PenilaianKinerjaDetailDao; +import com.jasamedika.medifirst2000.entities.IndikatorKinerja; +import com.jasamedika.medifirst2000.entities.Jabatan; +import com.jasamedika.medifirst2000.entities.Pegawai; +import com.jasamedika.medifirst2000.entities.PenilaianKinerja; +import com.jasamedika.medifirst2000.entities.PenilaianKinerjaDetail; +import com.jasamedika.medifirst2000.entities.SatuanIndikator; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.PenilaianKinerjaService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; +import com.jasamedika.medifirst2000.vo.JabatanVO; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaDetailVO; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaVO; +import com.jasamedika.medifirst2000.vo.SatuanIndikatorVO; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Service("penilaianKinerjaService") +public class PenilaianKinerjaServiceImpl extends BaseVoServiceImpl implements PenilaianKinerjaService { + + @Autowired + private BaseConverterImpl penilaianConverter; + + @Autowired + private BaseConverterImpl penilaianDetailConverter; + + @Autowired + private BaseConverterImpl pegawaiConverter; + + @Autowired + private BaseConverterImpl jabatanConverter; + + @Autowired + private BaseConverterImpl indikatorConverter; + + @Autowired + private BaseConverterImpl satuanConverter; + + @Autowired + private PenilaianKinerjaDao penilaianKinerjaDao; + + @Autowired + private PenilaianKinerjaDetailDao penilaianKinerjaDetailDao; + + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mappingJabatanDao; + + @Override + public PenilaianKinerjaVO add(PenilaianKinerjaVO vo) throws JpaSystemException, ServiceVOException { + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan()); + PenilaianKinerja penilaianKinerja = penilaianConverter.transferVOToModel(vo, new PenilaianKinerja()); + penilaianKinerja.setPegawai(pegawai); + penilaianKinerja.setJabatan(jabatan); + Optional nilaiJabatan = mappingJabatanDao.findByPegawaiAndJabatan(vo.getPegawai().getId(), + vo.getJabatan().getId()); + if (CommonUtil.isNotNullOrEmpty(nilaiJabatan) && nilaiJabatan.isPresent()) { + penilaianKinerja.setNilaiJabatan(nilaiJabatan.get()); + } + penilaianKinerja.setStatusEnabled(Boolean.TRUE); + penilaianKinerja.setKdProfile((short) 0); + PenilaianKinerja resultModel = penilaianKinerjaDao.save(penilaianKinerja); + if (CommonUtil.isNotNullOrEmpty(resultModel)) { + for (PenilaianKinerjaDetailVO detailVO : vo.getDetail()) { + IndikatorKinerja indikator = indikatorConverter.transferVOToModel(detailVO.getIndikatorKinerja(), + new IndikatorKinerja()); + SatuanIndikator satuan = satuanConverter.transferVOToModel(detailVO.getSatuan(), new SatuanIndikator()); + PenilaianKinerjaDetail detail = penilaianDetailConverter.transferVOToModel(detailVO, + new PenilaianKinerjaDetail()); + detail.setIndikatorKinerja(indikator); + detail.setSatuan(satuan); + detail.setPenilaianKinerja(resultModel); + penilaianKinerjaDetailDao.save(detail); + } + } + PenilaianKinerjaVO resultVO = new PenilaianKinerjaVO(); + resultVO = penilaianConverter.transferModelToVO(resultModel, resultVO); + return resultVO; + } + + @Override + public PenilaianKinerjaVO update(PenilaianKinerjaVO vo) throws JpaSystemException, ServiceVOException { + PenilaianKinerja penilaianKinerjaLama = penilaianKinerjaDao.findOne(vo.getNoRec()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan()); + PenilaianKinerja penilaianKinerjaBaru = penilaianConverter.transferVOToModel(vo, penilaianKinerjaLama); + penilaianKinerjaBaru.setPegawai(pegawai); + penilaianKinerjaBaru.setJabatan(jabatan); + PenilaianKinerja resultModel = penilaianKinerjaDao.save(penilaianKinerjaBaru); + PenilaianKinerjaVO resultVO = new PenilaianKinerjaVO(); + resultVO = penilaianConverter.transferModelToVO(resultModel, resultVO); + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + penilaianKinerjaDao.delete(key); + return true; + } + + @Override + public PenilaianKinerjaVO findById(String key) throws JpaSystemException { + PenilaianKinerjaVO result = new PenilaianKinerjaVO(); + PenilaianKinerja penilaianKinerja = penilaianKinerjaDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(penilaianKinerja)) { + result = penilaianConverter.transferModelToVO(penilaianKinerja, result); + } + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList<>(); + Iterable models = penilaianKinerjaDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (PenilaianKinerja model : models) { + PenilaianKinerjaVO vo = new PenilaianKinerjaVO(); + vo = penilaianConverter.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-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerja.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerja.java new file mode 100644 index 00000000..993a8fcd --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerja.java @@ -0,0 +1,158 @@ +package com.jasamedika.medifirst2000.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.NotEmpty; + +import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Entity +@Table(name = "sdm_penilaiankinerja_t") +public class PenilaianKinerja extends BaseTransaction { + + private static final long serialVersionUID = 2241575067715329583L; + + @Caption("Bulan") + @NotNull(message = "Bulan wajib diisi") + @Column(name = "bulan", nullable = false) + @Temporal(TemporalType.DATE) + private Date bulan; + + @Caption("Pegawai") + @NotNull(message = "Pegawai wajib diisi") + @ManyToOne + @JoinColumn(name = "pegawaifk") + private Pegawai pegawai; + + @Column(name = "pegawaifk", insertable = false, updatable = false, nullable = false) + private Integer pegawaiId; + + @Caption("Jabatan") + @NotNull(message = "Jabatan wajib diisi") + @ManyToOne + @JoinColumn(name = "jabatanfk") + private Jabatan jabatan; + + @Column(name = "jabatanfk", insertable = false, updatable = false, nullable = false) + private Integer jabatanId; + + @Caption(value = "Nilai Jabatan") + @Column(name = "nilaijabatan") + private Double nilaiJabatan; + + @Caption(value = "IKI") + @NotNull(message = "IKI wajib diisi") + @Column(name = "iki", nullable = false) + private Double iki; + + @Caption(value = "Bobot") + @NotNull(message = "Bobot wajib diisi") + @Column(name = "bobot", nullable = false) + private Double bobot; + + @Caption(value = "Hasil") + @NotNull(message = "Hasil wajib diisi") + @Column(name = "hasil", nullable = false) + private Double hasil; + + @Caption(value = "Kriteria") + @NotEmpty(message = "Kriteria wajib diisi") + @Column(name = "kriteria", nullable = false) + private String kriteria; + + public Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public Pegawai getPegawai() { + return pegawai; + } + + public void setPegawai(Pegawai pegawai) { + this.pegawai = pegawai; + } + + public Integer getPegawaiId() { + return pegawaiId; + } + + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; + } + + public Jabatan getJabatan() { + return jabatan; + } + + public void setJabatan(Jabatan jabatan) { + this.jabatan = jabatan; + } + + public Integer getJabatanId() { + return jabatanId; + } + + public void setJabatanId(Integer jabatanId) { + this.jabatanId = jabatanId; + } + + public Double getNilaiJabatan() { + return nilaiJabatan; + } + + public void setNilaiJabatan(Double nilaiJabatan) { + this.nilaiJabatan = nilaiJabatan; + } + + public Double getIki() { + return iki; + } + + public void setIki(Double iki) { + this.iki = iki; + } + + public Double getBobot() { + return bobot; + } + + public void setBobot(Double bobot) { + this.bobot = bobot; + } + + public Double getHasil() { + return hasil; + } + + public void setHasil(Double hasil) { + this.hasil = hasil; + } + + public String getKriteria() { + return kriteria; + } + + public void setKriteria(String kriteria) { + this.kriteria = kriteria; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerjaDetail.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerjaDetail.java new file mode 100644 index 00000000..b6914937 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PenilaianKinerjaDetail.java @@ -0,0 +1,177 @@ +package com.jasamedika.medifirst2000.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +@Entity +@Table(name = "sdm_penilaiankinerjadetail_t") +public class PenilaianKinerjaDetail extends BaseTransaction { + + private static final long serialVersionUID = 3594531795669754275L; + + @Caption("Penilaian Kinerja") + @NotNull(message = "Penilaian kinerja wajib diisi") + @ManyToOne + @JoinColumn(name = "penilaiankinerjafk") + private PenilaianKinerja penilaianKinerja; + + @Column(name = "penilaiankinerjafk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = false) + private String penilaianKinerjaId; + + @Caption("Jenis Indikator") + @NotNull(message = "Jenis indikator wajib diisi") + @Column(name = "jenisindikatorid", nullable = false) + private Short jenisIndikatorId; + + @Caption("Indikator Kinerja") + @NotNull(message = "Indikator kinerja wajib diisi") + @ManyToOne + @JoinColumn(name = "indikatorkinerjafk") + private IndikatorKinerja indikatorKinerja; + + @Column(name = "indikatorkinerjafk", insertable = false, updatable = false, nullable = false) + private Integer indikatorKinerjaId; + + @Caption("Bobot") + @NotNull(message = "Bobot wajib diisi") + @Column(name = "bobot", nullable = false) + private Integer bobot; + + @Caption("Target") + @NotNull(message = "Target wajib diisi") + @Column(name = "target", nullable = false) + private Double target; + + @Caption("Realisasi") + @NotNull(message = "Realisasi wajib diisi") + @Column(name = "realisasi", nullable = false) + private Double realisasi; + + @Caption("Satuan") + @NotNull(message = "Satuan wajib diisi") + @ManyToOne + @JoinColumn(name = "satuanfk") + private SatuanIndikator satuan; + + @Column(name = "satuanfk", insertable = false, updatable = false, nullable = false) + private Integer satuanId; + + @Caption("Nilai") + @NotNull(message = "Nilai wajib diisi") + @Column(name = "nilai", nullable = false) + private Double nilai; + + @Caption("Hasil") + @NotNull(message = "Hasil wajib diisi") + @Column(name = "hasil", nullable = false) + private Double hasil; + + public PenilaianKinerja getPenilaianKinerja() { + return penilaianKinerja; + } + + public void setPenilaianKinerja(PenilaianKinerja penilaianKinerja) { + this.penilaianKinerja = penilaianKinerja; + } + + public String getPenilaianKinerjaId() { + return penilaianKinerjaId; + } + + public void setPenilaianKinerjaId(String penilaianKinerjaId) { + this.penilaianKinerjaId = penilaianKinerjaId; + } + + public Short getJenisIndikatorId() { + return jenisIndikatorId; + } + + public void setJenisIndikatorId(Short jenisIndikatorId) { + this.jenisIndikatorId = jenisIndikatorId; + } + + public IndikatorKinerja getIndikatorKinerja() { + return indikatorKinerja; + } + + public void setIndikatorKinerja(IndikatorKinerja indikatorKinerja) { + this.indikatorKinerja = indikatorKinerja; + } + + public Integer getIndikatorKinerjaId() { + return indikatorKinerjaId; + } + + public void setIndikatorKinerjaId(Integer indikatorKinerjaId) { + this.indikatorKinerjaId = indikatorKinerjaId; + } + + public Integer getBobot() { + return bobot; + } + + public void setBobot(Integer bobot) { + this.bobot = bobot; + } + + public Double getTarget() { + return target; + } + + public void setTarget(Double target) { + this.target = target; + } + + public Double getRealisasi() { + return realisasi; + } + + public void setRealisasi(Double realisasi) { + this.realisasi = realisasi; + } + + public SatuanIndikator getSatuan() { + return satuan; + } + + public void setSatuan(SatuanIndikator satuan) { + this.satuan = satuan; + } + + public Integer getSatuanId() { + return satuanId; + } + + public void setSatuanId(Integer satuanId) { + this.satuanId = satuanId; + } + + public Double getNilai() { + return nilai; + } + + public void setNilai(Double nilai) { + this.nilai = nilai; + } + + public Double getHasil() { + return hasil; + } + + public void setHasil(Double hasil) { + this.hasil = hasil; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaDetailVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaDetailVO.java new file mode 100644 index 00000000..ff623381 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaDetailVO.java @@ -0,0 +1,155 @@ +package com.jasamedika.medifirst2000.vo; + +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +public class PenilaianKinerjaDetailVO extends BaseTransactionVO { + + private static final long serialVersionUID = 719673316750341385L; + + @Caption("Penilaian Kinerja") + @NotNull(message = "Penilaian kinerja wajib diisi") + private PenilaianKinerjaVO penilaianKinerja; + + private String penilaianKinerjaId; + + @Caption("Jenis Indikator") + @NotNull(message = "Jenis indikator wajib diisi") + private Short jenisIndikatorId; + + @Caption("Indikator Kinerja") + @NotNull(message = "Indikator kinerja wajib diisi") + private IndikatorKinerjaVO indikatorKinerja; + + private Integer indikatorKinerjaId; + + @Caption("Bobot") + @NotNull(message = "Bobot wajib diisi") + private Integer bobot; + + @Caption("Target") + @NotNull(message = "Target wajib diisi") + private Double target; + + @Caption("Realisasi") + @NotNull(message = "Realisasi wajib diisi") + private Double realisasi; + + @Caption("Satuan") + @NotNull(message = "Satuan wajib diisi") + private SatuanIndikatorVO satuan; + + private Integer satuanId; + + @Caption("Nilai") + @NotNull(message = "Nilai wajib diisi") + private Double nilai; + + @Caption("Hasil") + @NotNull(message = "Hasil wajib diisi") + private Double hasil; + + public PenilaianKinerjaVO getPenilaianKinerja() { + return penilaianKinerja; + } + + public void setPenilaianKinerja(PenilaianKinerjaVO penilaianKinerja) { + this.penilaianKinerja = penilaianKinerja; + } + + public String getPenilaianKinerjaId() { + return penilaianKinerjaId; + } + + public void setPenilaianKinerjaId(String penilaianKinerjaId) { + this.penilaianKinerjaId = penilaianKinerjaId; + } + + public Short getJenisIndikatorId() { + return jenisIndikatorId; + } + + public void setJenisIndikatorId(Short jenisIndikatorId) { + this.jenisIndikatorId = jenisIndikatorId; + } + + public IndikatorKinerjaVO getIndikatorKinerja() { + return indikatorKinerja; + } + + public void setIndikatorKinerja(IndikatorKinerjaVO indikatorKinerja) { + this.indikatorKinerja = indikatorKinerja; + } + + public Integer getIndikatorKinerjaId() { + return indikatorKinerjaId; + } + + public void setIndikatorKinerjaId(Integer indikatorKinerjaId) { + this.indikatorKinerjaId = indikatorKinerjaId; + } + + public Integer getBobot() { + return bobot; + } + + public void setBobot(Integer bobot) { + this.bobot = bobot; + } + + public Double getTarget() { + return target; + } + + public void setTarget(Double target) { + this.target = target; + } + + public Double getRealisasi() { + return realisasi; + } + + public void setRealisasi(Double realisasi) { + this.realisasi = realisasi; + } + + public SatuanIndikatorVO getSatuan() { + return satuan; + } + + public void setSatuan(SatuanIndikatorVO satuan) { + this.satuan = satuan; + } + + public Integer getSatuanId() { + return satuanId; + } + + public void setSatuanId(Integer satuanId) { + this.satuanId = satuanId; + } + + public Double getNilai() { + return nilai; + } + + public void setNilai(Double nilai) { + this.nilai = nilai; + } + + public Double getHasil() { + return hasil; + } + + public void setHasil(Double hasil) { + this.hasil = hasil; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaVO.java new file mode 100644 index 00000000..948548a0 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PenilaianKinerjaVO.java @@ -0,0 +1,150 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.NotEmpty; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jul 6, 2022 + * + */ +public class PenilaianKinerjaVO extends BaseTransactionVO { + + private static final long serialVersionUID = -2885864808873627462L; + + @Caption("Bulan") + @NotNull(message = "Bulan wajib diisi") + private Date bulan; + + @Caption("Pegawai") + @NotNull(message = "Pegawai wajib diisi") + private PegawaiVO pegawai; + + private Integer pegawaiId; + + @Caption("Jabatan") + @NotNull(message = "Jabatan wajib diisi") + private JabatanVO jabatan; + + private Integer jabatanId; + + @Caption(value = "Nilai Jabatan") + private Double nilaiJabatan; + + @Caption(value = "IKI") + @NotNull(message = "IKI wajib diisi") + private Double iki; + + @Caption(value = "Bobot") + @NotNull(message = "Bobot wajib diisi") + private Double bobot; + + @Caption(value = "Hasil") + @NotNull(message = "Hasil wajib diisi") + private Double hasil; + + @Caption(value = "Kriteria") + @NotEmpty(message = "Kriteria wajib diisi") + private String kriteria; + + @JsonBackReference + private Set detail = new HashSet(); + + public Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public PegawaiVO getPegawai() { + return pegawai; + } + + public void setPegawai(PegawaiVO pegawai) { + this.pegawai = pegawai; + } + + public Integer getPegawaiId() { + return pegawaiId; + } + + public void setPegawaiId(Integer pegawaiId) { + this.pegawaiId = pegawaiId; + } + + public JabatanVO getJabatan() { + return jabatan; + } + + public void setJabatan(JabatanVO jabatan) { + this.jabatan = jabatan; + } + + public Integer getJabatanId() { + return jabatanId; + } + + public void setJabatanId(Integer jabatanId) { + this.jabatanId = jabatanId; + } + + public Double getNilaiJabatan() { + return nilaiJabatan; + } + + public void setNilaiJabatan(Double nilaiJabatan) { + this.nilaiJabatan = nilaiJabatan; + } + + public Double getIki() { + return iki; + } + + public void setIki(Double iki) { + this.iki = iki; + } + + public Double getBobot() { + return bobot; + } + + public void setBobot(Double bobot) { + this.bobot = bobot; + } + + public Double getHasil() { + return hasil; + } + + public void setHasil(Double hasil) { + this.hasil = hasil; + } + + public String getKriteria() { + return kriteria; + } + + public void setKriteria(String kriteria) { + this.kriteria = kriteria; + } + + public Set getDetail() { + return detail; + } + + public void setDetail(Set detail) { + this.detail = detail; + } + +} diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index 1ab766f2..f59a3944 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -706,5 +706,7 @@ + + 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 cd006d82..66c972b5 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 @@ -42,6 +42,7 @@ import com.jasamedika.medifirst2000.service.PelayananFarmakologiService; import com.jasamedika.medifirst2000.service.PelayananNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; +import com.jasamedika.medifirst2000.service.PenilaianKinerjaService; import com.jasamedika.medifirst2000.service.ProdukFarmakologiService; import com.jasamedika.medifirst2000.service.ProdukNakesService; import com.jasamedika.medifirst2000.service.ProdukPerawatService; @@ -69,6 +70,7 @@ import com.jasamedika.medifirst2000.vo.PelayananFarmakologiVO; import com.jasamedika.medifirst2000.vo.PelayananNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; +import com.jasamedika.medifirst2000.vo.PenilaianKinerjaVO; import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; import com.jasamedika.medifirst2000.vo.ProdukNakesVO; import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; @@ -169,6 +171,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -2676,4 +2681,29 @@ public class IkiDanRemunerasiController extends LocaleController verifyPenilaianKinerjaIndividu(HttpServletRequest request, + @Valid @RequestBody PenilaianKinerjaVO vo) { + try { + PenilaianKinerjaVO result = penilaianKinerjaService.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 { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_ERROR, + getMessage(MessageResource.LABEL_ERROR, request)); + return RestUtil.getJsonHttptatus(HttpStatus.BAD_REQUEST, mapHeaderMessage); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when verify penilaian kinerja individu", 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 verify penilaian kinerja individu", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }