Update service pelayanan pasien

Rombak tabel mapping paket untuk validasi jumlah list tindakan paket
This commit is contained in:
Salman Manoe 2023-09-21 16:37:13 +07:00
parent c26c8ff975
commit 4d85001b0c
9 changed files with 177 additions and 189 deletions

View File

@ -0,0 +1,12 @@
package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.entities.MapProdukPaket;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author Salman Manoe
* @version 1.0.0
* @since 21 Sep 2023
*/
public interface MapProdukPaketDao extends JpaRepository<MapProdukPaket, String> {
}

View File

@ -2,6 +2,8 @@ package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk; import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List; import java.util.List;
@ -16,26 +18,7 @@ public interface MapProdukPaketToProdukDao extends JpaRepository<MapProdukPaketT
* id produk yang dijadikan nama paket * id produk yang dijadikan nama paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk * @return daftar mapping antara produk paket dan paketnya sebagai produk
*/ */
List<MapProdukPaketToProduk> findAllByPaketId(Integer paketId); @Query("select mpaket from MapProdukPaketToProduk mpaket " + "inner join mpaket.produkPaket mproduk "
+ "where mproduk.paketId = :paketId")
/** List<MapProdukPaketToProduk> findAllByPaketId(@Param("paketId") Integer paketId);
* @param paketId
* id produk yang dijadikan nama paket
* @param produkPaketId
* id produk breakdown di dalam paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByPaketIdAndProdukPaketId(Integer paketId, Integer produkPaketId);
/**
* @param paketId
* id produk yang dijadikan nama paket
* @param produkPaketId
* id produk breakdown di dalam paket
* @param noRec
* identifier mapping paket dan produk
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByPaketIdAndProdukPaketIdAndNoRecNot(Integer paketId, Integer produkPaketId,
String noRec);
} }

View File

@ -23,10 +23,10 @@ public interface VoucherPaketDao extends JpaRepository<VoucherPaket, String> {
*/ */
VoucherPaket findByKode(String kode); VoucherPaket findByKode(String kode);
@Query("select new Map(vp.noRec as idVoucher,vp.paketId as idPaket," @Query("select new Map(vp.noRec as idVoucher,vp.paketId as idPaket," + "mpaket.produkId as idProduk,"
+ "mpaket.produkId as idProduk,mpaket.produkPaketId as idProdukPaket," + "mproduk.produkPaketId as idProdukPaket," + "mproduk.jenisMapping as jenisMapping) "
+ "mpaket.jenisMapping as jenisMapping) " + "from VoucherPaket vp, MapProdukPaketToProduk mpaket " + "from MapProdukPaketToProduk mpaket " + "inner join mpaket.produkPaket mproduk, VoucherPaket vp "
+ "where vp.paketId = mpaket.paketId " + "and vp.isSelesai is true and vp.isBatal is false " + "where vp.paketId = mproduk.paketId " + "and vp.isSelesai is true and vp.isBatal is false "
+ "and vp.noRec in (:listNorec)") + "and vp.noRec in (:listNorec)")
List<Map<String, Object>> findPelayananPaket(@Param("listNorec") List<String> listIdVoucherPaket); List<Map<String, Object>> findPelayananPaket(@Param("listNorec") List<String> listIdVoucherPaket);
} }

View File

