From 3f5a8ad4d6b2bc2cc4d42347a19ebd9999917b42 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 20 Jun 2022 13:08:21 +0700 Subject: [PATCH] Update SkoringTindakanFarmakologiService Pembuatan api service skoring tindakan farmakologi --- .../dao/SkoringTindakanFarmakologiDao.java | 7 + .../SkoringTindakanFarmakologiService.java | 9 +- ...SkoringTindakanFarmakologiServiceImpl.java | 190 ++++++++++++++++-- .../IkiDanRemunerasiController.java | 103 ++++++++++ 4 files changed, 291 insertions(+), 18 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanFarmakologiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanFarmakologiDao.java index 69d375c0..b6766a56 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanFarmakologiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanFarmakologiDao.java @@ -84,4 +84,11 @@ public interface SkoringTindakanFarmakologiDao extends PagingAndSortingRepositor + "and stf.noRec in (:listNorec)") List> findAllDup(@Param("listNorec") List listNorec); + @Query(value = "select * from sdm_skoringtindakanfarmakologi_t " + + "where statusenabled is true and statusverifikasi is true " + + "and objectprodukfarmakologifk = :produkId and to_char(tanggalmulaiberlaku, 'yyyy-mm-dd') <= :tglMulaiBerlaku " + + "order by tanggalmulaiberlaku desc, tanggalpembaharuandata desc limit 1", nativeQuery = true) + SkoringTindakanNakes findLast(@Param("produkId") Integer idProduk, + @Param("tglMulaiBerlaku") String tglMulaiBerlaku); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanFarmakologiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanFarmakologiService.java index e7e909d7..58c1f4b0 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanFarmakologiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanFarmakologiService.java @@ -15,12 +15,11 @@ import com.jasamedika.medifirst2000.vo.SkoringTindakanFarmakologiVO; */ public interface SkoringTindakanFarmakologiService extends BaseVoService { - - List> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi) - throws JpaSystemException; - List> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi, - Long tglMulaiBerlaku, String noRec) throws JpaSystemException; + List> findAllEnabled(String namaProduk, Boolean isVerif) throws JpaSystemException; + + List> findDuplicateSkoring(String namaProduk, Double skor, Long tglMulaiBerlaku, String noRec) + throws JpaSystemException; Map findAkses(Integer idPegawai) throws JpaSystemException; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanFarmakologiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanFarmakologiServiceImpl.java index 01a57163..64447cdd 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanFarmakologiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanFarmakologiServiceImpl.java @@ -1,27 +1,33 @@ package com.jasamedika.medifirst2000.service.impl; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; 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 com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.LoggingUserDao; +import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; import com.jasamedika.medifirst2000.dao.SkoringTindakanFarmakologiDao; +import com.jasamedika.medifirst2000.dao.SubUnitKerjaDao; import com.jasamedika.medifirst2000.entities.LoggingUser; import com.jasamedika.medifirst2000.entities.LoginUser; import com.jasamedika.medifirst2000.entities.ProdukFarmakologi; import com.jasamedika.medifirst2000.entities.SkoringTindakanFarmakologi; -import com.jasamedika.medifirst2000.entities.SkoringTindakanNakes; import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.SkoringTindakanFarmakologiService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanFarmakologiVO; -import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO; /** * @author salmanoe @@ -43,6 +49,15 @@ public class SkoringTindakanFarmakologiServiceImpl extends BaseVoServiceImpl @Autowired private LoggingUserDao loggingUserDao; + @Autowired + private SettingDataFixedDao settingDataFixedDao; + + @Autowired + private MapPegawaiJabatanToUnitKerjaDao mappingJabatanDao; + + @Autowired + private SubUnitKerjaDao subUnitKerjaDao; + public void addLoggingUser(Integer idLoginUser, String idReferensi, String keterangan) { LoggingUser loggingUser = new LoggingUser(); LoginUser loginUser = new LoginUser(); @@ -144,28 +159,177 @@ public class SkoringTindakanFarmakologiServiceImpl extends BaseVoServiceImpl @Override public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, String sort, String dir) { - + return null; } @Override - public List> findAllEnabled(String namaProduk, Boolean isVerif, Integer idProfesi) - throws JpaSystemException { - // TODO Auto-generated method stub - return null; + public List> findAllEnabled(String namaProduk, Boolean isVerif) throws JpaSystemException { + List> result = new ArrayList<>(); + List> data = new ArrayList<>(); + List> filter = new ArrayList<>(); + + if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif)) { + data = skoringTindakanDao.findAllEnabled(); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(isVerif)) { + data = skoringTindakanDao.findAllEnabledByProduk(namaProduk.toLowerCase()); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif)) { + data = skoringTindakanDao.findAllEnabledByVerif(isVerif); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(isVerif)) { + data = skoringTindakanDao.findAllEnabledByProdukVerif(namaProduk.toLowerCase(), isVerif); + } + + // filtering + for (Map mapData : data) { + boolean isContained = false; + for (Map mapFilter : filter) { + if (mapData.get("produkId").equals(mapFilter.get("produkId"))) { + isContained = true; + break; + } + } + if (!isContained) { + Map mapFilter = new HashMap<>(); + mapFilter.put("produkId", mapData.get("produkId")); + result.add(mapFilter); + } + } + + return result; } @Override - public List> findDuplicateSkoring(String namaProduk, Double skor, Integer idProfesi, - Long tglMulaiBerlaku, String noRec) throws JpaSystemException { - // TODO Auto-generated method stub - return null; + public List> findDuplicateSkoring(String namaProduk, Double skor, Long tglMulaiBerlaku, + String noRec) throws JpaSystemException { + List> result = new ArrayList<>(); + List listNorec = new ArrayList<>(); + + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(noRec)) { + listNorec = skoringTindakanDao.findLastDupSkoring(replacedNamaProduk, skor, patternText, noRec); + if (CommonUtil.isNullOrEmpty(listNorec)) { + listNorec = skoringTindakanDao.findDupSkoring(replacedNamaProduk, df.format(new Date(tglMulaiBerlaku)), + patternText, noRec); + } + } else { + listNorec = skoringTindakanDao.findLastDupSkoring(replacedNamaProduk, skor, patternText); + if (CommonUtil.isNullOrEmpty(listNorec)) { + listNorec = skoringTindakanDao.findDupSkoring(replacedNamaProduk, df.format(new Date(tglMulaiBerlaku)), + patternText); + } + } + + if (CommonUtil.isNotNullOrEmpty(listNorec)) { + result = skoringTindakanDao.findAllDup(listNorec); + } + + return result; } @Override public Map findAkses(Integer idPegawai) throws JpaSystemException { - // TODO Auto-generated method stub - return null; + Map result = new HashMap<>(); + List listRs = new ArrayList<>(); + List listIdUnitKerja = new ArrayList<>(); + List listUnitKerjaSuperuser = new ArrayList<>(); + + listIdUnitKerja.add(Master.UnitKerja.BID_JANG); + listIdUnitKerja.addAll(Arrays.asList(Master.UnitKerja.NAKES_LAIN)); + listUnitKerjaSuperuser.add(Master.UnitKerja.BAG_SDM); + + List> listSuperuser = mappingJabatanDao.findAksesPegawaiPenilai(listIdUnitKerja, idPegawai); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiStaf(listUnitKerjaSuperuser, idPegawai)); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiAtasan(listUnitKerjaSuperuser, idPegawai)); + listSuperuser.addAll(mappingJabatanDao.findAksesPegawaiPenilai(listUnitKerjaSuperuser, idPegawai)); + if (CommonUtil.isNotNullOrEmpty(listSuperuser)) { + listRs.addAll(listIdUnitKerja); + + result.put("isSuperuser", true); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listAtasan = mappingJabatanDao.findAksesPegawaiAtasan(listIdUnitKerja, idPegawai); + if (CommonUtil.isNotNullOrEmpty(listAtasan)) { + for (Map map : listAtasan) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", true); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listStaf = mappingJabatanDao.findAksesPegawaiStaf(listIdUnitKerja, idPegawai); + if (CommonUtil.isNotNullOrEmpty(listStaf)) { + for (Map map : listStaf) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", true); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listSuperElse = mappingJabatanDao.findAksesPegawaiPenilai(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listSuperElse)) { + for (Map map : listSuperElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listAtasanElse = mappingJabatanDao.findAksesPegawaiAtasan(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listAtasanElse)) { + for (Map map : listAtasanElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } else { + List> listStafElse = mappingJabatanDao.findAksesPegawaiStaf(idPegawai); + if (CommonUtil.isNotNullOrEmpty(listStafElse)) { + for (Map map : listStafElse) { + if (!listRs.contains(Integer.valueOf(map.get("unitKerjaId").toString()))) { + listRs.add(Integer.valueOf(map.get("unitKerjaId").toString())); + } + } + + result.put("isSuperuser", false); + result.put("isAtasan", false); + result.put("isStaf", false); + result.put("listId", listRs); + result.put("listSk", subUnitKerjaDao.getSubunitKerjaByUnitKerja(listRs)); + } + } + } + } + } + } + + return result; } } 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 58ab28f5..9bab339b 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 @@ -46,6 +46,7 @@ import com.jasamedika.medifirst2000.service.ProdukNakesService; import com.jasamedika.medifirst2000.service.ProdukPerawatService; import com.jasamedika.medifirst2000.service.ProfesiService; import com.jasamedika.medifirst2000.service.RemunerasiOperasionalService; +import com.jasamedika.medifirst2000.service.SkoringTindakanFarmakologiService; import com.jasamedika.medifirst2000.service.SkoringTindakanMedisService; import com.jasamedika.medifirst2000.service.SkoringTindakanNakesService; import com.jasamedika.medifirst2000.service.SkoringTindakanPerawatService; @@ -72,6 +73,7 @@ import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; import com.jasamedika.medifirst2000.vo.ProfesiVO; import com.jasamedika.medifirst2000.vo.RemunerasiOperasionalVO; import com.jasamedika.medifirst2000.vo.SettingPirSdmVO; +import com.jasamedika.medifirst2000.vo.SkoringTindakanFarmakologiVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanNakesVO; import com.jasamedika.medifirst2000.vo.SkoringTindakanPerawatVO; @@ -159,6 +161,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -2477,4 +2482,102 @@ public class IkiDanRemunerasiController extends LocaleController saveSkoringTindakanFarmakologi(HttpServletRequest request, + @Valid @RequestBody SkoringTindakanFarmakologiVO vo) { + try { + SkoringTindakanFarmakologiVO result = new SkoringTindakanFarmakologiVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = skoringTindakanFarmakologiService.update(vo); + } else { + result = skoringTindakanFarmakologiService.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 skor tindakan oleh kelompok kerja farmakologi", + 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 skor tindakan oleh kelompok kerja farmakologi", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-all-skoring-tindakan-farmakologi", method = RequestMethod.GET) + public ResponseEntity>> getAllSkoringTindakanFarmakologi(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = false) String namaProduk, + @RequestParam(value = "isVerif", required = false) Boolean isVerif) throws ParseException { + try { + List> result = skoringTindakanFarmakologiService.findAllEnabled(namaProduk, isVerif); + 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 get all skoring tindakan oleh kelompok kerja farmakologi", + 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 get all skoring tindakan oleh kelompok kerja farmakologi", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-duplicate-skoring-tindakan-farmakologi", method = RequestMethod.GET) + public ResponseEntity>> getDuplikatSkoringTindakanFarmakologi(HttpServletRequest request, + @RequestParam(value = "noRec", required = false) String noRec, + @RequestParam(value = "namaProduk", required = true) String namaProduk, + @RequestParam(value = "skor", required = true) Double skor, + @RequestParam(value = "tglBerlaku", required = true) Long tglMulaiBerlaku) throws ParseException { + try { + List> result = skoringTindakanFarmakologiService.findDuplicateSkoring(namaProduk, skor, + tglMulaiBerlaku, noRec); + 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 get duplikat skoring tindakan oleh kelompok kerja farmakologi", + 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 get duplikat skoring tindakan oleh kelompok kerja farmakologi", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-akses-skoring-tindakan-farmakologi", method = RequestMethod.GET) + public ResponseEntity> getAksesSkoringTindakanFarmakologi(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) throws ParseException { + try { + Map result = skoringTindakanFarmakologiService.findAkses(idPegawai); + 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 get akses skoring tindakan oleh kelompok kerja farmakologi", + 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 get akses skoring tindakan oleh kelompok kerja farmakologi", + jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }