Update service pelayanan pasien

Pembuatan service simpan diskon tagihan
This commit is contained in:
Salman Manoe 2023-07-17 11:56:36 +07:00
parent 6ea45a2a35
commit af91731cc0
6 changed files with 68 additions and 48 deletions

View File

@ -1,22 +1,21 @@
package com.jasamedika.medifirst2000.dao; 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.PelayananPasien;
import com.jasamedika.medifirst2000.entities.PelayananPasienDetail; import com.jasamedika.medifirst2000.entities.PelayananPasienDetail;
import com.jasamedika.medifirst2000.entities.StrukPelayanan; import com.jasamedika.medifirst2000.entities.StrukPelayanan;
import com.jasamedika.medifirst2000.entities.StrukResep; 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 * Repository class for PelayananPasien
* *
* @author Generator * @author Generator
*/ */
@Repository("PelayananPasienDao") @Repository("PelayananPasienDao")
@ -197,6 +196,9 @@ public interface PelayananPasienDao extends PagingAndSortingRepository<Pelayanan
+ "and pd.noRegistrasi = :noRegistrasi") + "and pd.noRegistrasi = :noRegistrasi")
List<PelayananPasien> findAll(@Param("noRegistrasi") String noRegistrasi); List<PelayananPasien> findAll(@Param("noRegistrasi") String noRegistrasi);
@Query("select pp from PelayananPasien pp where pp.noRec in (:listNoRec)")
List<PelayananPasien> findAll(@Param("listNoRec") List<String> listNoRec);
@Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk," @Query("select new Map(pr.id as idProduk,pr.namaProduk as namaProduk,"
+ "pr.detailJenisProdukId as idDetailJenisProduk,pr.golonganProdukId as idGolonganProduk," + "pr.detailJenisProdukId as idDetailJenisProduk,pr.golonganProdukId as idGolonganProduk,"
+ "djp.jenisProdukId as idJenisProduk," + "pd.kelompokPasienId as idKelompokPasien," + "djp.jenisProdukId as idJenisProduk," + "pd.kelompokPasienId as idKelompokPasien,"

View File

@ -1,11 +1,11 @@
package com.jasamedika.medifirst2000.service; package com.jasamedika.medifirst2000.service;
import java.util.List;
import java.util.Map;
import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto;
import com.jasamedika.medifirst2000.vo.PelayananPasienVO; import com.jasamedika.medifirst2000.vo.PelayananPasienVO;
import java.util.List;
import java.util.Map;
public interface PelayananPasienService { public interface PelayananPasienService {
Map<String, Object> savePelayananPasien(PelayananPasienVO vo); Map<String, Object> savePelayananPasien(PelayananPasienVO vo);
@ -30,5 +30,5 @@ public interface PelayananPasienService {
List<TagihanPendaftaranDto> tagihan(String noRegistrasi); List<TagihanPendaftaranDto> tagihan(String noRegistrasi);
void diskonTagihan(List<TagihanPendaftaranDto> dto); void diskonTagihan(List<TagihanPendaftaranDto> dtoList);
} }

View File

@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dao.*;
import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto; import com.jasamedika.medifirst2000.dto.TagihanPendaftaranDto;
import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil; 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())) .namaPegawai(t.get("namaPegawai").toString()).jumlah(Double.parseDouble(t.get("jumlah").toString()))
.hargaJual(Double.parseDouble(t.get("hargaJual").toString())) .hargaJual(Double.parseDouble(t.get("hargaJual").toString()))
.hargaDiskon(Double.parseDouble(t.get("hargaDiskon").toString())) .hargaDiskon(Double.parseDouble(t.get("hargaDiskon").toString()))
.hargaJasa(Double.parseDouble(t.get("hargaJasa").toString())) .hargaJasa(Double.parseDouble(t.get("hargaJasa").toString()));
.totalHargaJual(Double.parseDouble(t.get("totalHargaJual").toString()));
result.add(dtoBuilder.build()); result.add(dtoBuilder.build());
}); });
return result; return result;
} }
@Override @Override
public void diskonTagihan(List<TagihanPendaftaranDto> dto) { public void diskonTagihan(List<TagihanPendaftaranDto> 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<String> listNoRec = dtoList.stream().map(TagihanPendaftaranDto::getNoRec).collect(Collectors.toList());
List<PelayananPasien> listPelayanan = pelayananPasienDao.findAll(listNoRec);
listPelayanan.forEach(p -> {
Optional<TagihanPendaftaranDto> 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);
} }
} }

