From 3d3ece6c53f82770bdb71f7eadc5bcdc7894df86 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Thu, 4 Mar 2021 20:22:26 +0700 Subject: [PATCH] - pembuatan service cek duplikat mapping skoring tindakan medis - perbaikan file not found exception saat get detail presensi --- .../dao/SkoringTindakanMedisDao.java | 21 ++++ .../service/SkoringTindakanMedisService.java | 9 +- .../impl/AbsensiPegawaiServiceImpl.java | 95 ++++++++++--------- .../impl/IndikatorKinerjaServiceImpl.java | 2 +- .../service/impl/ProdukServiceImpl.java | 2 +- .../impl/SkoringTindakanMedisServiceImpl.java | 32 ++++++- .../IkiDanRemunerasiController.java | 24 +++++ 7 files changed, 134 insertions(+), 51 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanMedisDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanMedisDao.java index 1e9d2ed1..c7677a8f 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanMedisDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SkoringTindakanMedisDao.java @@ -95,4 +95,25 @@ public interface SkoringTindakanMedisDao extends PagingAndSortingRepository findDupSkoring(@Param("produkId") Integer idProduk, @Param("kelompokKerjaId") Integer idKelompokKerja, + @Param("skor") Double skor, @Param("patternText") String patternText, + @Param("detailProduk") String detailProduk); + + @Query(strCekDupSkoring + idSkoring) + List findDupSkoring(@Param("produkId") Integer idProduk, @Param("kelompokKerjaId") Integer idKelompokKerja, + @Param("skor") Double skor, @Param("patternText") String patternText, + @Param("detailProduk") String detailProduk, @Param("noRec") String noRec); + + @Query("select new Map(stm.noRec as noRec,stm.detailProduk as detailProduk) " + "from SkoringTindakanMedis stm " + + "where stm.statusEnabled is true " + "and stm.noRec in (:listNorec)") + List> findAllDup(@Param("listNorec") List listNorec); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanMedisService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanMedisService.java index 01bdbf1c..2b8bfd6a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanMedisService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SkoringTindakanMedisService.java @@ -3,6 +3,8 @@ package com.jasamedika.medifirst2000.service; import java.util.List; import java.util.Map; +import org.springframework.orm.jpa.JpaSystemException; + import com.jasamedika.medifirst2000.entities.SkoringTindakanMedis; import com.jasamedika.medifirst2000.vo.SkoringTindakanMedisVO; @@ -10,8 +12,11 @@ public interface SkoringTindakanMedisService extends BaseVoService { List> findAllEnabled(Integer idUnitKerja, Integer idKelompokKerja, Integer idProduk, - String detailProduk, Long tglMulaiBerlaku, Boolean statusVerifikasi); + String detailProduk, Long tglMulaiBerlaku, Boolean statusVerifikasi) throws JpaSystemException; - List> findDaftarInputTindakanByRuanganKelas(Integer idRuangan); + List> findDaftarInputTindakanByRuanganKelas(Integer idRuangan) throws JpaSystemException; + + List> findDuplicateSkoring(Integer idProduk, Integer idKelompokKerja, Double skor, + String detailProduk, String noRec) throws JpaSystemException; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java index aaaca525..904cd7fe 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/AbsensiPegawaiServiceImpl.java @@ -43,7 +43,7 @@ import com.jasamedika.medifirst2000.vo.HabsenVO; */ @Service("absensiPegawaiService") public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements AbsensiPegawaiService { - + @Value("${presensiCapturePath}") String presensiCapturePath; @@ -181,57 +181,62 @@ public class AbsensiPegawaiServiceImpl extends BaseVoServiceImpl implements Abse } } - private static String encodeFileToBase64Binary(File file) throws Exception { - FileInputStream fileInputStreamReader = new FileInputStream(file); - byte[] bytes = new byte[(int) file.length()]; - fileInputStreamReader.read(bytes); - String result = new String(org.apache.commons.codec.binary.Base64.encodeBase64(bytes), "UTF-8"); + private static String encodeFileToBase64Binary(File file) { + String result = ""; + try { + FileInputStream fileInputStreamReader = new FileInputStream(file); + byte[] bytes = new byte[(int) file.length()]; + fileInputStreamReader.read(bytes); + result = new String(org.apache.commons.codec.binary.Base64.encodeBase64(bytes), "UTF-8"); + + fileInputStreamReader.close(); + + return result; + } catch (Exception e) { + return result; + } - fileInputStreamReader.close(); - return result; } @Override public List> findDetailPresensi(List listTrNo) { List> result = new ArrayList<>(); - try { - List> data = habsensiDao.getDetailPresensi(listTrNo); - for (Map map : data) { - Map mapRs = new HashMap<>(); - String imageURLData = "data:image/jpg;base64," - + encodeFileToBase64Binary(new File(getImageAbsoluteFilePath(map.get("filePath").toString()))); - - if (CommonUtil.isNotNullOrEmpty(map.get("filePath")) && CommonUtil.isNotNullOrEmpty(map.get("akurasi")) - && CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) { - mapRs.put("imageURLData", imageURLData); - mapRs.put("date", map.get("tanggal")); - mapRs.put("accuracy", map.get("akurasi").toString()); - mapRs.put("location", map.get("lokasi")); - } else if (CommonUtil.isNullOrEmpty(map.get("filePath")) - && CommonUtil.isNotNullOrEmpty(map.get("akurasi")) - && CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) { - mapRs.put("imageURLData", ""); - mapRs.put("date", map.get("tanggal")); - mapRs.put("accuracy", map.get("akurasi").toString()); - mapRs.put("location", map.get("lokasi")); - } else if (CommonUtil.isNotNullOrEmpty(map.get("filePath")) - && CommonUtil.isNullOrEmpty(map.get("akurasi")) - && CommonUtil.isNullOrEmpty(map.get("lokasi"))) { - mapRs.put("imageURLData", imageURLData); - mapRs.put("date", map.get("tanggal")); - mapRs.put("accuracy", ""); - mapRs.put("location", ""); - } else { - mapRs.put("imageURLData", ""); - mapRs.put("date", ""); - mapRs.put("accuracy", ""); - mapRs.put("location", ""); - } - - result.add(mapRs); + List> data = habsensiDao.getDetailPresensi(listTrNo); + for (Map map : data) { + Map mapRs = new HashMap<>(); + String imageURLData = ""; + String encodeRs = encodeFileToBase64Binary( + new File(getImageAbsoluteFilePath(map.get("filePath").toString()))); + if (CommonUtil.isNotNullOrEmpty(encodeRs)) { + imageURLData = "data:image/jpg;base64," + encodeRs; } - } catch (Exception e) { - e.printStackTrace(); + + if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi")) + && CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) { + mapRs.put("imageURLData", imageURLData); + mapRs.put("date", map.get("tanggal")); + mapRs.put("accuracy", map.get("akurasi").toString()); + mapRs.put("location", map.get("lokasi")); + } else if (CommonUtil.isNullOrEmpty(encodeRs) && CommonUtil.isNotNullOrEmpty(map.get("akurasi")) + && CommonUtil.isNotNullOrEmpty(map.get("lokasi"))) { + mapRs.put("imageURLData", ""); + mapRs.put("date", map.get("tanggal")); + mapRs.put("accuracy", map.get("akurasi").toString()); + mapRs.put("location", map.get("lokasi")); + } else if (CommonUtil.isNotNullOrEmpty(encodeRs) && CommonUtil.isNullOrEmpty(map.get("akurasi")) + && CommonUtil.isNullOrEmpty(map.get("lokasi"))) { + mapRs.put("imageURLData", imageURLData); + mapRs.put("date", map.get("tanggal")); + mapRs.put("accuracy", ""); + mapRs.put("location", ""); + } else { + mapRs.put("imageURLData", ""); + mapRs.put("date", ""); + mapRs.put("accuracy", ""); + mapRs.put("location", ""); + } + + result.add(mapRs); } return result; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaServiceImpl.java index 4bbf0d58..4e25c401 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndikatorKinerjaServiceImpl.java @@ -145,7 +145,7 @@ public class IndikatorKinerjaServiceImpl extends BaseVoServiceImpl implements In List> result = new ArrayList<>(); List listIdDup = new ArrayList<>(); - String patternText = settingDataFixedDao.getSettingDataFixed("patternTextProduk"); + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); String replacedNamaIndikator = namaIndikator.replaceAll(patternText, "").toLowerCase(); if (CommonUtil.isNotNullOrEmpty(idIndikator)) { listIdDup = indikatorKinerjaDao.findDupByName(patternText, idIndikator, replacedNamaIndikator); diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java index bf6ab482..bf28aa57 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukServiceImpl.java @@ -1171,7 +1171,7 @@ public class ProdukServiceImpl extends BaseAngaranServiceImpl implements ProdukS public Map validateNamaProduk(Integer idProduk, String namaProduk) { Map result = new HashMap<>(); - String patternText = settingDataFixedDao.getSettingDataFixed("patternTextProduk"); + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); if (CommonUtil.isNotNullOrEmpty(idProduk)) { List> listNamaProduk = produkDao.checkNamaProdukLama(patternText, idProduk, diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanMedisServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanMedisServiceImpl.java index cc4fd78d..bb8d891b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanMedisServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SkoringTindakanMedisServiceImpl.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Service; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.ProdukDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; import com.jasamedika.medifirst2000.dao.SkoringTindakanMedisDao; import com.jasamedika.medifirst2000.entities.Produk; import com.jasamedika.medifirst2000.entities.SkoringTindakanMedis; @@ -40,6 +41,9 @@ public class SkoringTindakanMedisServiceImpl extends BaseVoServiceImpl implement @Autowired private ProdukDao produkDao; + @Autowired + private SettingDataFixedDao settingDataFixedDao; + @Override public SkoringTindakanMedisVO add(SkoringTindakanMedisVO vo) throws JpaSystemException, ServiceVOException { Produk produk = produkConverter.transferVOToModel(vo.getProduk(), new Produk()); @@ -117,7 +121,7 @@ public class SkoringTindakanMedisServiceImpl extends BaseVoServiceImpl implement @Override public List> findAllEnabled(Integer idUnitKerja, Integer idKelompokKerja, Integer idProduk, - String detailProduk, Long tglMulaiBerlaku, Boolean statusVerifikasi) { + String detailProduk, Long tglMulaiBerlaku, Boolean statusVerifikasi) throws JpaSystemException { List> result = new ArrayList<>(); if (CommonUtil.isNullOrEmpty(idUnitKerja) && CommonUtil.isNullOrEmpty(idKelompokKerja) @@ -186,10 +190,34 @@ public class SkoringTindakanMedisServiceImpl extends BaseVoServiceImpl implement } @Override - public List> findDaftarInputTindakanByRuanganKelas(Integer idRuangan) { + public List> findDaftarInputTindakanByRuanganKelas(Integer idRuangan) + throws JpaSystemException { List> result = produkDao.findDaftarInputTindakanByRuangan(idRuangan); return result; } + @Override + public List> findDuplicateSkoring(Integer idProduk, Integer idKelompokKerja, Double skor, + String detailProduk, String noRec) throws JpaSystemException { + List> result = new ArrayList<>(); + List listNorec = new ArrayList<>(); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedDetailProduk = detailProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(noRec)) { + listNorec = skoringTindakanMedisDao.findDupSkoring(idProduk, idKelompokKerja, skor, patternText, + replacedDetailProduk, noRec); + } else { + listNorec = skoringTindakanMedisDao.findDupSkoring(idProduk, idKelompokKerja, skor, patternText, + replacedDetailProduk); + } + + if (CommonUtil.isNotNullOrEmpty(listNorec)) { + result = skoringTindakanMedisDao.findAllDup(listNorec); + } + + 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 a111e724..cdcaca17 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 @@ -405,6 +405,30 @@ public class IkiDanRemunerasiController extends LocaleController>> getDuplicateSkoringTindakanMedis(HttpServletRequest request, + @RequestParam(value = "noRec", required = false) String noRec, + @RequestParam(value = "produkId", required = true) Integer idProduk, + @RequestParam(value = "kelompokKerjaId", required = true) Integer idKelompokKerja, + @RequestParam(value = "detailProduk", required = true) String detailProduk, + @RequestParam(value = "skor", required = true) Double skor) throws ParseException { + try { + List> result = skoringTindakanMedisService.findDuplicateSkoring(idProduk, + idKelompokKerja, skor, detailProduk, 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 medis", 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 medis", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + @RequestMapping(value = "/save-kontrak-kinerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity saveKontrakKinerja(HttpServletRequest request, @Valid @RequestBody LogbookKinerjaVO vo) {