Update LogbookTask.java

Penyesuaian cut-off tarif baru untuk scheduler rekap logbook dokter
This commit is contained in:
Salman Manoe 2024-10-02 20:48:19 +07:00
parent f7fb78722d
commit c358b59f9d
2 changed files with 72 additions and 17 deletions

View File

@ -3170,6 +3170,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} }
return builder.build(); return builder.build();
} }
double hargaDiskon = Double.parseDouble(d.get("hargaDiskon").toString());
double persenDiskonPegawai = Double.parseDouble(d.get("persenDiskonPegawai").toString()); double persenDiskonPegawai = Double.parseDouble(d.get("persenDiskonPegawai").toString());
double persenDiskonJasa = 0.0; double persenDiskonJasa = 0.0;
if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) { if (DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana"))) {
@ -3179,7 +3180,12 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else if (DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) { } else if (DOKTER_ANASTESI.equals(d.get("idJenisPelaksana"))) {
persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAn").toString()); persenDiskonJasa = Double.parseDouble(d.get("persenDiskonAn").toString());
} }
builder.nilai(persenRemunerasi * hargaJual * (1 - persenDiskonPegawai / 100) * (1 - persenDiskonJasa / 100)); if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
builder.nilai(persenRemunerasi * (hargaJual - hargaDiskon));
} else {
builder.nilai(
persenRemunerasi * hargaJual * (1 - persenDiskonPegawai / 100) * (1 - persenDiskonJasa / 100));
}
if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) { if (Boolean.parseBoolean(d.get("isSelisihPaket").toString())) {
if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) { if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) {
if (isFrontNote) { if (isFrontNote) {
@ -3201,6 +3207,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else { } else {
builder.keterangan(" + Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); builder.keterangan(" + Selisih Paket + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
} }
} else {
builder.keterangan("");
} }
} else { } else {
if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) { if (persenDiskonPegawai > 0.0 && persenDiskonJasa > 0.0) {
@ -3223,6 +3231,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
} else { } else {
builder.keterangan(" + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)"); builder.keterangan(" + Diskon Jasa Medis Dokter (" + persenDiskonJasa + "%)");
} }
} else {
builder.keterangan("");
} }
} }
return builder.build(); return builder.build();

View File

