From da4612662e712f2efb5d12e6e090fbb2ef542b36 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Fri, 13 Aug 2021 13:13:39 +0700 Subject: [PATCH] perbaikan dan penyesuaian diskon pegawai dan keluarga pegawai untuk konsultasi rawat jalan dan test PCR covid-19 --- .../medifirst2000/dao/PelayananPasienDao.java | 20 ++++++++-- .../service/PelayananPasienService.java | 2 +- .../impl/PelayananPasienServiceImpl.java | 37 ++++++------------- .../controller/PelayananController.java | 6 ++- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java index c1439604..f4a1d9ad 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PelayananPasienDao.java @@ -158,8 +158,22 @@ public interface PelayananPasienDao extends PagingAndSortingRepository> getDataPendapatan(@Param("idJenisPegawai") int idJenisPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); - @Query("select pp from PelayananPasien pp " + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " - + "where pp.strukFk is null " + "and pd.noRegistrasi = :noRegistrasi " + "order by pp.produkId") - Iterable findLayananTagihan(@Param("noRegistrasi") String noRegistrasi); + @Query("select new Map(pp.noRec as noRec," + + "(case when :jenisDiskon = 1 and pr.id in (:listProdukId) and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) " + + "when :jenisDiskon = 1 and pr.id in (:listProdukId) and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual " + + "when :jenisDiskon = 1 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId = 18 and coalesce(pp.hargaDiscount,0) >= pp.hargaJual then coalesce(pp.hargaDiscount,0) " + + "when :jenisDiskon = 1 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId = 18 and coalesce(pp.hargaDiscount,0) < pp.hargaJual then pp.hargaJual " + + "when :jenisDiskon = 2 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId = 18 and coalesce(pp.hargaDiscount,0) >= (pp.hargaJual/2) then coalesce(pp.hargaDiscount,0) " + + "when :jenisDiskon = 2 and lower(pr.namaProduk) like '%konsul%' and ru.departemenId = 18 and coalesce(pp.hargaDiscount,0) < (pp.hargaJual/2) then (pp.hargaJual/2) " + + "when :jenisDiskon in (1,2) and pp.strukResepId is not null and coalesce(pp.hargaDiscount,0) >= (pp.hargaJual/10) then coalesce(pp.hargaDiscount,0) " + + "when :jenisDiskon in (1,2) and pp.strukResepId is not null and coalesce(pp.hargaDiscount,0) < (pp.hargaJual/10) then (pp.hargaJual/10) " + + "when :jenisDiskon in (1,2) and coalesce(pp.hargaDiscount,0) >= (pp.hargaJual/2) then coalesce(pp.hargaDiscount,0) " + + "when :jenisDiskon in (1,2) and coalesce(pp.hargaDiscount,0) < (pp.hargaJual/2) then (pp.hargaJual/2) " + + "else coalesce(pp.hargaDiscount,0) end) as hargaDiskon) " + "from PelayananPasien pp " + + "left join pp.pasienDaftar apd " + "left join apd.pasienDaftar pd " + "left join pp.produk pr " + + "left join pd.ruangan ru " + "where pp.strukFk is null " + "and pd.noRegistrasi = :noRegistrasi " + + "order by pp.produkId") + List> findLayananTagihan(@Param("noRegistrasi") String noRegistrasi, + @Param("jenisDiskon") Integer jenisDiskon, @Param("listProdukId") List listIdProduk); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java index ec76ffe1..cfd5b9a4 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PelayananPasienService.java @@ -16,6 +16,6 @@ public interface PelayananPasienService { List> hitungRemunerasiDokterDenganFfs(String tglAwal, String tglAkhir); - List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim); + List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim, Integer jenisDiskon); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java index 324d6dc5..903c43db 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PelayananPasienServiceImpl.java @@ -1,7 +1,5 @@ package com.jasamedika.medifirst2000.service.impl; -import java.math.BigDecimal; -import java.math.MathContext; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -257,29 +255,22 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel } @Override - public List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim) { + public List updateKlaimDiskonKaryawan(String noRegistrasi, Double totalKlaim, Integer jenisDiskon) { List result = new ArrayList<>(); - double totalTagihan = 0.0; - Iterable data = pelayananPasienDao.findLayananTagihan(noRegistrasi); + List listIdProdukDiskonPegawai = splitDataSettingDatafixed("listProdukDiskonPegawai"); - for (PelayananPasien pp : data) { - totalTagihan += hitungKomponenTagihan(pp); - } - if (totalKlaim >= totalTagihan) { - for (PelayananPasien pp : data) { - pp.setHargaDiscount(pp.getHargaJual()); - } - } else { - for (PelayananPasien pp : data) { - pp.setHargaDiscount(pp.getHargaDiscount() + (totalKlaim / totalTagihan * hitungKomponenTagihan(pp)) / pp.getJumlah()); - if (pp.getHargaDiscount() > pp.getHargaJual()) { - pp.setHargaDiscount(pp.getHargaJual()); - } - } + List> data = pelayananPasienDao.findLayananTagihan(noRegistrasi, jenisDiskon, + listIdProdukDiskonPegawai); + + List models = new ArrayList<>(); + for (Map map : data) { + PelayananPasien pp = pelayananPasienDao.findOne(map.get("noRec").toString()); + pp.setHargaDiscount(Double.valueOf(map.get("hargaDiskon").toString())); + models.add(pp); } - Iterable resultModels = pelayananPasienDao.save(data); + Iterable resultModels = pelayananPasienDao.save(models); if (CommonUtil.isNotNullOrEmpty(resultModels)) { for (PelayananPasien pp : resultModels) { result.add(pp.getNoRec()); @@ -289,10 +280,4 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return result; } - public Double hitungKomponenTagihan(PelayananPasien pp) { - return ((pp.getHargaJual() == null ? 0.0 : pp.getHargaJual()) - - (pp.getHargaDiscount() == null ? 0.0 : pp.getHargaDiscount())) - * (pp.getJumlah() == null ? 0.0 : pp.getJumlah()) + (pp.getJasa() == null ? 0.0 : pp.getJasa()); - } - } \ No newline at end of file diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java index 45bf6c52..8d27ac97 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/PelayananController.java @@ -361,9 +361,11 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/klaim-diskon-karyawan", method = RequestMethod.GET) public ResponseEntity> updateKlaimDiskonKaryawan(HttpServletRequest request, @RequestParam(value = "noRegistrasi", required = true) String noRegistrasi, - @RequestParam(value = "totalKlaim", required = true) Double totalKlaim) { + @RequestParam(value = "totalKlaim", required = true) Double totalKlaim, + @RequestParam(value = "jenisDiskon", required = true) Integer jenisDiskon) { try { - List result = pelayananPasienService.updateKlaimDiskonKaryawan(noRegistrasi, totalKlaim); + List result = pelayananPasienService.updateKlaimDiskonKaryawan(noRegistrasi, totalKlaim, + jenisDiskon); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);