View File

@ -22,7 +22,6 @@ public class TagihanPendaftaranDto {
private Double hargaJual; private Double hargaJual;
private Double hargaDiskon; private Double hargaDiskon;
private Double hargaJasa; private Double hargaJasa;
private Double totalHargaJual;
public TagihanPendaftaranDto() { public TagihanPendaftaranDto() {
} }
@ -30,7 +29,7 @@ public class TagihanPendaftaranDto {
public TagihanPendaftaranDto(String noRec, Integer idRuangan, String namaRuangan, Date tglPelayanan, public TagihanPendaftaranDto(String noRec, Integer idRuangan, String namaRuangan, Date tglPelayanan,
String tglPelayananStr, Integer idProduk, String namaProduk, Integer idKelas, String namaKelas, String tglPelayananStr, Integer idProduk, String namaProduk, Integer idKelas, String namaKelas,
Integer idPegawai, String namaPegawai, Double jumlah, Double hargaJual, Double hargaDiskon, Integer idPegawai, String namaPegawai, Double jumlah, Double hargaJual, Double hargaDiskon,
Double hargaJasa, Double totalHargaJual) { Double hargaJasa) {
super(); super();
this.noRec = noRec; this.noRec = noRec;
this.idRuangan = idRuangan; this.idRuangan = idRuangan;
@ -47,7 +46,6 @@ public class TagihanPendaftaranDto {
this.hargaJual = hargaJual; this.hargaJual = hargaJual;
this.hargaDiskon = hargaDiskon; this.hargaDiskon = hargaDiskon;
this.hargaJasa = hargaJasa; this.hargaJasa = hargaJasa;
this.totalHargaJual = totalHargaJual;
} }
public String getNoRec() { public String getNoRec() {
@ -170,14 +168,6 @@ public class TagihanPendaftaranDto {
this.hargaJasa = hargaJasa; this.hargaJasa = hargaJasa;
} }
public Double getTotalHargaJual() {
return totalHargaJual;
}
public void setTotalHargaJual(Double totalHargaJual) {
this.totalHargaJual = totalHargaJual;
}
public static TagihanPendaftaranDtoBuilder builder() { public static TagihanPendaftaranDtoBuilder builder() {
return new TagihanPendaftaranDtoBuilder(); return new TagihanPendaftaranDtoBuilder();
} }
@ -198,7 +188,6 @@ public class TagihanPendaftaranDto {
private Double hargaJual; private Double hargaJual;
private Double hargaDiskon; private Double hargaDiskon;
private Double hargaJasa; private Double hargaJasa;
private Double totalHargaJual;
public TagihanPendaftaranDtoBuilder() { public TagihanPendaftaranDtoBuilder() {
} }
@ -278,16 +267,10 @@ public class TagihanPendaftaranDto {
return this; return this;
} }
public TagihanPendaftaranDtoBuilder totalHargaJual(final Double totalHargaJual) {
this.totalHargaJual = totalHargaJual;
return this;
}
public TagihanPendaftaranDto build() { public TagihanPendaftaranDto build() {
return new TagihanPendaftaranDto(this.noRec, this.idRuangan, this.namaRuangan, this.tglPelayanan, return new TagihanPendaftaranDto(this.noRec, this.idRuangan, this.namaRuangan, this.tglPelayanan,
this.tglPelayananStr, this.idProduk, this.namaProduk, this.idKelas, this.namaKelas, this.idPegawai, this.tglPelayananStr, this.idProduk, this.namaProduk, this.idKelas, this.namaKelas, this.idPegawai,
this.namaPegawai, this.jumlah, this.hargaJual, this.hargaDiskon, this.hargaJasa, this.namaPegawai, this.jumlah, this.hargaJual, this.hargaDiskon, this.hargaJasa);
this.totalHargaJual);
} }
} }
} }

View File