@ -1,25 +1,22 @@
package com.jasamedika.medifirst2000.service.impl; package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.converter.base.BaseVoConverter; import com.jasamedika.medifirst2000.converter.base.BaseVoConverter;
import com.jasamedika.medifirst2000.dao.MapProdukPaketToProdukDao; import com.jasamedika.medifirst2000.dao.MapProdukPaketToProdukDao;
import com.jasamedika.medifirst2000.dao.ProdukDao; import com.jasamedika.medifirst2000.dao.ProdukDao;
import com.jasamedika.medifirst2000.entities.MapProdukPaket;
import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk; import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk;
import com.jasamedika.medifirst2000.entities.Produk; import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.entities.ProdukDto; import com.jasamedika.medifirst2000.entities.ProdukDto;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.MapProdukPaketToProdukService; import com.jasamedika.medifirst2000.service.MapProdukPaketToProdukService;
import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.MapProdukPaketToProdukVO; import com.jasamedika.medifirst2000.vo.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.vo.MapProdukPaketVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/** /**
* @author Salman * @author Salman
@ -29,8 +26,12 @@ import com.jasamedika.medifirst2000.vo.MapProdukPaketToProdukVO;
@Service @Service
@Transactional @Transactional
public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProdukService { public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProdukService {
@Autowired @Autowired
private BaseVoConverter<MapProdukPaketToProdukVO, MapProdukPaketToProduk> mapProdukPaketConverter; private BaseVoConverter<MapProdukPaketVO, MapProdukPaket> mapProdukPaketConverter;
@Autowired
private BaseVoConverter<MapProdukPaketToProdukVO, MapProdukPaketToProduk> mapPaketProdukConverter;
@Autowired @Autowired
private MapProdukPaketToProdukDao mapProdukPaketToProdukDao; private MapProdukPaketToProdukDao mapProdukPaketToProdukDao;
@ -41,16 +42,11 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
@Override @Override
public void save(MapProdukPaketToProdukVO vo) { public void save(MapProdukPaketToProdukVO vo) {
MapProdukPaketToProduk model = new MapProdukPaketToProduk(); MapProdukPaketToProduk model = new MapProdukPaketToProduk();
model = mapProdukPaketConverter.transferVOToModel(vo, model); model = mapPaketProdukConverter.transferVOToModel(vo, model);
{ {
Produk paket = new Produk(); MapProdukPaket mapProdukPaket = new MapProdukPaket();
paket.setId(vo.getPaket().getId()); mapProdukPaket.setNoRec(vo.getProdukPaket().getNoRec());
model.setPaket(paket); model.setProdukPaket(mapProdukPaket);
}
{
Produk produkPaket = new Produk();
produkPaket.setId(vo.getProdukPaket().getId());
model.setProdukPaket(produkPaket);
} }
{ {
Produk produk = new Produk(); Produk produk = new Produk();
@ -63,72 +59,11 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
@Override @Override
public List<MapProdukPaketToProdukVO> get() { public List<MapProdukPaketToProdukVO> get() {
List<MapProdukPaketToProduk> models = mapProdukPaketToProdukDao.findAll();
if (CommonUtil.isNotNullOrEmpty(models)) {
Set<Integer> setIdPaket = models.stream().map(MapProdukPaketToProduk::getPaketId)
.collect(Collectors.toSet());
List<Integer> listIdPaket = new ArrayList<>(setIdPaket);
List<Produk> listPaket = produkDao.findAllByIds(listIdPaket);
Set<Integer> setIdProdukPaket = models.stream().map(MapProdukPaketToProduk::getProdukPaketId)
.collect(Collectors.toSet());
List<Integer> listIdProdukPaket = new ArrayList<>(setIdProdukPaket);
List<Produk> listProdukPaket = produkDao.findAllByIds(listIdProdukPaket);
Set<Integer> setIdProduk = models.stream().map(MapProdukPaketToProduk::getProdukId)
.collect(Collectors.toSet());
List<Integer> listIdProduk = new ArrayList<>(setIdProduk);
List<Produk> listProduk = produkDao.findAllByIds(listIdProduk);
List<MapProdukPaketToProdukVO> result = models.stream()
.map(m -> mapProdukPaketConverter.transferModelToVO(m, new MapProdukPaketToProdukVO()))
.collect(Collectors.toList());
result.forEach(r -> {
Optional<Produk> paket = listPaket.stream().filter(p -> p.getId().equals(r.getPaketId())).findFirst();
paket.ifPresent(
p -> r.setPaket(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
Optional<Produk> produkPaket = listProdukPaket.stream()
.filter(p -> p.getId().equals(r.getProdukPaketId())).findFirst();
produkPaket.ifPresent(
p -> r.setProdukPaket(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
Optional<Produk> produk = listProduk.stream().filter(p -> p.getId().equals(r.getProdukId()))
.findFirst();
produk.ifPresent(
p -> r.setProduk(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
});
return result;
}
return new ArrayList<>(); return new ArrayList<>();
} }
@Override @Override
public List<MapProdukPaketToProdukVO> get(Integer paketId) { public List<MapProdukPaketToProdukVO> get(Integer paketId) {
List<MapProdukPaketToProduk> models = mapProdukPaketToProdukDao.findAllByPaketId(paketId);
if (CommonUtil.isNotNullOrEmpty(models)) {
Set<Integer> listIdPaket = models.stream().map(MapProdukPaketToProduk::getPaketId)
.collect(Collectors.toSet());
List<Produk> listPaket = produkDao.findAllByIds(new ArrayList<>(listIdPaket));
Set<Integer> listIdProdukPaket = models.stream().map(MapProdukPaketToProduk::getProdukPaketId)
.collect(Collectors.toSet());
List<Produk> listProdukPaket = produkDao.findAllByIds(new ArrayList<>(listIdProdukPaket));
Set<Integer> listIdProduk = models.stream().map(MapProdukPaketToProduk::getProdukId)
.collect(Collectors.toSet());
List<Produk> listProduk = produkDao.findAllByIds(new ArrayList<>(listIdProduk));
List<MapProdukPaketToProdukVO> result = models.stream()
.map(m -> mapProdukPaketConverter.transferModelToVO(m, new MapProdukPaketToProdukVO()))
.collect(Collectors.toList());
result.forEach(r -> {
Optional<Produk> paket = listPaket.stream().filter(p -> p.getId().equals(r.getPaketId())).findFirst();
paket.ifPresent(
p -> r.setPaket(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
Optional<Produk> produkPaket = listProdukPaket.stream()
.filter(p -> p.getId().equals(r.getProdukPaketId())).findFirst();
produkPaket.ifPresent(
p -> r.setProdukPaket(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
Optional<Produk> produk = listProduk.stream().filter(p -> p.getId().equals(r.getProdukId()))
.findFirst();
produk.ifPresent(
p -> r.setProduk(ProdukDto.builder().id(p.getId()).namaProduk(p.getNamaProduk()).build()));
});
return result;
}
return new ArrayList<>(); return new ArrayList<>();
} }
@ -137,13 +72,19 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
MapProdukPaketToProduk model = mapProdukPaketToProdukDao.findOne(noRec); MapProdukPaketToProduk model = mapProdukPaketToProdukDao.findOne(noRec);
if (CommonUtil.isNullOrEmpty(model)) if (CommonUtil.isNullOrEmpty(model))
return null; return null;
MapProdukPaketToProdukVO result = mapProdukPaketConverter.transferModelToVO(model, MapProdukPaketToProdukVO result = mapPaketProdukConverter.transferModelToVO(model,
new MapProdukPaketToProdukVO()); new MapProdukPaketToProdukVO());
Produk paket = produkDao.findById(result.getPaketId()); MapProdukPaket mapProdukPaket = model.getProdukPaket();
result.setPaket(ProdukDto.builder().id(paket.getId()).namaProduk(paket.getNamaProduk()).build()); MapProdukPaketVO mapProdukPaketVO = mapProdukPaketConverter.transferModelToVO(mapProdukPaket,
Produk produkPaket = produkDao.findById(result.getProdukPaketId()); new MapProdukPaketVO());
result.setProdukPaket( {
ProdukDto.builder().id(produkPaket.getId()).namaProduk(produkPaket.getNamaProduk()).build()); Produk paket = produkDao.findById(mapProdukPaket.getPaket().getId());
mapProdukPaketVO.setPaket(ProdukDto.builder().id(paket.getId()).namaProduk(paket.getNamaProduk()).build());
Produk produkPaket = produkDao.findById(mapProdukPaket.getProdukPaket().getId());
mapProdukPaketVO.setProdukPaket(
ProdukDto.builder().id(produkPaket.getId()).namaProduk(produkPaket.getNamaProduk()).build());
result.setProdukPaket(mapProdukPaketVO);
}
Produk produk = produkDao.findById(result.getProdukId()); Produk produk = produkDao.findById(result.getProdukId());
result.setProduk(ProdukDto.builder().id(produk.getId()).namaProduk(produk.getNamaProduk()).build()); result.setProduk(ProdukDto.builder().id(produk.getId()).namaProduk(produk.getNamaProduk()).build());
return result; return result;
@ -157,16 +98,6 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
@Override @Override
public boolean exists(MapProdukPaketToProdukVO vo) { public boolean exists(MapProdukPaketToProdukVO vo) {
List<MapProdukPaketToProduk> models;
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
models = mapProdukPaketToProdukDao.findByPaketIdAndProdukPaketIdAndNoRecNot(vo.getProduk().getId(),
vo.getProdukPaket().getId(), vo.getNoRec());
} else {
models = mapProdukPaketToProdukDao.findByPaketIdAndProdukPaketId(vo.getProduk().getId(),
vo.getProdukPaket().getId());
}
if (CommonUtil.isNotNullOrEmpty(models))
throw new ServiceVOException("Mapping sudah tersedia");
return false; return false;
} }
} }

View File

@ -569,9 +569,9 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
&& CommonUtil.isNotNullOrEmpty(d.get("idPaketLayanan")) && CommonUtil.isNotNullOrEmpty(d.get("idPaketLayanan"))
&& Integer.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan"))) && Integer.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan")))
|| (CommonUtil.isNotNullOrEmpty(d.get("idVoucherLayanan")) || (CommonUtil.isNotNullOrEmpty(d.get("idVoucherLayanan"))
&& Boolean.parseBoolean(d.get("isPaket").toString()) && Boolean.parseBoolean(d.get("isPaket").toString()) && CommonUtil
&& CommonUtil.isNotNullOrEmpty(d.get("idPaketLayanan")) && !Integer .isNotNullOrEmpty(d.get("idPaketLayanan"))
.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan")))) && !Integer.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan"))))
.collect(Collectors.toList()); .collect(Collectors.toList());
/* /*
* Set persen jasa dan harga jasa pasien bpjs di ibs, icu * Set persen jasa dan harga jasa pasien bpjs di ibs, icu
@ -581,7 +581,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
/* /*
* Mapping set awal persentase jasa remunerasi dan harga jasa remunerasi * Mapping set awal persentase jasa remunerasi dan harga jasa remunerasi
*/ */
for (Map<String, Object> d : listRatedPay) for (Map<String, Object> d : listData)
if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("totalDiskon")) if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")) && CommonUtil.isNotNullOrEmpty(d.get("totalDiskon"))
&& Double.parseDouble(d.get("totalDiskon").toString()) > 0.0 && Double.parseDouble(d.get("totalDiskon").toString()) > 0.0
&& CommonUtil.isNullOrEmpty(d.get("idSayatan"))) { && CommonUtil.isNullOrEmpty(d.get("idSayatan"))) {
@ -682,7 +682,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Alokasi data diambil terlebih dahulu untuk kelompok BPJS, Jaminan * Alokasi data diambil terlebih dahulu untuk kelompok BPJS, Jaminan
* Kemenkes * Kemenkes
*/ */
List<Map<String, Object>> rawDataBpjs0 = listRatedPay List<Map<String, Object>> rawDataBpjs0 = listData
.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays .stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idKelompokPasien")) && Arrays
.asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString()))) .asList(KELOMPOK_BPJS).contains(Integer.parseInt(d.get("idKelompokPasien").toString())))
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -996,7 +996,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* nonshift * nonshift
*/ */
List<Map<String, Object>> listDataJamKerja = new ArrayList<>(); List<Map<String, Object>> listDataJamKerja = new ArrayList<>();
for (Map<String, Object> d : listRatedPay) { for (Map<String, Object> d : listData) {
if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) { if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) {
LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
@ -1028,7 +1028,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
* Asumsi jam kerja dokter nonshift * Asumsi jam kerja dokter nonshift
*/ */
List<Map<String, Object>> listDataLuarJamKerja = new ArrayList<>(); List<Map<String, Object>> listDataLuarJamKerja = new ArrayList<>();
for (Map<String, Object> d : listRatedPay) { for (Map<String, Object> d : listData) {
if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) { if (CommonUtil.isNotNullOrEmpty(d.get("tglPelayanan"))) {
LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault()) LocalDate tglPelayanan = ((Date) d.get("tglPelayanan")).toInstant().atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
@ -1486,10 +1486,11 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList()); .sorted(Comparator.comparing(o -> o.get("namaProduk").toString())).collect(Collectors.toList());
result.put("klaim-mpp", listPelayananKlaimMpp); result.put("klaim-mpp", listPelayananKlaimMpp);
} }
{ // {
List<Map<String, Object>> listPelayananFixedPay = setPelayananFixedPay(listFixedPay); // List<Map<String, Object>> listPelayananFixedPay =
result.put("fixed-pay", listPelayananFixedPay); // setPelayananFixedPay(listFixedPay);
} // result.put("fixed-pay", listPelayananFixedPay);
// }
return result; return result;
} }
@ -1509,22 +1510,19 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
&& CommonUtil.isNotNullOrEmpty(d.get("idPaketLayanan")) && CommonUtil.isNotNullOrEmpty(d.get("idPaketLayanan"))
&& Integer.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan")))) && Integer.valueOf(d.get("idProduk").toString()).equals(d.get("idPaketLayanan"))))
.collect(Collectors.toList()); .collect(Collectors.toList());
Set<String> listIdVoucherKepalaPaket = listKepalaPaket.stream().map(p -> p.get("idVoucherLayanan").toString()) Set<String> listIdVoucherKepalaPaket = listKepalaPaket.stream()
.collect(Collectors.toSet()); .map(p -> p.get("idVoucherLayanan").toString()).collect(Collectors.toSet());
List<Map<String, Object>> pelayananKepalaPaket = voucherPaketDao List<Map<String, Object>> pelayananKepalaPaket = voucherPaketDao
.findPelayananPaket(new ArrayList<>(listIdVoucherKepalaPaket)); .findPelayananPaket(new ArrayList<>(listIdVoucherKepalaPaket));
List<Integer> listIdEntri = pelayananKepalaPaket.stream() Set<Integer> listIdEntri = pelayananKepalaPaket.stream()
.filter(kp -> TINDAKAN_UTAMA.name().equals(kp.get("jenisMapping").toString())) .filter(kp -> TINDAKAN_UTAMA.name().equals(kp.get("jenisMapping").toString()))
.map(kp -> Integer.valueOf(kp.get("idProduk").toString())) .map(kp -> Integer.valueOf(kp.get("idProduk").toString())).collect(Collectors.toSet());
.collect(Collectors.toList());
List<Map<String, Object>> listDataUtama = listData.stream() List<Map<String, Object>> listDataUtama = listData.stream()
.filter(d -> listIdEntri.contains(Integer.parseInt(d.get("idProduk").toString()))) .filter(d -> listIdEntri.contains(Integer.parseInt(d.get("idProduk").toString())))
.collect(Collectors.toList()); .collect(Collectors.toList());
listIdVoucherKepalaPaket.forEach(idVoucher -> { listIdVoucherKepalaPaket.forEach(idVoucher -> {
List<Map<String, Object>> dataUtama = listDataUtama.stream() List<Map<String, Object>> dataUtama = listDataUtama.stream()
.filter(d -> idVoucher.equals(d.get("idVoucherLayanan"))) .filter(d -> idVoucher.equals(d.get("idVoucherLayanan"))).collect(Collectors.toList());
.collect(Collectors.toList());
}); });
} }
/* /*
@ -2586,12 +2584,13 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
List<Integer> idProdukPaketDto = dtoList.stream().map(TagihanPendaftaranDto::getIdProduk) List<Integer> idProdukPaketDto = dtoList.stream().map(TagihanPendaftaranDto::getIdProduk)
.filter(dto -> !dto.equals(voucher.getPaketId())).collect(Collectors.toList()); .filter(dto -> !dto.equals(voucher.getPaketId())).collect(Collectors.toList());
mappingProdukPaket.stream().filter(d -> idProdukPaketDto.contains(d.getProdukId())).forEach(d -> { mappingProdukPaket.stream().filter(d -> idProdukPaketDto.contains(d.getProdukId())).forEach(d -> {
Produk produkPaket = d.getProdukPaket().getProdukPaket();
List<Map<String, Object>> tarifProdukPaket = hargaNettoProdukByKelasDao List<Map<String, Object>> tarifProdukPaket = hargaNettoProdukByKelasDao
.checkExisting(voucher.getKelasId(), d.getProdukPaketId()); .checkExisting(voucher.getKelasId(), produkPaket.getId());
if (CommonUtil.isNullOrEmpty(tarifProdukPaket) && tarifProdukPaket.isEmpty()) if (CommonUtil.isNullOrEmpty(tarifProdukPaket) && tarifProdukPaket.isEmpty())
throw new ServiceVOException("Harga tarif tidak ditemukan untuk produk " throw new ServiceVOException(
+ d.getProduk().getNamaProduk() + " (" + d.getProdukPaket().getNamaProduk() + ") dan kelas " "Harga tarif tidak ditemukan untuk produk " + d.getProduk().getNamaProduk() + " ("
+ voucher.getKelas().getNamaKelas()); + produkPaket.getNamaProduk() + ") dan kelas " + voucher.getKelas().getNamaKelas());
}); });
} }
{ {

View File

@ -0,0 +1,52 @@
package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import static javax.persistence.EnumType.STRING;
import static javax.persistence.FetchType.LAZY;
/**
* @author Salman Manoe
* @version 1.0.0
* @since 21 Sep 2023
*/
@Getter
@Setter
@Entity
@Table(name = "mapprodukpaket_m", uniqueConstraints = {
@UniqueConstraint(columnNames = { "paketfk", "produkPaketfk" }), })
public class MapProdukPaket extends BaseTransaction implements Serializable {
private static final long serialVersionUID = 8425001074293272466L;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "paketfk")
@NotNull(message = "Paket tidak boleh kosong")
@Caption(value = "Paket")
private Produk paket;
@Column(name = "paketfk", insertable = false, updatable = false, nullable = false)
private Integer paketId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "produkpaketfk")
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk paket")
private Produk produkPaket;
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
private Integer produkPaketId;
private Integer jumlah;
@Column(length = 100)
@Enumerated(STRING)
private JenisMappingProdukPaket jenisMapping;
}

