Merge branch 'prod/base'

This commit is contained in:
adesyawal 2026-07-06 13:12:00 +07:00
commit 6c9b3639af
4 changed files with 41 additions and 14 deletions

View File

@ -170,6 +170,7 @@ public final class Master {
public static final Integer KELAS_SATU = 3;
public static final Integer[] KELAS_SATU_VIP = { 3, 5, 8, 21 };
public static final Integer NON_KELAS = 6;
public static final Integer NON_KELAS_EKSEKUTIF = 22;
public static final Integer[] REF_KELAS_KAMAR = { 1, 2, 3, 5, 6, 8 };
}

View File

@ -197,7 +197,7 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "when pd.kelompokPasienId = 5 then 6 " + "when pd.kelompokPasienId = 6 then 7 "
+ "when pd.kelompokPasienId = 3 then 8 " + "when pd.kelompokPasienId = 7 then 9 "
+ "else 10 end as sortIdKelompokPasien," + "kp.kelompokPasien as kelompokPasien," + "pp.kelasId as idKelas,"
+ "case when pp.kelasId = 6 then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
+ "case when (pp.kelasId = 6 or pp.kelasId = 22) then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
+ "when pp.kelasId = 3 then 4 " + "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 "
+ "when pp.kelasId = 21 then 7 " + "else 8 end as sortIdKelas," + "kls.namaKelas as namaKelas,"
+ "ppp.noRec as idPelayananPasienPetugas," + "ppp.ObjectJenisPetugasPeId as idJenisPelaksana,"
@ -258,7 +258,7 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "when pd.kelompokPasienId = 1 then 5 " + "when pd.kelompokPasienId = 5 then 6 "
+ "when pd.kelompokPasienId = 6 then 7 " + "when pd.kelompokPasienId = 3 then 8 "
+ "when pd.kelompokPasienId = 7 then 9 " + "else 10 end," + "kp.kelompokPasien," + "pp.kelasId,"
+ "case when pp.kelasId = 6 then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
+ "case when (pp.kelasId = 6 or pp.kelasId = 22) then 1 " + "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 "
+ "when pp.kelasId = 3 then 4 " + "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 "
+ "when pp.kelasId = 21 then 7 " + "else 8 end," + "kls.namaKelas," + "ppp.noRec,"
+ "ppp.ObjectJenisPetugasPeId,ppp.ObjectPegawaiId,"
@ -273,7 +273,7 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "when pd.kelompokPasienId = 9 then 4 " + "when pd.kelompokPasienId = 1 then 5 "
+ "when pd.kelompokPasienId = 5 then 6 " + "when pd.kelompokPasienId = 6 then 7 "
+ "when pd.kelompokPasienId = 3 then 8 " + "when pd.kelompokPasienId = 7 then 9 " + "else 10 end asc, "
+ "pp.tglPelayanan, " + "pp.hargaJual, " + "case when pp.kelasId = 6 then 1 "
+ "pp.tglPelayanan, " + "pp.hargaJual, " + "case when (pp.kelasId = 6 or pp.kelasId = 22) then 1 "
+ "when pp.kelasId = 1 then 2 " + "when pp.kelasId = 2 then 3 " + "when pp.kelasId = 3 then 4 "
+ "when pp.kelasId = 8 then 5 " + "when pp.kelasId = 5 then 6 " + "when pp.kelasId = 21 then 7 "
+ "else 8 end asc," + "pr.namaProduk";
@ -301,7 +301,7 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
+ "order by case when kp.id = 2 then 1 when kp.id = 4 then 2 when kp.id = 8 then 3 when kp.id = 9 then 4 "
+ "when kp.id = 1 then 5 when kp.id = 5 then 6 when kp.id = 6 then 7 when kp.id = 3 then 8 when kp.id = 7 then 9 else 10 end asc, "
+ "pp.tglPelayanan, " + "pp.hargaJual, "
+ "case when kls.id = 6 then 1 when kls.id = 1 then 2 when kls.id = 2 then 3 when kls.id =3 then 4 when kls.id = 8 then 5 when kls.id = 5 then 6 when kls.id = 21 then 7 else 8 end asc,"
+ "case when (kls.id = 6 or kls.id = 22) then 1 when kls.id = 1 then 2 when kls.id = 2 then 3 when kls.id =3 then 4 when kls.id = 8 then 5 when kls.id = 5 then 6 when kls.id = 21 then 7 else 8 end asc,"
+ "pr.namaProduk")
List<Map<String, Object>> findPelayananPasienByPetugasAndPelayananPasien(@Param("pegawaiId") Integer idPegawai,
@Param("norecs") List<String> norecs);

View File