@ -21,7 +21,7 @@ import com.jasamedika.medifirst2000.helper.Caption;
@Table(name = "PelayananPasien_T") @Table(name = "PelayananPasien_T")
public class PelayananPasien extends MedicalRecordTransaction { public class PelayananPasien extends MedicalRecordTransaction {
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Generik") @JoinColumn(name = "Generik")
@Caption(value = "Generik") @Caption(value = "Generik")
private Generik generik; private Generik generik;
@ -37,7 +37,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "jasa") @Column(name = "jasa")
private Double jasa; private Double jasa;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "KelasFk") @JoinColumn(name = "KelasFk")
@Caption(value = "Produk") @Caption(value = "Produk")
private Kelas kelas; private Kelas kelas;
@ -123,7 +123,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "piutangRumahSakit", nullable = true) @Column(name = "piutangRumahSakit", nullable = true)
private Double piutangRumahSakit; private Double piutangRumahSakit;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "NoBatch") @JoinColumn(name = "NoBatch")
@Caption(value = "Struk Order") @Caption(value = "Struk Order")
private StrukPelayananDNoBatch noBatch; private StrukPelayananDNoBatch noBatch;
@ -131,7 +131,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "NoBatch", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true) @Column(name = "NoBatch", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true)
private String noBatchId; private String noBatchId;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "satuanViewFK") @JoinColumn(name = "satuanViewFK")
@Caption(value = "satuanView") @Caption(value = "satuanView")
private SatuanStandar satuanView; private SatuanStandar satuanView;
@ -147,7 +147,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "StrukOrderFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false) @Column(name = "StrukOrderFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false)
private String strukOrderId; private String strukOrderId;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "JenisObatFk") @JoinColumn(name = "JenisObatFk")
@Caption(value = "Jenis Obat") @Caption(value = "Jenis Obat")
private JenisObat jenisObat; private JenisObat jenisObat;
@ -155,7 +155,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "JenisObatFk", insertable = false, updatable = false) @Column(name = "JenisObatFk", insertable = false, updatable = false)
private Integer jenisObatId; private Integer jenisObatId;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ProdukFk") @JoinColumn(name = "ProdukFk")
@NotNull(message = "Produk Harus Diisi") @NotNull(message = "Produk Harus Diisi")
@Caption(value = "Produk") @Caption(value = "Produk")
@ -176,7 +176,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Caption(value = "AturanPakai") @Caption(value = "AturanPakai")
private String aturanPakai; private String aturanPakai;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "RouteFk") @JoinColumn(name = "RouteFk")
@Caption(value = "Route") @Caption(value = "Route")
private RouteFarmasi route; private RouteFarmasi route;
@ -184,7 +184,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "RouteFk", insertable = false, updatable = false) @Column(name = "RouteFk", insertable = false, updatable = false)
private Integer routeId; private Integer routeId;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "KeteranganPakaiFk") @JoinColumn(name = "KeteranganPakaiFk")
@Caption(value = "Keterangan Pakai") @Caption(value = "Keterangan Pakai")
private Stigma keteranganPakai; private Stigma keteranganPakai;
@ -196,7 +196,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Caption(value = "KeteranganPakai2") @Caption(value = "KeteranganPakai2")
private String keteranganPakai2; private String keteranganPakai2;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@Caption(value = "Kelompok Transaksi") @Caption(value = "Kelompok Transaksi")
@JoinColumn(name = "KdKelompokTransaksi") @JoinColumn(name = "KdKelompokTransaksi")
private KelompokTransaksi kelompokTransaksi; private KelompokTransaksi kelompokTransaksi;
@ -224,7 +224,7 @@ public class PelayananPasien extends MedicalRecordTransaction {
@Column(name = "noRecTriger", nullable = true) @Column(name = "noRecTriger", nullable = true)
private String noRecTriger; private String noRecTriger;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "StrukResepFk") @JoinColumn(name = "StrukResepFk")
@Caption(value = "StrukResep") @Caption(value = "StrukResep")
private StrukResep 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) @Column(name = "StrukResepFk", columnDefinition = "CHAR(32)", insertable = false, updatable = false, nullable = true)
private String strukResepId; private String strukResepId;
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@Caption(value = "JenisKemasan") @Caption(value = "JenisKemasan")
@JoinColumn(name = "JenisKemasanFK") @JoinColumn(name = "JenisKemasanFK")
private JenisKemasan jenisKemasan; private JenisKemasan jenisKemasan;

View File

@ -22,6 +22,8 @@ import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -214,4 +216,24 @@ public class PelayananController extends LocaleController<PelayananPasienVO> {
return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); 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<Object> simpanDiskonTagihan(HttpServletRequest request,
@RequestBody List<TagihanPendaftaranDto> 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<String, String> error = new HashMap<String, String>();
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);
}
}
} }