View File

@ -1,7 +1,6 @@
package com.jasamedika.medifirst2000.entities; package com.jasamedika.medifirst2000.entities;
import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket;
import com.jasamedika.medifirst2000.helper.Caption; import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -9,7 +8,6 @@ import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import static javax.persistence.EnumType.STRING;
import static javax.persistence.FetchType.LAZY; import static javax.persistence.FetchType.LAZY;
/** /**
@ -20,29 +18,18 @@ import static javax.persistence.FetchType.LAZY;
@Getter @Getter
@Setter @Setter
@Entity @Entity
@Table(name = "mapprodukpakettoproduk_m", uniqueConstraints = { @Table(name = "mapprodukpakettoproduk_m")
@UniqueConstraint(columnNames = { "paketfk", "produkpaketfk", "produkfk" }),
@UniqueConstraint(columnNames = { "paketfk", "produkfk" }), })
public class MapProdukPaketToProduk extends BaseTransaction { public class MapProdukPaketToProduk extends BaseTransaction {
private static final long serialVersionUID = -7737789789022355198L; private static final long serialVersionUID = 8688145804014486942L;
@ManyToOne(fetch = LAZY) @ManyToOne(fetch = LAZY)
@JoinColumn(name = "paketfk") @JoinColumn(name = "mappaketfk")
@NotNull(message = "Paket tidak boleh kosong") @NotNull(message = "Mapping produk paket tidak boleh kosong")
@Caption(value = "Paket") @Caption(value = "Mapping produk paket")
private Produk paket; private MapProdukPaket produkPaket;
@Column(name = "paketfk", insertable = false, updatable = false, nullable = false) @Column(name = "mappaketfk", insertable = false, updatable = false, nullable = false)
private Integer paketId; private String produkPaketId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "produkpaketfk")
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk paket")
private Produk produkPaket;
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
private Integer produkPaketId;
@ManyToOne(fetch = LAZY) @ManyToOne(fetch = LAZY)
@JoinColumn(name = "produkfk") @JoinColumn(name = "produkfk")
@ -52,8 +39,4 @@ public class MapProdukPaketToProduk extends BaseTransaction {
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false) @Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
private Integer produkId; private Integer produkId;
@Column(length = 100)
@Enumerated(STRING)
private JenisMappingProdukPaket jenisMapping;
} }

View File

@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.entities.ProdukDto; import com.jasamedika.medifirst2000.entities.ProdukDto;
import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket;
import com.jasamedika.medifirst2000.helper.Caption; import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -18,20 +17,11 @@ import javax.validation.constraints.NotNull;
@Setter @Setter
@JsonInclude(Include.NON_NULL) @JsonInclude(Include.NON_NULL)
public class MapProdukPaketToProdukVO extends BaseTransactionVO { public class MapProdukPaketToProdukVO extends BaseTransactionVO {
@NotNull(message = "Mapping produk paket tidak boleh kosong")
@Caption(value = "Mapping produk paket")
private MapProdukPaketVO produkPaket;
@NotNull(message = "Paket tidak boleh kosong") private String produkPaketId;
@Caption(value = "Paket")
private ProdukDto paket;
@Caption(value = "ID Paket")
private Integer paketId;
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk Paket")
private ProdukDto produkPaket;
@Caption(value = "ID Produk Paket")
private Integer produkPaketId;
@NotNull(message = "Produk tidak boleh kosong") @NotNull(message = "Produk tidak boleh kosong")
@Caption(value = "Produk") @Caption(value = "Produk")
@ -39,7 +29,4 @@ public class MapProdukPaketToProdukVO extends BaseTransactionVO {
@Caption(value = "ID Produk") @Caption(value = "ID Produk")
private Integer produkId; private Integer produkId;
private JenisMappingProdukPaket jenisMapping;
} }

View File

@ -0,0 +1,41 @@
package com.jasamedika.medifirst2000.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.entities.ProdukDto;
import com.jasamedika.medifirst2000.enums.JenisMappingProdukPaket;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
/**
* @author Salman Manoe
* @version 1.0.0
* @since 21 Sep 2023
*/
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MapProdukPaketVO extends BaseTransactionVO {
@NotNull(message = "Paket tidak boleh kosong")
@Caption(value = "Paket")
private ProdukDto paket;
@Caption(value = "ID Paket")
private Integer paketId;
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk Paket")
private ProdukDto produkPaket;
@Caption(value = "ID Produk Paket")
private Integer produkPaketId;
private Integer jumlah;
private JenisMappingProdukPaket jenisMapping;
}