diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 66a2fbf0..4194f6b6 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -461,6 +461,10 @@ public final class Master { public static final Integer KSM_OBGYN = 59; } + public static final class AppDefaultVariabel { + public static final Integer RECURSIVE_BATCH = 8000; + } + public static final class User { public static final Integer MOBILE_JKN = 3; } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java index e4a55ae9..dfa937ad 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/RemunerasiServiceImpl.java @@ -1877,8 +1877,17 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera .map(d -> d.get("paketId").toString() + d.get("idKelas").toString()).collect(Collectors.toList())); allConcatProdukKelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk"))) .map(d -> d.get("idProduk").toString() + d.get("idKelas").toString()).collect(Collectors.toList())); - List tarifDetailReguler = hargaNettoProdukByKelasDDao - .findByConcateProdukKelas(allConcatProdukKelas); + //List tarifDetailReguler = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(allConcatProdukKelas); // Ganti Versi batching + + final int BATCH_SIZE = Master.AppDefaultVariabel.RECURSIVE_BATCH; // Limitasi Jumlah Data Per Batch + int total = allConcatProdukKelas.size(); + List tarifDetailReguler = new ArrayList<>(); + for (int i = 0; i < total; i += BATCH_SIZE) { + int end = Math.min(i + BATCH_SIZE, total); + List batchKeys = allConcatProdukKelas.subList(i, end); + List batchResult = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(batchKeys); + tarifDetailReguler.addAll(batchResult); + } List allConcatProdukNonkelas = listData.stream() .filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId"))) .map(d -> d.get("regRefId").toString() + NON_KELAS).collect(Collectors.toList()); @@ -1886,8 +1895,17 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera .map(d -> d.get("paketId").toString() + NON_KELAS).collect(Collectors.toList())); allConcatProdukNonkelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk"))) .map(d -> d.get("idProduk").toString() + NON_KELAS).collect(Collectors.toList())); - List tarifDetailNonKelas = hargaNettoProdukByKelasDDao - .findByConcateProdukKelas(allConcatProdukNonkelas); + //List tarifDetailNonKelas = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(allConcatProdukNonkelas); // Ganti Versi batching + + final int BATCH_SIZE_NB = Master.AppDefaultVariabel.RECURSIVE_BATCH; + int totalNB = allConcatProdukNonkelas.size(); + List tarifDetailNonKelas = new ArrayList<>(); + for (int i = 0; i < totalNB; i += BATCH_SIZE_NB) { + int end = Math.min(i + BATCH_SIZE_NB, totalNB); + List batchKeys = allConcatProdukNonkelas.subList(i, end); + List batchResult = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(batchKeys); + tarifDetailNonKelas.addAll(batchResult); + } Set> ibuPaketDiRanapByDokter = pelayananPasienDao.findPasienPaketDiRanapByDokter(drKsmObgyn, allProdukEntriId, Arrays.asList(GRUP_RAWAT_INAP)); Set setIdIbu = ibuPaketDiRanapByDokter.stream() @@ -2248,6 +2266,9 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera } else { remunFfs = this.splitRemunFfs(idPegawai, bulan); } + + // cek disini + @SuppressWarnings("unchecked") List> listData = (List>) remunFfs.get("remun"); Double target = Double.parseDouble(remunFfs.get("targetRemun").toString());