From 00c6773b9b721bbfee2fecc3b644d4678dbb7675 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 30 Nov 2021 18:52:22 +0700 Subject: [PATCH] - pembuatan service simpan indeks kinerja individu dokter - pembuatan service ubah indeks kinerja individu dokter - pembuatan service hapus indeks kinerja individu dokter - pembuatan service tampil data indeks kinerja individu dokter --- .../dao/IndeksKinerjaDokterDao.java | 15 ++ .../service/IndeksKinerjaDokterService.java | 19 +++ .../impl/IndeksKinerjaDokterServiceImpl.java | 159 ++++++++++++++++++ .../entities/IndeksKinerjaDokter.java | 157 +++++++++++++++++ .../vo/IndeksKinerjaDokterVO.java | 130 ++++++++++++++ .../IkiDanRemunerasiController.java | 28 +++ 6 files changed, 508 insertions(+) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndeksKinerjaDokterService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndeksKinerjaDokterServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/IndeksKinerjaDokter.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndeksKinerjaDokterVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java new file mode 100644 index 00000000..53549215 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndeksKinerjaDokterDao.java @@ -0,0 +1,15 @@ +package com.jasamedika.medifirst2000.dao; + +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.IndeksKinerjaDokter; + +/** + * @author ITI-14 + * @since Nov 29, 2021 + */ +@Repository("indeksKinerjaDokterDao") +public interface IndeksKinerjaDokterDao extends PagingAndSortingRepository { + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndeksKinerjaDokterService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndeksKinerjaDokterService.java new file mode 100644 index 00000000..22ad7691 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndeksKinerjaDokterService.java @@ -0,0 +1,19 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.IndeksKinerjaDokter; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.vo.IndeksKinerjaDokterVO; + +/** + * @author ITI-14 + * @since Nov 29, 2021 + */ +public interface IndeksKinerjaDokterService extends BaseVoService { + + public List addAll(List vos) throws JpaSystemException, ServiceVOException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndeksKinerjaDokterServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndeksKinerjaDokterServiceImpl.java new file mode 100644 index 00000000..e1077bb0 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndeksKinerjaDokterServiceImpl.java @@ -0,0 +1,159 @@ +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.IndeksKinerjaDokterDao; +import com.jasamedika.medifirst2000.entities.IndeksKinerjaDokter; +import com.jasamedika.medifirst2000.entities.Pegawai; +import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai; +import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.IndeksKinerjaDokterService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.IndeksKinerjaDokterVO; +import com.jasamedika.medifirst2000.vo.PegawaiVO; +import com.jasamedika.medifirst2000.vo.SubUnitKerjaPegawaiVO; +import com.jasamedika.medifirst2000.vo.UnitKerjaPegawaiVO; + +/** + * @author ITI-14 + * @since Nov 29, 2021 + */ +@Service("indeksKinerjaDokterService") +public class IndeksKinerjaDokterServiceImpl extends BaseVoServiceImpl implements IndeksKinerjaDokterService { + + @Autowired + private BaseConverterImpl indeksKinerjaDokterConverter; + + @Autowired + private BaseConverterImpl unitKerjaConverter; + + @Autowired + private BaseConverterImpl subunitKerjaConverter; + + @Autowired + private BaseConverterImpl pegawaiConverter; + + @Autowired + private IndeksKinerjaDokterDao indeksKinerjaDokterDao; + + @Override + public IndeksKinerjaDokterVO add(IndeksKinerjaDokterVO vo) throws JpaSystemException, ServiceVOException { + UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerja(), new UnitKerjaPegawai()); + SubUnitKerjaPegawai subunitKerja = subunitKerjaConverter.transferVOToModel(vo.getSubunitKerja(), + new SubUnitKerjaPegawai()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + IndeksKinerjaDokter ikiDokter = indeksKinerjaDokterConverter.transferVOToModel(vo, new IndeksKinerjaDokter()); + + ikiDokter.setUnitKerja(unitKerja); + ikiDokter.setSubunitKerja(subunitKerja); + ikiDokter.setPegawai(pegawai); + IndeksKinerjaDokter resultModel = indeksKinerjaDokterDao.save(ikiDokter); + + IndeksKinerjaDokterVO resultVO = new IndeksKinerjaDokterVO(); + resultVO = indeksKinerjaDokterConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public List addAll(List vos) throws JpaSystemException, ServiceVOException { + List result = new ArrayList<>(); + + List ikiAllDokter = new ArrayList<>(); + for (IndeksKinerjaDokterVO vo : vos) { + UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerja(), + new UnitKerjaPegawai()); + SubUnitKerjaPegawai subunitKerja = subunitKerjaConverter.transferVOToModel(vo.getSubunitKerja(), + new SubUnitKerjaPegawai()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + IndeksKinerjaDokter ikiDokter = indeksKinerjaDokterConverter.transferVOToModel(vo, + new IndeksKinerjaDokter()); + + ikiDokter.setUnitKerja(unitKerja); + ikiDokter.setSubunitKerja(subunitKerja); + ikiDokter.setPegawai(pegawai); + + ikiAllDokter.add(ikiDokter); + } + + Iterable resultModels = indeksKinerjaDokterDao.save(ikiAllDokter); + if (CommonUtil.isNotNullOrEmpty(resultModels)) { + for (IndeksKinerjaDokter resultModel : resultModels) { + result.add(resultModel.getNoRec()); + } + } + + return result; + } + + @Override + public IndeksKinerjaDokterVO update(IndeksKinerjaDokterVO vo) throws JpaSystemException, ServiceVOException { + IndeksKinerjaDokter ikiLamaDokter = indeksKinerjaDokterDao.findOne(vo.getNoRec()); + + UnitKerjaPegawai unitKerja = unitKerjaConverter.transferVOToModel(vo.getUnitKerja(), new UnitKerjaPegawai()); + SubUnitKerjaPegawai subunitKerja = subunitKerjaConverter.transferVOToModel(vo.getSubunitKerja(), + new SubUnitKerjaPegawai()); + Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); + IndeksKinerjaDokter ikiBaruDokter = indeksKinerjaDokterConverter.transferVOToModel(vo, ikiLamaDokter); + + ikiBaruDokter.setUnitKerja(unitKerja); + ikiBaruDokter.setSubunitKerja(subunitKerja); + ikiBaruDokter.setPegawai(pegawai); + IndeksKinerjaDokter resultModel = indeksKinerjaDokterDao.save(ikiBaruDokter); + + IndeksKinerjaDokterVO resultVO = new IndeksKinerjaDokterVO(); + resultVO = indeksKinerjaDokterConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(String key) throws JpaSystemException { + indeksKinerjaDokterDao.delete(key); + + return true; + } + + @Override + public IndeksKinerjaDokterVO findById(String key) throws JpaSystemException { + IndeksKinerjaDokterVO result = new IndeksKinerjaDokterVO(); + + IndeksKinerjaDokter ikiDokter = indeksKinerjaDokterDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(ikiDokter)) { + result = indeksKinerjaDokterConverter.transferModelToVO(ikiDokter, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = indeksKinerjaDokterDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (IndeksKinerjaDokter model : models) { + IndeksKinerjaDokterVO vo = new IndeksKinerjaDokterVO(); + vo = indeksKinerjaDokterConverter.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/IndeksKinerjaDokter.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/IndeksKinerjaDokter.java new file mode 100644 index 00000000..631d3e98 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/IndeksKinerjaDokter.java @@ -0,0 +1,157 @@ +package com.jasamedika.medifirst2000.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +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 com.jasamedika.medifirst2000.base.BaseTransaction; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author ITI-14 + * @since Nov 29, 2021 + */ +@Entity +@Table(name = "sdm_indekskinerjadokter_t") +public class IndeksKinerjaDokter extends BaseTransaction { + + @ManyToOne(fetch = FetchType.LAZY) + @NotNull(message = "Unit Kerja tidak boleh kosong") + @JoinColumn(name = "objectunitkerjafk") + @Caption(value = "Unit Kerja") + private UnitKerjaPegawai unitKerja; + + @Column(name = "objectunitkerjafk", insertable = false, updatable = false, nullable = false) + private Integer unitKerjaId; + + @ManyToOne(fetch = FetchType.LAZY) + @NotNull(message = "Subnit Kerja tidak boleh kosong") + @JoinColumn(name = "objectsubunitkerjafk") + @Caption(value = "Subunit Kerja") + private SubUnitKerjaPegawai subunitKerja; + + @Column(name = "objectsubunitkerjafk", insertable = false, updatable = false, nullable = false) + private Integer subunitKerjaId; + + @ManyToOne(fetch = FetchType.LAZY) + @NotNull(message = "Pegawai tidak boleh kosong") + @JoinColumn(name = "objectpegawaifk") + @Caption(value = "Pegawai") + private Pegawai pegawai; + + @Column(name = "objectpegawaifk", insertable = false, updatable = false, nullable = false) + private Integer pegawaiId; + + @Caption(value = "Bulan") + @Column(name = "bulan", nullable = false) + @Temporal(TemporalType.DATE) + private Date bulan; + + @Caption(value = "IKI") + @Column(name = "iki", nullable = true) + private Double iki; + + @Caption(value = "Skor") + @Column(name = "skor", nullable = true) + private Double skor; + + @Caption(value = "Skor Dasar (IKI 1)") + @Column(name = "skordasar", nullable = true) + private Double skorDasar; + + public UnitKerjaPegawai getUnitKerja() { + return unitKerja; + } + + public void setUnitKerja(UnitKerjaPegawai unitKerja) { + this.unitKerja = unitKerja; + } + + public Integer getUnitKerjaId() { + return unitKerjaId; + } + + public void setUnitKerjaId(Integer unitKerjaId) { + this.unitKerjaId = unitKerjaId; + } + + public SubUnitKerjaPegawai getSubunitKerja() { + return subunitKerja; + } + + public void setSubunitKerja(SubUnitKerjaPegawai subunitKerja) { + this.subunitKerja = subunitKerja; + } + + public Integer getSubunitKerjaId() { + return subunitKerjaId; + } + + public void setSubunitKerjaId(Integer subunitKerjaId) { + this.subunitKerjaId = subunitKerjaId; + } + + 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 Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public Double getIki() { + return iki; + } + + public void setIki(Double iki) { + this.iki = iki; + } + + public Double getSkor() { + return skor; + } + + public void setSkor(Double skor) { + this.skor = skor; + } + + public Double getSkorDasar() { + return skorDasar; + } + + public void setSkorDasar(Double skorDasar) { + this.skorDasar = skorDasar; + } + + @Override + public String toString() { + return "IndeksKinerjaDokter [unitKerja=" + unitKerja + ", unitKerjaId=" + unitKerjaId + ", subunitKerja=" + + subunitKerja + ", subunitKerjaId=" + subunitKerjaId + ", pegawai=" + pegawai + ", pegawaiId=" + + pegawaiId + ", skor=" + skor + ", skorDasar=" + skorDasar + ", iki=" + iki + "]"; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndeksKinerjaDokterVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndeksKinerjaDokterVO.java new file mode 100644 index 00000000..d3f41922 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndeksKinerjaDokterVO.java @@ -0,0 +1,130 @@ +package com.jasamedika.medifirst2000.vo; + +import java.util.Date; + +import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author ITI-14 + * @since Nov 29, 2021 + */ +public class IndeksKinerjaDokterVO extends BaseTransactionVO { + + @Caption(value = "Unit Kerja") + private UnitKerjaPegawaiVO unitKerja; + + private Integer unitKerjaId; + + @Caption(value = "Subunit Kerja") + private SubUnitKerjaPegawaiVO subunitKerja; + + private Integer subunitKerjaId; + + @Caption(value = "Pegawai") + private PegawaiVO pegawai; + + private Integer pegawaiId; + + @Caption(value = "Bulan") + private Date bulan; + + @Caption(value = "IKI") + private Double iki; + + @Caption(value = "Skor") + private Double skor; + + @Caption(value = "Skor Dasar (IKI 1)") + private Double skorDasar; + + + + public UnitKerjaPegawaiVO getUnitKerja() { + return unitKerja; + } + + public void setUnitKerja(UnitKerjaPegawaiVO unitKerja) { + this.unitKerja = unitKerja; + } + + public Integer getUnitKerjaId() { + return unitKerjaId; + } + + public void setUnitKerjaId(Integer unitKerjaId) { + this.unitKerjaId = unitKerjaId; + } + + public SubUnitKerjaPegawaiVO getSubunitKerja() { + return subunitKerja; + } + + public void setSubunitKerja(SubUnitKerjaPegawaiVO subunitKerja) { + this.subunitKerja = subunitKerja; + } + + public Integer getSubunitKerjaId() { + return subunitKerjaId; + } + + public void setSubunitKerjaId(Integer subunitKerjaId) { + this.subunitKerjaId = subunitKerjaId; + } + + 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 Date getBulan() { + return bulan; + } + + public void setBulan(Date bulan) { + this.bulan = bulan; + } + + public Double getIki() { + return iki; + } + + public void setIki(Double iki) { + this.iki = iki; + } + + public Double getSkor() { + return skor; + } + + public void setSkor(Double skor) { + this.skor = skor; + } + + public Double getSkorDasar() { + return skorDasar; + } + + public void setSkorDasar(Double skorDasar) { + this.skorDasar = skorDasar; + } + + @Override + public String toString() { + return "IndeksKinerjaDokterVO [unitKerja=" + unitKerja + ", unitKerjaId=" + unitKerjaId + ", subunitKerja=" + + subunitKerja + ", subunitKerjaId=" + subunitKerjaId + ", pegawai=" + pegawai + ", pegawaiId=" + + pegawaiId + ", skor=" + skor + ", skorDasar=" + skorDasar + ", iki=" + iki + "]"; + } + +} 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 4651c4d1..7937f764 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 @@ -30,6 +30,7 @@ import com.jasamedika.medifirst2000.service.AnggaranRemunerasiService; import com.jasamedika.medifirst2000.service.BobotJenisIndikatorService; import com.jasamedika.medifirst2000.service.GradeRemunService; import com.jasamedika.medifirst2000.service.IkiDanRemunerasiService; +import com.jasamedika.medifirst2000.service.IndeksKinerjaDokterService; import com.jasamedika.medifirst2000.service.IndikatorKinerjaJabatanService; import com.jasamedika.medifirst2000.service.IndikatorKinerjaService; import com.jasamedika.medifirst2000.service.LogbookKinerjaDetailService; @@ -52,6 +53,7 @@ import com.jasamedika.medifirst2000.vo.AnggaranRemunerasiVO; import com.jasamedika.medifirst2000.vo.BobotJenisIndikatorVO; import com.jasamedika.medifirst2000.vo.GradeRemunerasiVO; import com.jasamedika.medifirst2000.vo.IkiDanRemunerasiVO; +import com.jasamedika.medifirst2000.vo.IndeksKinerjaDokterVO; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaJabatanVO; import com.jasamedika.medifirst2000.vo.IndikatorKinerjaVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; @@ -138,6 +140,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -2094,4 +2099,27 @@ public class IkiDanRemunerasiController extends LocaleController> saveAllIndeksKinerjaDokter(HttpServletRequest request, + @Valid @RequestBody List vos) { + try { + List result = indeksKinerjaDokterService.addAll(vos); + 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 all indeks kinerja dokter", 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 all indeks kinerja dokter", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }