From 0b9aaf29b8c0fec97e86a989ff9c6fb47dc554dc Mon Sep 17 00:00:00 2001 From: salmanoe Date: Mon, 20 Jun 2022 14:42:42 +0700 Subject: [PATCH] Update LogbookKinerjaService Pembuatan service logbook skor kinerja dokter farmakologi --- .../service/LogbookKinerjaService.java | 5 + .../impl/LogbookKinerjaServiceImpl.java | 104 ++++++++++++++++++ .../IkiDanRemunerasiController.java | 96 ++++++++++++++++ 3 files changed, 205 insertions(+) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java index ceaa573e..67dbce77 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/LogbookKinerjaService.java @@ -70,4 +70,9 @@ public interface LogbookKinerjaService extends BaseVoService> findDetailLogbookNakes(Integer idPegawai, Integer idProduk, String tglPelayanan); + public List> findLogbookFarmakologi(Integer idPegawai, Long bulan); + + public List> findDetailLogbookFarmakologi(Integer idPegawai, Integer idProduk, + String tglPelayanan); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java index f7e0bba1..84d28eda 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/LogbookKinerjaServiceImpl.java @@ -42,6 +42,7 @@ import com.jasamedika.medifirst2000.dao.LogbookKinerjaDokterDao; import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; import com.jasamedika.medifirst2000.dao.MapPegawaiLaboratRadiologiDao; import com.jasamedika.medifirst2000.dao.PegawaiDao; +import com.jasamedika.medifirst2000.dao.PelayananFarmakologiDao; import com.jasamedika.medifirst2000.dao.PelayananNakesDao; import com.jasamedika.medifirst2000.dao.PelayananPasienNakesDao; import com.jasamedika.medifirst2000.dao.PelayananPasienPerawatDao; @@ -161,6 +162,9 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb @Autowired private PelayananPasienPerawatDao pelayananPasienPerawatDao; + @Autowired + private PelayananFarmakologiDao pelayananFarmakologiDao; + @Override public LogbookKinerjaVO add(LogbookKinerjaVO vo) throws JpaSystemException, ServiceVOException { Pegawai pegawai = pegawaiConverter.transferVOToModel(vo.getPegawai(), new Pegawai()); @@ -3216,4 +3220,104 @@ public class LogbookKinerjaServiceImpl extends BaseVoServiceImpl implements Logb return result; } + @Override + public List> findLogbookFarmakologi(Integer idPegawai, Long bulan) { + List> result = new ArrayList<>(); + + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + DateFormat mf = new SimpleDateFormat("yyyy-MM"); + + DecimalFormat decf = new DecimalFormat("###.###"); + decf.setRoundingMode(RoundingMode.HALF_UP); + + List> pelayananFarmakologi = pelayananFarmakologiDao + .findPelayananFarmakologi(mf.format(new Date(bulan)), idPegawai); + + List listIdProduk = new ArrayList<>(); + List listSkor = new ArrayList<>(); + List listTglPelayanan = new ArrayList<>(); + for (Map map : pelayananFarmakologi) { + if (!listIdProduk.contains(map.get("produkId"))) { + listIdProduk.add(Integer.parseInt(map.get("produkId").toString())); + } + if (!listSkor.contains(map.get("skor"))) { + listSkor.add(Double.parseDouble(map.get("skor").toString())); + } + if (!listTglPelayanan.contains(df.format((Date) map.get("tglPelayanan")))) { + listTglPelayanan.add(df.format((Date) map.get("tglPelayanan"))); + } + } + listTglPelayanan = listTglPelayanan.stream().sorted().collect(Collectors.toList()); + + // GROUPING_TANGGAL_PELAYANAN + List> dataTglPelayanan = new ArrayList<>(); + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + for (String tglPelayanan : listTglPelayanan) { + Map data = new HashMap<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : pelayananFarmakologi) { + if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor")) + && tglPelayanan.equals(df.format((Date) mapLayanan.get("tglPelayanan")))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + data.putAll(mapLayanan); + data.put("tglPelayanan", df.format(((Date) mapLayanan.get("tglPelayanan")))); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("jumlah", jumlahTindakan); + data.put("tSkor", jumlahSkor); + + dataTglPelayanan.add(data); + } + } + } + } + + // GROUPING_HEADER + for (Integer idProduk : listIdProduk) { + for (Double skor : listSkor) { + Map data = new HashMap<>(); + List> detail = new ArrayList<>(); + double jumlahTindakan = 0.0; + double jumlahSkor = 0.0; + for (Map mapLayanan : dataTglPelayanan) { + if (idProduk.equals(mapLayanan.get("produkId")) && skor.equals(mapLayanan.get("skor"))) { + jumlahTindakan += Double.valueOf(mapLayanan.get("jumlah").toString()); + jumlahSkor += Double.valueOf(mapLayanan.get("tSkor").toString()); + + Map mapDetail = new HashMap<>(); + mapDetail.put("jumlah", mapLayanan.get("jumlah")); + mapDetail.put("tglPelayanan", mapLayanan.get("tglPelayanan")); + detail.add(mapDetail); + + mapLayanan.remove("noRec"); + mapLayanan.remove("tglPelayanan"); + data.putAll(mapLayanan); + } + } + if (CommonUtil.isNotNullOrEmpty(data)) { + data.put("detail", detail); + data.put("jumlah", jumlahTindakan); + data.put("tSkor", Double.parseDouble(decf.format(jumlahSkor))); + + result.add(data); + } + } + } + + return result; + } + + @Override + public List> findDetailLogbookFarmakologi(Integer idPegawai, Integer idProduk, + String tglPelayanan) { + List> result = pelayananFarmakologiDao.findPelayananFarmakologiDetail(idPegawai, idProduk, + tglPelayanan); + + return result; + } + } \ No newline at end of file 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 9bab339b..cd006d82 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 @@ -38,6 +38,7 @@ import com.jasamedika.medifirst2000.service.LogbookKinerjaDokterService; import com.jasamedika.medifirst2000.service.LogbookKinerjaService; import com.jasamedika.medifirst2000.service.MapPegawaiJabatanToUnitKerjaService; import com.jasamedika.medifirst2000.service.MapProdukKelompokKerjaService; +import com.jasamedika.medifirst2000.service.PelayananFarmakologiService; import com.jasamedika.medifirst2000.service.PelayananNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; @@ -64,6 +65,7 @@ import com.jasamedika.medifirst2000.vo.LogbookKinerjaDetailVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaDokterVO; import com.jasamedika.medifirst2000.vo.LogbookKinerjaVO; import com.jasamedika.medifirst2000.vo.MapProdukKelompokKerjaVO; +import com.jasamedika.medifirst2000.vo.PelayananFarmakologiVO; import com.jasamedika.medifirst2000.vo.PelayananNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; @@ -164,6 +166,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -2580,4 +2585,95 @@ public class IkiDanRemunerasiController extends LocaleController savePelayananFarmakologi(HttpServletRequest request, + @Valid @RequestBody PelayananFarmakologiVO vo) { + try { + PelayananFarmakologiVO result = new PelayananFarmakologiVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) { + result = pelayananFarmakologiService.update(vo); + } else { + result = pelayananFarmakologiService.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 add/update pelayanan oleh dokter 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 pelayanan oleh dokter farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/delete-pelayanan-farmakologi", method = RequestMethod.POST) + public ResponseEntity deletePelayananFarmakologi(HttpServletRequest request, + @RequestParam(value = "noRec", required = true) String norec) { + try { + Boolean result = pelayananFarmakologiService.delete(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 delete pelayanan oleh dokter 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 delete pelayanan oleh dokter farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-logbook-skoring-farmakologi", method = RequestMethod.GET) + public ResponseEntity>> getLogbookSkoringFarmakologi(HttpServletRequest request, + @RequestParam(value = "bulan", required = true) Long bulan, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai) { + try { + List> result = logbookKinerjaService.findLogbookFarmakologi(idPegawai, bulan); + 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 logbook skoring dokter 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 logbook skoring dokter farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-detail-logbook-skoring-farmakologi", method = RequestMethod.GET) + public ResponseEntity>> getDetailLogbookSkoringFarmakologi(HttpServletRequest request, + @RequestParam(value = "pegawaiId", required = true) Integer idPegawai, + @RequestParam(value = "produkId", required = true) Integer idProduk, + @RequestParam(value = "tglPelayanan", required = true) String tglPelayanan) { + try { + List> result = logbookKinerjaService.findDetailLogbookFarmakologi(idPegawai, idProduk, + tglPelayanan); + 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 detail logbook skoring dokter 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 detail logbook skoring dokter farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }