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 6f29d702..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," @@ -269,4 +271,16 @@ public interface PelayananPasienDao extends PagingAndSortingRepository> findPelayananPasienByPetugasAndPelayananPasien(@Param("pegawaiId") Integer idPegawai, @Param("norecs") List norecs); + + @Query("select new Map(pp.noRec as noRec," + "ru.id as idRuangan,ru.namaRuangan as namaRuangan," + + "pp.tglPelayanan as tglPelayanan,to_char(pp.tglPelayanan,'dd/MM/yyyy') as tglPelayananStr," + + "pr.id as idProduk,pr.namaProduk as namaProduk," + "kls.id as idKelas,kls.namaKelas as namaKelas," + + "pg.id as idPegawai,pg.namaLengkap as namaPegawai," + + "coalesce(pp.jumlah,0) as jumlah,coalesce(pp.hargaJual,0) as hargaJual,coalesce(pp.hargaDiscount,0) as hargaDiskon,coalesce(pp.jasa,0) as hargaJasa," + + "((coalesce(pp.hargaJual,0)-coalesce(pp.hargaDiscount,0))*coalesce(pp.jumlah,0)+coalesce(pp.jasa,0)) as totalHargaJual) " + + "from PelayananPasienPetugas ppp " + "inner join ppp.pelayananPasien pp " + + "inner join pp.pasienDaftar apd " + "inner join apd.pasienDaftar pd " + "inner join apd.ruangan ru " + + "inner join pp.produk pr " + "inner join pp.kelas kls " + "inner join ppp.kdpegawai pg " + + "where pd.noRegistrasi = :noRegistrasi") + List> findPelayananPasienByTagihanPendaftaran(@Param("noRegistrasi") String noRegistrasi); } 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 14c4c789..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,10 +1,11 @@ package com.jasamedika.medifirst2000.service; +import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; +import com.jasamedika.medifirst2000.vo.PelayananPasienVO; + import java.util.List; import java.util.Map; -import com.jasamedika.medifirst2000.vo.PelayananPasienVO; - public interface PelayananPasienService { Map savePelayananPasien(PelayananPasienVO vo); @@ -26,4 +27,8 @@ public interface PelayananPasienService { List> logbookFfsTarifDokter(Integer idPegawai, String bulan); List> detailLogbookTarifDokter(Integer idPegawai, List norecs); + + List tagihan(String noRegistrasi); + + 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 c9e8d639..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 @@ -3,7 +3,9 @@ package com.jasamedika.medifirst2000.service.impl; import com.jasamedika.medifirst2000.constants.Master; 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; @@ -2231,4 +2233,43 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel return pelayananPasienDao.findPelayananPasienByPetugasAndPelayananPasien(idPegawai, norecs); } + @Override + public List tagihan(String noRegistrasi) { + List result = new ArrayList<>(); + TagihanPendaftaranDto.TagihanPendaftaranDtoBuilder dtoBuilder = TagihanPendaftaranDto.builder(); + List> tagihan = pelayananPasienDao.findPelayananPasienByTagihanPendaftaran(noRegistrasi); + tagihan.forEach(t -> { + dtoBuilder.noRec(t.get("noRec").toString()).idRuangan(Integer.parseInt(t.get("idRuangan").toString())) + .namaRuangan(t.get("namaRuangan").toString()).tglPelayanan((Date) t.get("tglPelayanan")) + .tglPelayananStr(t.get("tglPelayananStr").toString()) + .idProduk(Integer.parseInt(t.get("idProduk").toString())).namaProduk(t.get("namaProduk").toString()) + .idKelas(Integer.parseInt(t.get("idKelas").toString())).namaKelas(t.get("namaKelas").toString()) + .idPegawai(Integer.parseInt(t.get("idPegawai").toString())) + .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())); + result.add(dtoBuilder.build()); + }); + return result; + } + + @Override + 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 new file mode 100644 index 00000000..f017b987 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/TagihanPendaftaranDto.java @@ -0,0 +1,276 @@ +package com.jasamedika.medifirst2000.dto; + +import java.util.Date; + +/** + * @author salmanoe + * @since 14 Jul 2023 + */ +public class TagihanPendaftaranDto { + private String noRec; + private Integer idRuangan; + private String namaRuangan; + private Date tglPelayanan; + private String tglPelayananStr; + private Integer idProduk; + private String namaProduk; + private Integer idKelas; + private String namaKelas; + private Integer idPegawai; + private String namaPegawai; + private Double jumlah; + private Double hargaJual; + private Double hargaDiskon; + private Double hargaJasa; + + public 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) { + super(); + this.noRec = noRec; + this.idRuangan = idRuangan; + this.namaRuangan = namaRuangan; + this.tglPelayanan = tglPelayanan; + this.tglPelayananStr = tglPelayananStr; + this.idProduk = idProduk; + this.namaProduk = namaProduk; + this.idKelas = idKelas; + this.namaKelas = namaKelas; + this.idPegawai = idPegawai; + this.namaPegawai = namaPegawai; + this.jumlah = jumlah; + this.hargaJual = hargaJual; + this.hargaDiskon = hargaDiskon; + this.hargaJasa = hargaJasa; + } + + public String getNoRec() { + return noRec; + } + + public void setNoRec(String noRec) { + this.noRec = noRec; + } + + public Integer getIdRuangan() { + return idRuangan; + } + + public void setIdRuangan(Integer idRuangan) { + this.idRuangan = idRuangan; + } + + public String getNamaRuangan() { + return namaRuangan; + } + + public void setNamaRuangan(String namaRuangan) { + this.namaRuangan = namaRuangan; + } + + public Date getTglPelayanan() { + return tglPelayanan; + } + + public void setTglPelayanan(Date tglPelayanan) { + this.tglPelayanan = tglPelayanan; + } + + public String getTglPelayananStr() { + return tglPelayananStr; + } + + public void setTglPelayananStr(String tglPelayananStr) { + this.tglPelayananStr = tglPelayananStr; + } + + public Integer getIdProduk() { + return idProduk; + } + + public void setIdProduk(Integer idProduk) { + this.idProduk = idProduk; + } + + public String getNamaProduk() { + return namaProduk; + } + + public void setNamaProduk(String namaProduk) { + this.namaProduk = namaProduk; + } + + public Integer getIdKelas() { + return idKelas; + } + + public void setIdKelas(Integer idKelas) { + this.idKelas = idKelas; + } + + public String getNamaKelas() { + return namaKelas; + } + + public void setNamaKelas(String namaKelas) { + this.namaKelas = namaKelas; + } + + public Integer getIdPegawai() { + return idPegawai; + } + + public void setIdPegawai(Integer idPegawai) { + this.idPegawai = idPegawai; + } + + public String getNamaPegawai() { + return namaPegawai; + } + + public void setNamaPegawai(String namaPegawai) { + this.namaPegawai = namaPegawai; + } + + public Double getJumlah() { + return jumlah; + } + + public void setJumlah(Double jumlah) { + this.jumlah = jumlah; + } + + public Double getHargaJual() { + return hargaJual; + } + + public void setHargaJual(Double hargaJual) { + this.hargaJual = hargaJual; + } + + public Double getHargaDiskon() { + return hargaDiskon; + } + + public void setHargaDiskon(Double hargaDiskon) { + this.hargaDiskon = hargaDiskon; + } + + public Double getHargaJasa() { + return hargaJasa; + } + + public void setHargaJasa(Double hargaJasa) { + this.hargaJasa = hargaJasa; + } + + public static TagihanPendaftaranDtoBuilder builder() { + return new TagihanPendaftaranDtoBuilder(); + } + + public static class TagihanPendaftaranDtoBuilder { + private String noRec; + private Integer idRuangan; + private String namaRuangan; + private Date tglPelayanan; + private String tglPelayananStr; + private Integer idProduk; + private String namaProduk; + private Integer idKelas; + private String namaKelas; + private Integer idPegawai; + private String namaPegawai; + private Double jumlah; + private Double hargaJual; + private Double hargaDiskon; + private Double hargaJasa; + + public TagihanPendaftaranDtoBuilder() { + } + + public TagihanPendaftaranDtoBuilder noRec(final String noRec) { + this.noRec = noRec; + return this; + } + + public TagihanPendaftaranDtoBuilder idRuangan(final Integer idRuangan) { + this.idRuangan = idRuangan; + return this; + } + + public TagihanPendaftaranDtoBuilder namaRuangan(final String namaRuangan) { + this.namaRuangan = namaRuangan; + return this; + } + + public TagihanPendaftaranDtoBuilder tglPelayanan(final Date tglPelayanan) { + this.tglPelayanan = tglPelayanan; + return this; + } + + public TagihanPendaftaranDtoBuilder tglPelayananStr(final String tglPelayananStr) { + this.tglPelayananStr = tglPelayananStr; + return this; + } + + public TagihanPendaftaranDtoBuilder idProduk(final Integer idProduk) { + this.idProduk = idProduk; + return this; + } + + public TagihanPendaftaranDtoBuilder namaProduk(final String namaProduk) { + this.namaProduk = namaProduk; + return this; + } + + public TagihanPendaftaranDtoBuilder idKelas(final Integer idKelas) { + this.idKelas = idKelas; + return this; + } + + public TagihanPendaftaranDtoBuilder namaKelas(final String namaKelas) { + this.namaKelas = namaKelas; + return this; + } + + public TagihanPendaftaranDtoBuilder idPegawai(final Integer idPegawai) { + this.idPegawai = idPegawai; + return this; + } + + public TagihanPendaftaranDtoBuilder namaPegawai(final String namaPegawai) { + this.namaPegawai = namaPegawai; + return this; + } + + public TagihanPendaftaranDtoBuilder jumlah(final Double jumlah) { + this.jumlah = jumlah; + return this; + } + + public TagihanPendaftaranDtoBuilder hargaJual(final Double hargaJual) { + this.hargaJual = hargaJual; + return this; + } + + public TagihanPendaftaranDtoBuilder hargaDiskon(final Double hargaDiskon) { + this.hargaDiskon = hargaDiskon; + return this; + } + + public TagihanPendaftaranDtoBuilder hargaJasa(final Double hargaJasa) { + this.hargaJasa = hargaJasa; + 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); + } + } +} 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 76443cc9..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 @@ -1,12 +1,17 @@ package com.jasamedika.medifirst2000.controller; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - +import com.jasamedika.medifirst2000.constants.Constants; +import com.jasamedika.medifirst2000.constants.MessageResource; +import com.jasamedika.medifirst2000.controller.base.LocaleController; +import com.jasamedika.medifirst2000.core.web.WebConstants; +import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.PasienDaftarService; +import com.jasamedika.medifirst2000.service.PelayananPasienService; +import com.jasamedika.medifirst2000.service.ProdukService; +import com.jasamedika.medifirst2000.service.SatuanStandarService; +import com.jasamedika.medifirst2000.util.rest.RestUtil; +import com.jasamedika.medifirst2000.vo.PelayananPasienVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -14,23 +19,13 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; -import com.jasamedika.medifirst2000.constants.Constants; -import com.jasamedika.medifirst2000.constants.MessageResource; -import com.jasamedika.medifirst2000.controller.base.LocaleController; -import com.jasamedika.medifirst2000.core.web.WebConstants; -import com.jasamedika.medifirst2000.exception.ServiceVOException; -import com.jasamedika.medifirst2000.service.PasienDaftarService; -import com.jasamedika.medifirst2000.service.PelayananPasienService; -import com.jasamedika.medifirst2000.service.ProdukService; -import com.jasamedika.medifirst2000.service.ResepDokterService; -import com.jasamedika.medifirst2000.service.SatuanStandarService; -import com.jasamedika.medifirst2000.util.rest.RestUtil; -import com.jasamedika.medifirst2000.vo.PelayananPasienVO; +import javax.servlet.http.HttpServletRequest; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; @RestController @RequestMapping("/pelayanan") @@ -50,12 +45,9 @@ public class PelayananController extends LocaleController { @Autowired private SatuanStandarService satuanStandarService; - @Autowired - private ResepDokterService resepDokterService; - @RequestMapping(value = "/calculate-indikator-pelayanan", method = RequestMethod.GET) public ResponseEntity>> calculateIndikatorPelayanan(HttpServletRequest request, - @RequestParam("tahun") String tahun) throws ParseException { + @RequestParam("tahun") String tahun) { try { List> result = pasienDaftarService.findIndikatorPelayanan(tahun); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, @@ -75,7 +67,7 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/validate-nama-produk", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> validateNamaProduk(HttpServletRequest request, @RequestParam(value = "idProduk", required = false) Integer idProduk, - @RequestParam(value = "namaProduk", required = true) String namaProduk) { + @RequestParam(value = "namaProduk") String namaProduk) { try { Map result = produkService.validateNamaProduk(idProduk, namaProduk); @@ -93,7 +85,7 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/paket-to-produk", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> getMappingPaketToProduk(HttpServletRequest request, - @RequestParam(value = "idMapping", required = true) Integer idMapping) { + @RequestParam(value = "idMapping") Integer idMapping) { try { Map result = produkService.getMappingPaketToProduk(idMapping); return RestUtil.getJsonResponse(result, HttpStatus.OK); @@ -128,9 +120,8 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/master-satuan-standar", method = RequestMethod.GET) public ResponseEntity>> getAllMasterSatuanStandar(HttpServletRequest request) { - List> result = new ArrayList<>(); try { - result = satuanStandarService.getAll(); + List> result = satuanStandarService.getAll(); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, getMessage(MessageResource.LABEL_SUCCESS, request)); return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); @@ -147,9 +138,9 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/klaim-diskon", method = RequestMethod.GET) public ResponseEntity> KlaimDiskon(HttpServletRequest request, - @RequestParam(value = "noRegistrasi", required = true) String noRegistrasi, - @RequestParam(value = "totalKlaim", required = true) Double totalKlaim, - @RequestParam(value = "jenisDiskon", required = true) Integer jenisDiskon) { + @RequestParam(value = "noRegistrasi") String noRegistrasi, + @RequestParam(value = "totalKlaim") Double totalKlaim, + @RequestParam(value = "jenisDiskon") Integer jenisDiskon) { try { List result = pelayananPasienService.updateKlaimDiskon(noRegistrasi, totalKlaim, jenisDiskon); mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, @@ -188,8 +179,7 @@ public class PelayananController extends LocaleController { @RequestMapping(value = "/check-existing-harga-produk-kelas", method = RequestMethod.GET) public ResponseEntity>> checkExistingHargaProdukKelas(HttpServletRequest request, - @RequestParam(value = "kelasId", required = true) Integer idKelas, - @RequestParam(value = "produkId", required = true) Integer idProduk, + @RequestParam(value = "kelasId") Integer idKelas, @RequestParam(value = "produkId") Integer idProduk, @RequestParam(value = "mappingId", required = false) Integer idMapping) { try { List> result = produkService.findExistingMapHargaKelas(idKelas, idProduk, idMapping); @@ -207,4 +197,43 @@ public class PelayananController extends LocaleController { return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); } } + + @RequestMapping(value = "/tagihan/daftar/{noRegistrasi}", method = RequestMethod.GET) + public ResponseEntity> daftarTagihan(HttpServletRequest request, + @PathVariable String noRegistrasi) { + try { + List result = pelayananPasienService.tagihan(noRegistrasi); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException e) { + LOGGER.error("Got exception {} when get daftar tagihan {}", e.getMessage(), noRegistrasi); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when get daftar tagihan {}", jse.getMessage(), noRegistrasi); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + 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); + } + } }