@ -38,6 +38,7 @@ import static com.jasamedika.medifirst2000.constants.Master.JenisProduk.OBAT_ALK
import static com.jasamedika.medifirst2000.constants.Master.KONSUL_VISIT;
import static com.jasamedika.medifirst2000.constants.Master.KategoryPegawai.DOKTER_LUAR;
import static com.jasamedika.medifirst2000.constants.Master.Kelas.NON_KELAS;
import static com.jasamedika.medifirst2000.constants.Master.Kelas.NON_KELAS_EKSEKUTIF;
import static com.jasamedika.medifirst2000.constants.Master.KelompokPasien.KELOMPOK_BPJS;
import static com.jasamedika.medifirst2000.constants.Master.KelompokUser.TATA_REKENING;
import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*;
@ -1995,8 +1996,10 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.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<HargaNettoProdukByKelasD> tarifDetailReguler = hargaNettoProdukByKelasDDao
.findByConcateProdukKelas(allConcatProdukKelas);
List<String> allConcatProdukNonkelas = listData.stream()
.filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId")))
.map(d -> d.get("regRefId").toString() + NON_KELAS).collect(Collectors.toList());
@ -2004,6 +2007,18 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
.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<String> allConcatProdukNonkelasEksekutif = listData.stream()
.filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId")))
.map(d -> d.get("regRefId").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList());
allConcatProdukNonkelasEksekutif.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("paketId")))
.map(d -> d.get("paketId").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList()));
allConcatProdukNonkelasEksekutif.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
.map(d -> d.get("idProduk").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList()));
allConcatProdukNonkelas.addAll(allConcatProdukNonkelasEksekutif);
List<HargaNettoProdukByKelasD> tarifDetailNonKelas = hargaNettoProdukByKelasDDao
.findByConcateProdukKelas(allConcatProdukNonkelas);
Set<Map<String, Object>> ibuPaketDiRanapByDokter = pelayananPasienDao.findPasienPaketDiRanapByDokter(drKsmObgyn,
@ -2053,7 +2068,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("paketId")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(SPOG_OPERATOR)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2072,7 +2087,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("paketId")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(SPOG_ASISTEN)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2090,7 +2105,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2108,7 +2123,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_ASISTEN_SPESIALIS)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2126,7 +2141,7 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER_ANASTESI)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())

View File

@ -33,6 +33,7 @@ import static com.jasamedika.medifirst2000.constants.Master.GolonganProduk.KONSU
import static com.jasamedika.medifirst2000.constants.Master.GolonganProduk.VISIT;
import static com.jasamedika.medifirst2000.constants.Master.JenisPetugasPelaksana.*;
import static com.jasamedika.medifirst2000.constants.Master.Kelas.NON_KELAS;
import static com.jasamedika.medifirst2000.constants.Master.Kelas.NON_KELAS_EKSEKUTIF;
import static com.jasamedika.medifirst2000.constants.Master.KelompokPasien.KELOMPOK_BPJS;
import static com.jasamedika.medifirst2000.constants.Master.KomponenHarga.*;
import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI;
@ -1895,8 +1896,18 @@ 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<String> allConcatProdukNonkelasEksekutif = listData.stream()
.filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId")))
.map(d -> d.get("regRefId").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList());
allConcatProdukNonkelasEksekutif.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("paketId")))
.map(d -> d.get("paketId").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList()));
allConcatProdukNonkelasEksekutif.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
.map(d -> d.get("idProduk").toString() + NON_KELAS_EKSEKUTIF).collect(Collectors.toList()));
//List<HargaNettoProdukByKelasD> tarifDetailNonKelas = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(allConcatProdukNonkelas); // Ganti Versi batching
allConcatProdukNonkelas.addAll(allConcatProdukNonkelasEksekutif);
final int BATCH_SIZE_NB = Master.AppDefaultVariabel.RECURSIVE_BATCH;
int totalNB = allConcatProdukNonkelas.size();
List<HargaNettoProdukByKelasD> tarifDetailNonKelas = new ArrayList<>();
@ -1953,7 +1964,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("paketId")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(SPOG_OPERATOR)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -1972,7 +1983,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("paketId")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(SPOG_ASISTEN)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -1994,7 +2005,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2016,7 +2027,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_ASISTEN_SPESIALIS)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())
@ -2038,7 +2049,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else {
Optional<HargaNettoProdukByKelasD> byDetailTarifNonKelas = tarifDetailNonKelas.stream()
.filter(dt -> dt.getProdukId().equals(d.get("idProduk")))
.filter(dt -> dt.getKelasId().equals(NON_KELAS))
.filter(dt -> dt.getKelasId().equals(NON_KELAS) || dt.getKelasId().equals(NON_KELAS_EKSEKUTIF))
.filter(dt -> dt.getKomponenHargaId().equals(JASA_DOKTER_ANASTESI)).findFirst();
byDetailTarifNonKelas.ifPresent(hargaNettoProdukByKelasD -> d.put("hargaJasa",
CommonUtil.isNotNullOrEmpty(byDetailTarifNonKelas.get().getHargaNetto1())