From 16c14d182da877da40b083260346c67cbafc18f0 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Fri, 19 Mar 2021 14:27:51 +0700 Subject: [PATCH] perbaikan simpan dan hapus mapping indikator langsung banyak jabatan --- .../dao/IndikatorKinerjaJabatanDao.java | 22 +++ .../IndikatorKinerjaJabatanService.java | 7 +- .../IndikatorKinerjaJabatanServiceImpl.java | 151 ++++++++++++++++-- .../vo/IndikatorKinerjaJabatanVO.java | 22 --- .../IkiDanRemunerasiController.java | 24 ++- 5 files changed, 190 insertions(+), 36 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaJabatanDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaJabatanDao.java index ccb7cb56..58e21750 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaJabatanDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/IndikatorKinerjaJabatanDao.java @@ -26,4 +26,26 @@ public interface IndikatorKinerjaJabatanDao extends PagingAndSortingRepository> findAllByJabatan(@Param("jabatanId") Integer idJabatan); + @Query("select new Map(jj.id as jenisJabatanId,jj.jenisJabatan as jenisJabatan," + + "jb.id as jabatanId,jb.namaJabatan as namaJabatan) " + "from Jabatan jb " + + "inner join jb.jenisJabatan jj " + "where jb.statusEnabled is true " + "and jb.kdJabatan = 'ANJAB' " + + "order by jb.namaJabatan, jb.id") + List> findAllJabatanAnjab(); + + @Query("select new Map(jb.id as jabatanId," + "ikt.noRec as noRec," + "ikt.tanggalMulaiBerlaku as tglBerlaku," + + "ikt.tanggalPembaharuanData as tglPembaharuanData) " + "from IndikatorKinerjaJabatan ikt " + + "inner join ikt.jabatan jb " + "where ikt.statusEnabled is true " + + "and ikt.indikatorKinerjaId = :indikatorId " + + "and to_char(ikt.tanggalMulaiBerlaku,'yyyy-MM') <= to_char(now(),'yyyy-MM') " + + "and jb.statusEnabled is true " + "and jb.kdJabatan = 'ANJAB' " + "order by jb.namaJabatan, jb.id, " + + "ikt.tanggalMulaiBerlaku desc, ikt.tanggalPembaharuanData desc") + List> findAllByIndikator(@Param("indikatorId") Integer idIndikator); + + @Query("select new Map(ikt.noRec as noRec," + "ikt.statusEnabled as statusEnabled," + "ikt.kdProfile as kdProfile," + + "ikt.tanggalMulaiBerlaku as tglBerlaku," + "ikt.indikatorKinerjaId as indikatorId," + + "ikt.jabatanId as jabatanId) " + "from IndikatorKinerjaJabatan ikt " + "where ikt.statusEnabled is true " + + "and ikt.indikatorKinerjaId in (:listIndikatorId) " + + "and to_char(ikt.tanggalMulaiBerlaku,'yyyy-MM') <= to_char(now(),'yyyy-MM')") + List> findAllByIndikator(@Param("listIndikatorId") List listIdIndikator); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndikatorKinerjaJabatanService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndikatorKinerjaJabatanService.java index 1e905e29..01fcd0fd 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndikatorKinerjaJabatanService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/IndikatorKinerjaJabatanService.java @@ -12,8 +12,11 @@ import com.jasamedika.medifirst2000.vo.IndikatorKinerjaJabatanVO; public interface IndikatorKinerjaJabatanService extends BaseVoService { - public List addAll(IndikatorKinerjaJabatanVO vo) throws JpaSystemException, ServiceVOException; + public List addAndUpdate(List listVO, Integer idLoginUser) + throws JpaSystemException, ServiceVOException; - Map findAllByJabatan(Integer idJabatan) throws JpaSystemException; + public List> findAllByIndikator(Integer idIndikator) throws JpaSystemException; + + public Map findAllByJabatan(Integer idJabatan) throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java index 2e8ad146..64aa1226 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaJabatanServiceImpl.java @@ -106,31 +106,30 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem return resultVO; } - @Override - public List addAll(IndikatorKinerjaJabatanVO vo) throws JpaSystemException, ServiceVOException { + public List addAll(List listVO, Integer idLoginUser) + throws JpaSystemException, ServiceVOException { List resultListVO = new ArrayList<>(); List listIndikatorJabatan = new ArrayList<>(); List> listLog = new ArrayList<>(); Date now = new Date(); - IndikatorKinerja indikator = indikatorConverter.transferVOToModel(vo.getIndikatorKinerja(), - new IndikatorKinerja()); - - for (JabatanVO jabatanVO : vo.getListJabatan()) { - Jabatan jabatan = jabatanConverter.transferVOToModel(jabatanVO, new Jabatan()); + for (IndikatorKinerjaJabatanVO vo : listVO) { + Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan()); + IndikatorKinerja indikator = indikatorConverter.transferVOToModel(vo.getIndikatorKinerja(), + new IndikatorKinerja()); IndikatorKinerjaJabatan indikatorJabatan = indikatorJabatanConverter.transferVOToModel(vo, new IndikatorKinerjaJabatan()); + indikatorJabatan.setJabatan(jabatan); indikatorJabatan.setIndikatorKinerja(indikator); indikatorJabatan.setTanggalPembaharuanData(now); - indikatorJabatan.setJabatan(jabatan); listIndikatorJabatan.add(indikatorJabatan); } Iterable listResultModel = indikatorKinerjaJabatanDao.save(listIndikatorJabatan); for (IndikatorKinerjaJabatan resultModel : listResultModel) { Map mapLog = new HashMap<>(); - mapLog.put("idLoginUser", vo.getLoginUserId()); + mapLog.put("idLoginUser", idLoginUser); mapLog.put("idReferensi", resultModel.getNoRec()); mapLog.put("keterangan", "Buat data"); listLog.add(mapLog); @@ -140,12 +139,60 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem resultListVO.add(resultVO.getNoRec()); } - + addAllLoggingUser(listLog); return resultListVO; } + @Override + public List addAndUpdate(List listVO, Integer idLoginUser) + throws JpaSystemException, ServiceVOException { + List resultListVO = new ArrayList<>(); + List listIdIndikator = new ArrayList<>(); + List listAdd = new ArrayList<>(); + List listUpdate = new ArrayList<>(); + + for (IndikatorKinerjaJabatanVO vo : listVO) { + if (CommonUtil.isNullOrEmpty(vo.getNoRec())) { + listAdd.add(vo); + } else if (!listIdIndikator.contains(vo.getIndikatorKinerja().getId())) { + listIdIndikator.add(vo.getIndikatorKinerja().getId()); + } + } + + if (CommonUtil.isNotNullOrEmpty(listIdIndikator)) { + List> allMap = indikatorKinerjaJabatanDao.findAllByIndikator(listIdIndikator); + for (Map map : allMap) { + IndikatorKinerjaJabatanVO vo = new IndikatorKinerjaJabatanVO(); + IndikatorKinerjaVO indikator = new IndikatorKinerjaVO(); + JabatanVO jabatan = new JabatanVO(); + + vo.setNoRec(map.get("noRec").toString()); + vo.setKdProfile((short) 0); + vo.setStatusEnabled(false); + vo.setTanggalMulaiBerlaku((Date) map.get("tglBerlaku")); + indikator.setId(Integer.valueOf(map.get("indikatorId").toString())); + vo.setIndikatorKinerja(indikator); + jabatan.setId(Integer.valueOf(map.get("jabatanId").toString())); + vo.setJabatan(jabatan); + + listUpdate.add(vo); + } + } + + if (CommonUtil.isNotNullOrEmpty(listAdd)) { + resultListVO = addAll(listAdd, idLoginUser); + } + if (CommonUtil.isNotNullOrEmpty(listUpdate) && CommonUtil.isNotNullOrEmpty(resultListVO)) { + resultListVO.addAll(updateAll(listUpdate, idLoginUser)); + } else { + resultListVO = updateAll(listUpdate, idLoginUser); + } + + return resultListVO; + } + @Override public IndikatorKinerjaJabatanVO update(IndikatorKinerjaJabatanVO vo) throws JpaSystemException, ServiceVOException { @@ -170,6 +217,55 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem return resultVO; } + /** + * + * @param listVO : mapping indikator yang akan dihapus + * @param idLoginUser : identitas user saat login + * @return Daftar identitas transaksi mapping indikator + * @throws JpaSystemException + * @throws ServiceVOException + */ + public List updateAll(List listVO, Integer idLoginUser) + throws JpaSystemException, ServiceVOException { + List resultListVO = new ArrayList<>(); + List listIndikatorJabatanBaru = new ArrayList<>(); + List> listLog = new ArrayList<>(); + Date now = new Date(); + + for (IndikatorKinerjaJabatanVO vo : listVO) { + IndikatorKinerjaJabatan indikatorJabatanLama = indikatorKinerjaJabatanDao.findOne(vo.getNoRec()); + + Jabatan jabatan = jabatanConverter.transferVOToModel(vo.getJabatan(), new Jabatan()); + IndikatorKinerja indikator = indikatorConverter.transferVOToModel(vo.getIndikatorKinerja(), + new IndikatorKinerja()); + IndikatorKinerjaJabatan indikatorJabatanBaru = indikatorJabatanConverter.transferVOToModel(vo, + indikatorJabatanLama); + + indikatorJabatanBaru.setJabatan(jabatan); + indikatorJabatanBaru.setIndikatorKinerja(indikator); + indikatorJabatanBaru.setTanggalPembaharuanData(now); + listIndikatorJabatanBaru.add(indikatorJabatanBaru); + } + + Iterable listResultModel = indikatorKinerjaJabatanDao.save(listIndikatorJabatanBaru); + for (IndikatorKinerjaJabatan resultModel : listResultModel) { + Map mapLog = new HashMap<>(); + mapLog.put("idLoginUser", idLoginUser); + mapLog.put("idReferensi", resultModel.getNoRec()); + mapLog.put("keterangan", "Edit data"); + listLog.add(mapLog); + + IndikatorKinerjaJabatanVO resultVO = new IndikatorKinerjaJabatanVO(); + resultVO = indikatorJabatanConverter.transferModelToVO(resultModel, resultVO); + + resultListVO.add(resultVO.getNoRec()); + } + + addAllLoggingUser(listLog); + + return resultListVO; + } + @Override public Boolean delete(String key) throws JpaSystemException { indikatorKinerjaJabatanDao.delete(key); @@ -240,4 +336,39 @@ public class IndikatorKinerjaJabatanServiceImpl extends BaseVoServiceImpl implem return result; } + @Override + public List> findAllByIndikator(Integer idIndikator) throws JpaSystemException { + List> data = new ArrayList<>(); + List listIdJabatan = new ArrayList<>(); + + List> result = indikatorKinerjaJabatanDao.findAllJabatanAnjab(); + List> allMap = indikatorKinerjaJabatanDao.findAllByIndikator(idIndikator); + for (Map map : allMap) { + if (!listIdJabatan.contains(map.get("jabatanId"))) { + listIdJabatan.add(Integer.valueOf(map.get("jabatanId").toString())); + data.add(map); + } + } + + for (Map mapRs : result) { + for (Map map : data) { + if (mapRs.get("jabatanId").equals(map.get("jabatanId"))) { + mapRs.put("statusPilih", true); + mapRs.put("noRec", map.get("noRec")); + mapRs.put("tglBerlaku", map.get("tglBerlaku")); + mapRs.put("tglPembaharuanData", map.get("tglPembaharuanData")); + break; + } + } + if (CommonUtil.isNullOrEmpty(mapRs.get("noRec"))) { + mapRs.put("statusPilih", false); + mapRs.put("noRec", null); + mapRs.put("tglBerlaku", null); + mapRs.put("tglPembaharuanData", null); + } + } + + return result; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndikatorKinerjaJabatanVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndikatorKinerjaJabatanVO.java index c7308ac5..2c23b327 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndikatorKinerjaJabatanVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/IndikatorKinerjaJabatanVO.java @@ -1,7 +1,6 @@ package com.jasamedika.medifirst2000.vo; import java.util.Date; -import java.util.List; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.helper.Caption; @@ -18,11 +17,6 @@ public class IndikatorKinerjaJabatanVO extends BaseTransactionVO { private Integer jabatanId; - @Caption(value = "Daftar Jabatan") - private List listJabatan; - - private List listJabatanId; - @Caption(value = "Tanggal Mulai Berlaku") private Date tanggalMulaiBerlaku; @@ -63,22 +57,6 @@ public class IndikatorKinerjaJabatanVO extends BaseTransactionVO { this.jabatanId = jabatanId; } - public List getListJabatan() { - return listJabatan; - } - - public void setListJabatan(List listJabatan) { - this.listJabatan = listJabatan; - } - - public List getListJabatanId() { - return listJabatanId; - } - - public void setListJabatanId(List listJabatanId) { - this.listJabatanId = listJabatanId; - } - public Date getTanggalMulaiBerlaku() { return tanggalMulaiBerlaku; } 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 32f0071b..50b82128 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 @@ -366,9 +366,10 @@ public class IkiDanRemunerasiController extends LocaleController> saveMappingIndikatorAllJabatan(HttpServletRequest request, - @Valid @RequestBody IndikatorKinerjaJabatanVO vo) { + @Valid @RequestBody List vo, + @RequestParam(value = "loginUserId", required = true) Integer idLoginUser) { try { - List result = indikatorKinerjaJabatanService.addAll(vo); + List result = indikatorKinerjaJabatanService.addAndUpdate(vo, idLoginUser); if (CommonUtil.isNotNullOrEmpty(result)) { mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); @@ -406,6 +407,25 @@ public class IkiDanRemunerasiController extends LocaleController>> setMappingIndikatorJabatan(HttpServletRequest request, + @RequestParam(value = "indikatorId", required = true) Integer idIndikator) throws ParseException { + try { + List> result = indikatorKinerjaJabatanService.findAllByIndikator(idIndikator); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when set mapping indikator jabatan", 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 set mapping indikator jabatan", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/save-skoring-tindakan-medis", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity saveSkoringTindakanMedis(HttpServletRequest request, @Valid @RequestBody SkoringTindakanMedisVO vo) {