@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.entities.*;
import com.jasamedika.medifirst2000.service.LogbookRemunService; import com.jasamedika.medifirst2000.service.LogbookRemunService;
import com.jasamedika.medifirst2000.service.PelayananPasienService; import com.jasamedika.medifirst2000.service.PelayananPasienService;
import com.jasamedika.medifirst2000.service.RekapLogbookDokterService; import com.jasamedika.medifirst2000.service.RekapLogbookDokterService;
import com.jasamedika.medifirst2000.service.RemunerasiService;
import com.jasamedika.medifirst2000.util.DateUtil; import com.jasamedika.medifirst2000.util.DateUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -16,7 +17,9 @@ import java.math.BigDecimal;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.YearMonth;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@ -31,7 +34,7 @@ import static com.jasamedika.medifirst2000.constants.Master.Profesi.TERAPI;
*/ */
@Component @Component
public class LogbookTask { public class LogbookTask {
private static final Logger LOGGER = LoggerFactory.getLogger(PasienTask.class); private static final Logger LOGGER = LoggerFactory.getLogger(LogbookTask.class);
@Autowired @Autowired
private PelayananPasienPetugasDao pelayananPasienPetugasDao; private PelayananPasienPetugasDao pelayananPasienPetugasDao;
@ -42,6 +45,9 @@ public class LogbookTask {
@Autowired @Autowired
private PelayananPasienService pelayananPasienService; private PelayananPasienService pelayananPasienService;
@Autowired
private RemunerasiService remunerasiService;
@Autowired @Autowired
private RekapLogbookDokterService rekapLogbookDokterService; private RekapLogbookDokterService rekapLogbookDokterService;
@ -81,11 +87,18 @@ public class LogbookTask {
Set<Integer> idPegawaiByTglPelayanan = pelayananPasienPetugasDao.findPegawaiByTglPelayanan(tglAwal, tglAkhir); Set<Integer> idPegawaiByTglPelayanan = pelayananPasienPetugasDao.findPegawaiByTglPelayanan(tglAwal, tglAkhir);
DateFormat df = new SimpleDateFormat("yyyy-MM"); DateFormat df = new SimpleDateFormat("yyyy-MM");
String bulan = df.format(date); String bulan = df.format(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth oct24 = YearMonth.parse("2024-10", formatter);
YearMonth month = YearMonth.parse(bulan, formatter);
List<RekapLogbookDokter> models = new ArrayList<>(); List<RekapLogbookDokter> models = new ArrayList<>();
idPegawaiByTglPelayanan.forEach(idPegawai -> { idPegawaiByTglPelayanan.forEach(idPegawai -> {
{ {
Map<String, Object> kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, Map<String, Object> kinerjaDokter;
null); if (month.isBefore(oct24)) {
kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null);
} else {
kinerjaDokter = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null);
}
List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data"); List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data");
List<Integer> listIdKelompokPasien = new ArrayList<>(); List<Integer> listIdKelompokPasien = new ArrayList<>();
remun.forEach(r -> { remun.forEach(r -> {
@ -114,7 +127,12 @@ public class LogbookTask {
}); });
} }
{ {
List<Map<String, Object>> ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null); List<Map<String, Object>> ffs;
if (month.isBefore(oct24)) {
ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null);
} else {
ffs = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>(); List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>(); List<Integer> listIdKelompokPasien = new ArrayList<>();
ffs.forEach(r -> { ffs.forEach(r -> {
@ -150,8 +168,12 @@ public class LogbookTask {
})); }));
} }
{ {
List<Map<String, Object>> fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, List<Map<String, Object>> fixedPay;
null); if (month.isBefore(oct24)) {
fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null);
} else {
fixedPay = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null);
}
List<String> listJenisRuangan = new ArrayList<>(); List<String> listJenisRuangan = new ArrayList<>();
List<Integer> listIdKelompokPasien = new ArrayList<>(); List<Integer> listIdKelompokPasien = new ArrayList<>();
List<String> listBulanIbuPulangRanap = new ArrayList<>(); List<String> listBulanIbuPulangRanap = new ArrayList<>();
@ -222,6 +244,9 @@ public class LogbookTask {
private void saveRekapDetailLogbookDokter(Set<Integer> idPegawaiKelompokKerja, Date date) { private void saveRekapDetailLogbookDokter(Set<Integer> idPegawaiKelompokKerja, Date date) {
DateFormat df = new SimpleDateFormat("yyyy-MM"); DateFormat df = new SimpleDateFormat("yyyy-MM");
String bulan = df.format(date); String bulan = df.format(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth oct24 = YearMonth.parse("2024-09", formatter);
YearMonth month = YearMonth.parse(bulan, formatter);
ExecutorService executorService = Executors.newFixedThreadPool(50); ExecutorService executorService = Executors.newFixedThreadPool(50);
CountDownLatch latch = new CountDownLatch(50); CountDownLatch latch = new CountDownLatch(50);
try { try {
@ -237,8 +262,12 @@ public class LogbookTask {
logbookRemun.setTanggalTarikData(new Date()); logbookRemun.setTanggalTarikData(new Date());
LogbookRemun savedRemun = logbookRemunDao.save(logbookRemun); LogbookRemun savedRemun = logbookRemunDao.save(logbookRemun);
{ {
Map<String, Object> kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, Map<String, Object> kinerjaDokter;
bulan, null); if (month.isBefore(oct24)) {
kinerjaDokter = pelayananPasienService.logbookRemunTarifDokter(idPegawai, bulan, null);
} else {
kinerjaDokter = remunerasiService.logbookRemunTarifDokter(idPegawai, bulan, null);
}
List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data"); List<Map<String, Object>> remun = (List<Map<String, Object>>) kinerjaDokter.get("data");
for (Map<String, Object> map : remun) { for (Map<String, Object> map : remun) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>(); List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
@ -296,8 +325,12 @@ public class LogbookTask {
} }
} }
{ {
List<Map<String, Object>> ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, List<Map<String, Object>> ffs;
null); if (month.isBefore(oct24)) {
ffs = pelayananPasienService.logbookFfsTarifDokter(idPegawai, bulan, null);
} else {
ffs = remunerasiService.logbookFfsTarifDokter(idPegawai, bulan, null);
}
for (Map<String, Object> fee : ffs) { for (Map<String, Object> fee : ffs) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>(); List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{ {
@ -355,8 +388,12 @@ public class LogbookTask {
} }
} }
{ {
List<Map<String, Object>> ffs = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai, List<Map<String, Object>> ffs;
bulan, null); if (month.isBefore(oct24)) {
ffs = pelayananPasienService.logbookFfsLuarTarifDokter(idPegawai, bulan, null);
} else {
ffs = remunerasiService.logbookFfsLuarTarifDokter(idPegawai, bulan, null);
}
for (Map<String, Object> fee : ffs) { for (Map<String, Object> fee : ffs) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>(); List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{ {
@ -414,8 +451,12 @@ public class LogbookTask {
} }
} }
{ {
List<Map<String, Object>> fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, List<Map<String, Object>> fixedPay;
bulan, null); if (month.isBefore(oct24)) {
fixedPay = pelayananPasienService.logbookFixedPayDokter(idPegawai, bulan, null);
} else {
fixedPay = remunerasiService.logbookFixedPayDokter(idPegawai, bulan, null);
}
for (Map<String, Object> pay : fixedPay) { for (Map<String, Object> pay : fixedPay) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>(); List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{ {
@ -471,8 +512,12 @@ public class LogbookTask {
} }
} }
{ {
List<Map<String, Object>> klaimMpp = pelayananPasienService.logbookKlaimMppDokter(idPegawai, List<Map<String, Object>> klaimMpp;
bulan); if (month.isBefore(oct24)) {
klaimMpp = pelayananPasienService.logbookKlaimMppDokter(idPegawai, bulan);
} else {
klaimMpp = remunerasiService.logbookKlaimMppDokter(idPegawai, bulan);
}
for (Map<String, Object> mpp : klaimMpp) { for (Map<String, Object> mpp : klaimMpp) {
List<String> listNorecPelayananPasienPetugas = new ArrayList<>(); List<String> listNorecPelayananPasienPetugas = new ArrayList<>();
{ {