From af91731cc024248b614937f003b68afea0f33f2c Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 17 Jul 2023 11:56:36 +0700 Subject: [PATCH] Update service pelayanan pasien Pembuatan service simpan diskon tagihan --- .../medifirst2000/dao/PelayananPasienDao.java | 22 ++++++++++--------- .../service/PelayananPasienService.java | 8 +++---- .../impl/PelayananPasienServiceImpl.java | 21 ++++++++++++++---- .../dto/TagihanPendaftaranDto.java | 21 ++---------------- .../entities/PelayananPasien.java | 22 +++++++++---------- .../controller/PelayananController.java | 22 +++++++++++++++++++ 6 files changed, 68 insertions(+), 48 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 c12f72ff..bc27a1ea 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 @@ -1,22 +1,21 @@ package com.jasamedika.medifirst2000.dao; -import java.util.Date; -import java.util.List; -import java.util.Map; - -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.PagingAndSortingRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - import com.jasamedika.medifirst2000.entities.PelayananPasien; import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; import com.jasamedika.medifirst2000.entities.StrukPelayanan; import com.jasamedika.medifirst2000.entities.StrukResep; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; +import java.util.Map; /** * Repository class for PelayananPasien - * + * * @author Generator */ @Repository("PelayananPasienDao") @@ -197,6 +196,9 @@ public interface PelayananPasienDao extends PagingAndSortingRepository findAll(@Param("noRegistrasi") String noRegistrasi); + @Query("select pp from PelayananPasien pp where pp.noRec in (:listNoRec)") + List findAll(@Param("listNoRec") List listNoRec); + @Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk," + "pr.detailJenisProdukId as idDetailJenisProduk,pr.golonganProdukId as idGolonganProduk," + "djp.jenisProdukId as idJenisProduk," + "pd.kelompokPasienId as idKelompokPasien," 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 ab3e60a2..f7f32e0e 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 @@ -1,11 +1,11 @@ package com.jasamedika.medifirst2000.service; -import java.util.List; -import java.util.Map; - import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; import com.jasamedika.medifirst2000.vo.PelayananPasienVO; +import java.util.List; +import java.util.Map; + public interface PelayananPasienService { Map savePelayananPasien(PelayananPasienVO vo); @@ -30,5 +30,5 @@ public interface PelayananPasienService { List tagihan(String noRegistrasi); - void diskonTagihan(List dto); + void diskonTagihan(List dtoList); } 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 0e5e4dad..003c41c7 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 @@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; import com.jasamedika.medifirst2000.entities.*; +import com.jasamedika.medifirst2000.exception.ServiceVOException; import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; @@ -2247,16 +2248,28 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel .namaPegawai(t.get("namaPegawai").toString()).jumlah(Double.parseDouble(t.get("jumlah").toString())) .hargaJual(Double.parseDouble(t.get("hargaJual").toString())) .hargaDiskon(Double.parseDouble(t.get("hargaDiskon").toString())) - .hargaJasa(Double.parseDouble(t.get("hargaJasa").toString())) - .totalHargaJual(Double.parseDouble(t.get("totalHargaJual").toString())); + .hargaJasa(Double.parseDouble(t.get("hargaJasa").toString())); result.add(dtoBuilder.build()); }); return result; } @Override - public void diskonTagihan(List dto) { - + public void diskonTagihan(List dtoList) { + double totalDiskon = dtoList.stream().mapToDouble(TagihanPendaftaranDto::getHargaDiskon).sum(); + if (totalDiskon > 5_000_000.00) + throw new ServiceVOException("Total Diskon melebihi Rp5.000.000,00"); + List listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList()); + List listPelayanan = pelayananPasienDao.findAll(listNoRec); + listPelayanan.forEach(p -> { + Optional dto = dtoList.stream().filter(d -> d.getNoRec().equals(p.getNoRec())) + .findFirst(); + dto.ifPresent(tagihanPendaftaranDto -> { + p.setHargaDiscount(tagihanPendaftaranDto.getHargaDiskon()); + p.setJasa(tagihanPendaftaranDto.getHargaJasa()); + }); + }); + pelayananPasienDao.save(listPelayanan); } } \ No newline at end of file diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/TagihanPendaftaranDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/TagihanPendaftaranDto.java index f47e519c..f017b987 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/TagihanPendaftaranDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/TagihanPendaftaranDto.java @@ -22,7 +22,6 @@ public class TagihanPendaftaranDto { private Double hargaJual; private Double hargaDiskon; private Double hargaJasa; - private Double totalHargaJual; public TagihanPendaftaranDto() { } @@ -30,7 +29,7 @@ public class TagihanPendaftaranDto { public TagihanPendaftaranDto(String noRec, Integer idRuangan, String namaRuangan, Date tglPelayanan, String tglPelayananStr, Integer idProduk, String namaProduk, Integer idKelas, String namaKelas, Integer idPegawai, String namaPegawai, Double jumlah, Double hargaJual, Double hargaDiskon, - Double hargaJasa, Double totalHargaJual) { + Double hargaJasa) { super(); this.noRec = noRec; this.idRuangan = idRuangan; @@ -47,7 +46,6 @@ public class TagihanPendaftaranDto { this.hargaJual = hargaJual; this.hargaDiskon = hargaDiskon; this.hargaJasa = hargaJasa; - this.totalHargaJual = totalHargaJual; } public String getNoRec() { @@ -170,14 +168,6 @@ public class TagihanPendaftaranDto { this.hargaJasa = hargaJasa; } - public Double getTotalHargaJual() { - return totalHargaJual; - } - - public void setTotalHargaJual(Double totalHargaJual) { - this.totalHargaJual = totalHargaJual; - } - public static TagihanPendaftaranDtoBuilder builder() { return new TagihanPendaftaranDtoBuilder(); } @@ -198,7 +188,6 @@ public class TagihanPendaftaranDto { private Double hargaJual; private Double hargaDiskon; private Double hargaJasa; - private Double totalHargaJual; public TagihanPendaftaranDtoBuilder() { } @@ -278,16 +267,10 @@ public class TagihanPendaftaranDto { return this; } - public TagihanPendaftaranDtoBuilder totalHargaJual(final Double totalHargaJual) { - this.totalHargaJual = totalHargaJual; - return this; - } - public TagihanPendaftaranDto build() { return new TagihanPendaftaranDto(this.noRec, this.idRuangan, this.namaRuangan, this.tglPelayanan, this.tglPelayananStr, this.idProduk, this.namaProduk, this.idKelas, this.namaKelas, this.idPegawai, - this.namaPegawai, this.jumlah, this.hargaJual, this.hargaDiskon, this.hargaJasa, - this.totalHargaJual); + this.namaPegawai, this.jumlah, this.hargaJual, this.hargaDiskon, this.hargaJasa); } } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java index a60c42b1..a5d0834f 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PelayananPasien.java @@ -21,7 +21,7 @@ import com.jasamedika.medifirst2000.helper.Caption; @Table(name = "PelayananPasien_T") public class PelayananPasien extends MedicalRecordTransaction { - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "Generik") @Caption(value = "Generik") private Generik generik; @@ -37,7 +37,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "jasa") private Double jasa; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "KelasFk") @Caption(value = "Produk") private Kelas kelas; @@ -123,7 +123,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "piutangRumahSakit", nullable = true) private Double piutangRumahSakit; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "NoBatch") @Caption(value = "Struk Order") private StrukPelayananDNoBatch noBatch; @@ -131,7 +131,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "NoBatch", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true) private String noBatchId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "satuanViewFK") @Caption(value = "satuanView") private SatuanStandar satuanView; @@ -147,7 +147,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "StrukOrderFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) private String strukOrderId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "JenisObatFk") @Caption(value = "Jenis Obat") private JenisObat jenisObat; @@ -155,7 +155,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "JenisObatFk", insertable = false, updatable = false) private Integer jenisObatId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ProdukFk") @NotNull(message = "Produk Harus Diisi") @Caption(value = "Produk") @@ -176,7 +176,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Caption(value = "AturanPakai") private String aturanPakai; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "RouteFk") @Caption(value = "Route") private RouteFarmasi route; @@ -184,7 +184,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "RouteFk", insertable = false, updatable = false) private Integer routeId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "KeteranganPakaiFk") @Caption(value = "Keterangan Pakai") private Stigma keteranganPakai; @@ -196,7 +196,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Caption(value = "KeteranganPakai2") private String keteranganPakai2; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @Caption(value = "Kelompok Transaksi") @JoinColumn(name = "KdKelompokTransaksi") private KelompokTransaksi kelompokTransaksi; @@ -224,7 +224,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "noRecTriger", nullable = true) private String noRecTriger; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "StrukResepFk") @Caption(value = "StrukResep") private StrukResep strukResep; @@ -232,7 +232,7 @@ public class PelayananPasien extends MedicalRecordTransaction { @Column(name = "StrukResepFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true) private String strukResepId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @Caption(value = "JenisKemasan") @JoinColumn(name = "JenisKemasanFK") private JenisKemasan jenisKemasan; 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 33c9f71e..0599abfd 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 @@ -22,6 +22,8 @@ import org.springframework.orm.jpa.JpaSystemException; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; + +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -214,4 +216,24 @@ public class PelayananController extends LocaleController { return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } } + + @RequestMapping(value = "/tagihan/diskon/save", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity simpanDiskonTagihan(HttpServletRequest request, + @RequestBody List dtoList) { + try { + pelayananPasienService.diskonTagihan(dtoList); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(dtoList, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException e) { + LOGGER.error("Got exception {} when simpan diskon tagihan {}", e.getMessage(), null); + Map error = new HashMap(); + error.put("bad-request", e.getMessage()); + return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when simpan diskon tagihan {}", jse.getMessage(), null); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } }