Compare commits
No commits in common. "master" and "ade/bug-fixing/master-shift-on-cuti" have entirely different histories.
master
...
ade/bug-fi
@ -15,7 +15,7 @@
|
|||||||
</context-param>
|
</context-param>
|
||||||
<context-param>
|
<context-param>
|
||||||
<param-name>spring.profiles.default</param-name>
|
<param-name>spring.profiles.default</param-name>
|
||||||
<param-value>bridging</param-value>
|
<param-value>localhost</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
<listener>
|
<listener>
|
||||||
|
|||||||
@ -70,8 +70,6 @@ public final class Master {
|
|||||||
public static final Integer PELAYANAN_MEDIS_JAM_KERJA = 466;
|
public static final Integer PELAYANAN_MEDIS_JAM_KERJA = 466;
|
||||||
public static final Integer PELAYANAN_NAKES = 678;
|
public static final Integer PELAYANAN_NAKES = 678;
|
||||||
public static final Integer PELAYANAN_PERAWAT = 712;
|
public static final Integer PELAYANAN_PERAWAT = 712;
|
||||||
public static final double BOBOT_HARI_KERJA = 5;
|
|
||||||
public static final double BOBOT_JAM_KERJA = 5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class IndikatorKinerjaDetail {
|
public static final class IndikatorKinerjaDetail {
|
||||||
@ -357,8 +355,7 @@ public final class Master {
|
|||||||
public static final class Ruangan {
|
public static final class Ruangan {
|
||||||
public static final Integer CATHLAB = 703;
|
public static final Integer CATHLAB = 703;
|
||||||
public static final Integer[] GENETIKA = { 277, 563, 587 };
|
public static final Integer[] GENETIKA = { 277, 563, 587 };
|
||||||
public static final Integer[] ICU_NICU_V1 = { 328, 75, 707, 708 }; // Perubahan Regulasi Pada 02/12/2025, berlaku untuk data sebelum 1 november 2025
|
public static final Integer[] ICU_NICU = { 328, 75, 707, 708 };
|
||||||
public static final Integer[] ICU_NICU_v2 = { 328,75,463,76,45,464,44,707,708 }; // Perubahan Regulasi Pada 02/12/2025, berlaku untuk data setelah atau sama dengan 1 november 2025
|
|
||||||
public static final int KLINIK_FALSE_EMERGENCY = 309;
|
public static final int KLINIK_FALSE_EMERGENCY = 309;
|
||||||
public static final Integer KLINIK_GIGI_KARYAWAN = 702;
|
public static final Integer KLINIK_GIGI_KARYAWAN = 702;
|
||||||
public static final Integer KLINIK_KARYAWAN = 70;
|
public static final Integer KLINIK_KARYAWAN = 70;
|
||||||
@ -461,10 +458,6 @@ public final class Master {
|
|||||||
public static final Integer KSM_OBGYN = 59;
|
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 class User {
|
||||||
public static final Integer MOBILE_JKN = 3;
|
public static final Integer MOBILE_JKN = 3;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,55 +13,13 @@ import java.util.Map;
|
|||||||
@Repository("MonitoringAbsenDao")
|
@Repository("MonitoringAbsenDao")
|
||||||
public interface MonitoringAbsenDao extends PagingAndSortingRepository<MonitoringAbsen, String> {
|
public interface MonitoringAbsenDao extends PagingAndSortingRepository<MonitoringAbsen, String> {
|
||||||
|
|
||||||
@Query(value = "select distinct reportdisplay, namashift from shiftkerja_m where statusenabled is true", nativeQuery = true)
|
|
||||||
List<Object[]> getDataMasterShift();
|
|
||||||
|
|
||||||
@Query(value = "WITH jadwal_kerja AS ("
|
|
||||||
+ " select "
|
|
||||||
+ " pegawaijadwalkerja_m.id,"
|
|
||||||
+ " shiftkerja_m.reportdisplay,"
|
|
||||||
+ " pegawaijadwalkerja_m.objectpegawaifk,"
|
|
||||||
+ " shiftkerja_m.namashift,"
|
|
||||||
+ " kalender_s.tanggal,"
|
|
||||||
+ " shiftkerja_m.factorrate,"
|
|
||||||
+ " (shiftkerja_m.factorrate * 60) as menit_efektif"
|
|
||||||
+ " from "
|
|
||||||
+ " pegawaijadwalkerja_m inner join "
|
|
||||||
+ " kalender_s on pegawaijadwalkerja_m.objecttanggalfk = kalender_s.id inner join "
|
|
||||||
+ " shiftkerja_m on pegawaijadwalkerja_m.objectshiftfk = shiftkerja_m.id"
|
|
||||||
+ " where "
|
|
||||||
+ " pegawaijadwalkerja_m.statusenabled is not false"
|
|
||||||
+ " and kalender_s.tanggal between '2025-11-01' and '2025-11-30'"
|
|
||||||
+ " )"
|
|
||||||
+ " select "
|
|
||||||
+ " pegawai_m.id,"
|
|
||||||
+ " pegawai_m.namalengkap,"
|
|
||||||
+ " count(jadwal_kerja.id) FILTER (WHERE jadwal_kerja.reportdisplay not in ('L')) as jumlah_hari_kerja,"
|
|
||||||
+ " case when sum(jadwal_kerja.menit_efektif) is null then 0 else sum(jadwal_kerja.menit_efektif) end as menit_efektif,"
|
|
||||||
+ " mappegawaijabatantounitkerja_m.objectjabatanfk"
|
|
||||||
+ " from "
|
|
||||||
+ " pegawai_m inner join "
|
|
||||||
+ " kategorypegawai_m on pegawai_m.kategorypegawai = kategorypegawai_m.id left outer join"
|
|
||||||
+ " sdm_kedudukan_m on pegawai_m.kedudukanfk = sdm_kedudukan_m.id left outer join "
|
|
||||||
+ " mappegawaijabatantounitkerja_m on pegawai_m.id = mappegawaijabatantounitkerja_m.objectpegawaifk and mappegawaijabatantounitkerja_m.statusenabled is true and mappegawaijabatantounitkerja_m.isprimary is true left outer join "
|
|
||||||
+ " jadwal_kerja on jadwal_kerja.objectpegawaifk = pegawai_m.id"
|
|
||||||
+ " where "
|
|
||||||
+ " sdm_kedudukan_m.id = 1 and pegawai_m.id in (22924,22349,22953,1224,23220,23004) and "
|
|
||||||
+ " sdm_kedudukan_m.id = 1 and mappegawaijabatantounitkerja_m.objectjabatanfk is not null "
|
|
||||||
+ " group by "
|
|
||||||
+ " pegawai_m.id,"
|
|
||||||
+ " pegawai_m.namalengkap,"
|
|
||||||
+ " mappegawaijabatantounitkerja_m.objectjabatanfk"
|
|
||||||
+ " limit 100", nativeQuery = true)
|
|
||||||
List<Object[]> getTargetHariJamKerja();
|
|
||||||
|
|
||||||
@Query(" select monitoringAbsen.noRec" + " from MonitoringAbsen monitoringAbsen"
|
@Query(" select monitoringAbsen.noRec" + " from MonitoringAbsen monitoringAbsen"
|
||||||
+ " left join monitoringAbsen.pegawai pegawai"
|
+ " left join monitoringAbsen.pegawai pegawai"
|
||||||
+ " where pegawai.id = :idPegawai and monitoringAbsen.tanggal = :date")
|
+ " where pegawai.id = :idPegawai and monitoringAbsen.tanggal = :date")
|
||||||
String findByIdPegawaiAndTanggal(@Param("idPegawai") Integer idPegawai, @Param("date") String date);
|
String findByIdPegawaiAndTanggal(@Param("idPegawai") Integer idPegawai, @Param("date") String date);
|
||||||
|
|
||||||
@Query(" select new map(pegawai.nipPns as nip, pegawai.namaLengkap as nama,shift.kodeExternal as kodeShift, shift.namaShift as namaShift,"
|
@Query(" select new map(pegawai.nipPns as nip, pegawai.namaLengkap as nama,shift.kodeExternal as kodeShift, shift.namaShift as namaShift,"
|
||||||
+ " shift.jamMasuk as jamMasuk, shift.jamPulang as jamPulang, shift.factorRate as factorRate, shift.waktuIstirahat as waktuIstirahat, "
|
+ " shift.jamMasuk as jamMasuk, shift.jamPulang as jamPulang, shift.waktuIstirahat as waktuIstirahat, "
|
||||||
+ " jabatanInternal.namaJabatan as jabatanInternal, ruangan.namaRuangan as namaRuangan, "
|
+ " jabatanInternal.namaJabatan as jabatanInternal, ruangan.namaRuangan as namaRuangan, "
|
||||||
+ " tanggal.hariKeDlmBulan as hari, tanggal.namaBulan as bulan, tanggal.tahunKalender as tahun, tanggal.hariKeDlmBulan as tgl,"
|
+ " tanggal.hariKeDlmBulan as hari, tanggal.namaBulan as bulan, tanggal.tahunKalender as tahun, tanggal.hariKeDlmBulan as tgl,"
|
||||||
+ " kelompokShiftKerja.id as idKelompokShiftKerja, unitKerja.name as unitKerja, "
|
+ " kelompokShiftKerja.id as idKelompokShiftKerja, unitKerja.name as unitKerja, "
|
||||||
@ -76,9 +34,10 @@ public interface MonitoringAbsenDao extends PagingAndSortingRepository<Monitorin
|
|||||||
+ "and to_char(tanggal.tanggal,'yyyy-MM-dd') between :startDate and :endDate "
|
+ "and to_char(tanggal.tanggal,'yyyy-MM-dd') between :startDate and :endDate "
|
||||||
+ "and pegawai.idFinger = :idFinger " + "and pegawai.statusEnabled is not false "
|
+ "and pegawai.idFinger = :idFinger " + "and pegawai.statusEnabled is not false "
|
||||||
+ "order by tanggal,pegawai.nama asc")
|
+ "order by tanggal,pegawai.nama asc")
|
||||||
List<Map<String, Object>> findJadwalPegawai(@Param("idFinger") String idFinger,@Param("startDate") String startDate, @Param("endDate") String endDate);
|
List<Map<String, Object>> findJadwalPegawai(@Param("idFinger") String idFinger,
|
||||||
|
@Param("startDate") String startDate, @Param("endDate") String endDate);
|
||||||
|
|
||||||
@Query("select new map(shift.kodeExternal as kodeShift, " + "shift.namaShift as namaShift, shift.factorRate as factorRate, "
|
@Query("select new map(shift.kodeExternal as kodeShift, " + "shift.namaShift as namaShift, "
|
||||||
+ "shift.jamMasuk as jamMasuk, " + "shift.jamPulang as jamPulang, "
|
+ "shift.jamMasuk as jamMasuk, " + "shift.jamPulang as jamPulang, "
|
||||||
+ "shift.waktuIstirahat as waktuIstirahat, " + "kelompokShiftKerja.id as idKelompokShiftKerja, "
|
+ "shift.waktuIstirahat as waktuIstirahat, " + "kelompokShiftKerja.id as idKelompokShiftKerja, "
|
||||||
+ "tanggal.tanggal as tanggal, " + "shift.id as idShift, " + "jadwalpegawai.keteranganAlasan as ket) "
|
+ "tanggal.tanggal as tanggal, " + "shift.id as idShift, " + "jadwalpegawai.keteranganAlasan as ket) "
|
||||||
|
|||||||
@ -245,7 +245,6 @@ public interface PelayananPasienDao extends JpaRepository<PelayananPasien, Strin
|
|||||||
String WHERE_LOGBOOK_DOKTER = "where pr.id not in (:listIdKarcis) "
|
String WHERE_LOGBOOK_DOKTER = "where pr.id not in (:listIdKarcis) "
|
||||||
+ "and ppd.pelayananPasienId = pp.noRec and (ppp.statusEnabled is true or ppp.statusEnabled is null) "
|
+ "and ppd.pelayananPasienId = pp.noRec and (ppp.statusEnabled is true or ppp.statusEnabled is null) "
|
||||||
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) and pp.strukResepId is null "
|
+ "and (pp.statusEnabled is true or pp.statusEnabled is null) and pp.strukResepId is null "
|
||||||
+ "and apd.ruanganId not in (777) "
|
|
||||||
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) ";
|
+ "and (pd.statusEnabled is true or pd.statusEnabled is null) ";
|
||||||
|
|
||||||
String PARAMATER_LOGBOOK_DOKTER = "and ppp.ObjectPegawaiId = :pegawaiId "
|
String PARAMATER_LOGBOOK_DOKTER = "and ppp.ObjectPegawaiId = :pegawaiId "
|
||||||
|
|||||||
@ -110,5 +110,4 @@ public interface MonitoringAbsenService {
|
|||||||
|
|
||||||
void updateLogbookKinerja(MonitoringAbsenVO vo) throws ParseException;
|
void updateLogbookKinerja(MonitoringAbsenVO vo) throws ParseException;
|
||||||
|
|
||||||
Map<String, Object> rekapitulasiCapaianHariDanJamKerjaPegawai(String tglAwal, String tglAkhir);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -333,25 +333,24 @@ public class LogbookKinerjaDetailServiceImpl extends BaseVoServiceImpl implement
|
|||||||
logbookKinerjaDetailDao.save(catatanKinerja);
|
logbookKinerjaDetailDao.save(catatanKinerja);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Optional<LogbookKinerja> byIdLogbook = logbookKinerjaDao.findByNoRec(catatanKinerja.getLogbookKinerjaId());
|
Optional<LogbookKinerja> byIdLogbook = logbookKinerjaDao
|
||||||
|
.findByNoRec(catatanKinerja.getLogbookKinerjaId());
|
||||||
byIdLogbook.ifPresent(logbookKinerja -> {
|
byIdLogbook.ifPresent(logbookKinerja -> {
|
||||||
if (Arrays.asList(PERCENTAGE).contains(logbookKinerja.getIndikatorKinerja().getSatuanIndikatorId())) {
|
if (Arrays.asList(PERCENTAGE)
|
||||||
List<Map<String, Object>> listCatatan = logbookKinerjaDetailDao.findAvgCapaianByKontrak(logbookKinerja.getNoRec(), Arrays.asList(PERCENTAGE));
|
.contains(logbookKinerja.getIndikatorKinerja().getSatuanIndikatorId())) {
|
||||||
Optional<Map<String, Object>> catatan = listCatatan.stream().filter(c -> logbookKinerja.getNoRec().equals(c.get("logbookId"))).findFirst();
|
List<Map<String, Object>> listCatatan = logbookKinerjaDetailDao
|
||||||
if (catatan.isPresent()) {
|
.findAvgCapaianByKontrak(logbookKinerja.getNoRec(), Arrays.asList(PERCENTAGE));
|
||||||
logbookKinerja.setCapaian(Double.parseDouble(catatan.get().get("avgCapaian").toString()));
|
Optional<Map<String, Object>> catatan = listCatatan.stream()
|
||||||
|
.filter(c -> logbookKinerja.getNoRec().equals(c.get("logbookId"))).findFirst();
|
||||||
|
catatan.ifPresent(
|
||||||
|
c -> logbookKinerja.setCapaian(Double.parseDouble(c.get("avgCapaian").toString())));
|
||||||
} else {
|
} else {
|
||||||
logbookKinerja.setCapaian(0.0);
|
List<Map<String, Object>> listCatatan = logbookKinerjaDetailDao
|
||||||
}
|
.findSumCapaianByKontrak(logbookKinerja.getNoRec(), Arrays.asList(PERCENTAGE));
|
||||||
|
Optional<Map<String, Object>> catatan = listCatatan.stream()
|
||||||
} else {
|
.filter(c -> logbookKinerja.getNoRec().equals(c.get("logbookId"))).findFirst();
|
||||||
List<Map<String, Object>> listCatatan = logbookKinerjaDetailDao.findSumCapaianByKontrak(logbookKinerja.getNoRec(), Arrays.asList(PERCENTAGE));
|
catatan.ifPresent(
|
||||||
Optional<Map<String, Object>> catatan = listCatatan.stream().filter(c -> logbookKinerja.getNoRec().equals(c.get("logbookId"))).findFirst();
|
c -> logbookKinerja.setCapaian(Double.parseDouble(c.get("sumCapaian").toString())));
|
||||||
if (catatan.isPresent()) {
|
|
||||||
logbookKinerja.setCapaian(Double.parseDouble(catatan.get().get("sumCapaian").toString()));
|
|
||||||
} else {
|
|
||||||
logbookKinerja.setCapaian(0.0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
logbookKinerjaDao.save(logbookKinerja);
|
logbookKinerjaDao.save(logbookKinerja);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -13,8 +13,6 @@ import com.jasamedika.medifirst2000.vo.*;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
|
||||||
import com.jasamedika.medifirst2000.util.DateUtil;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
@ -27,20 +25,12 @@ import java.time.ZoneId;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import java.util.concurrent.CountDownLatch;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
import static com.jasamedika.medifirst2000.constants.Master.KelompokJabatan.PENUNJANG_MEDIK;
|
import static com.jasamedika.medifirst2000.constants.Master.KelompokJabatan.PENUNJANG_MEDIK;
|
||||||
|
|
||||||
@Service("monitoringAbsenService")
|
@Service("monitoringAbsenService")
|
||||||
public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements MonitoringAbsenService {
|
public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements MonitoringAbsenService {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringAbsenServiceImpl.class);
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BaseConverterImpl<StrukHistoriVO, StrukHistori> strukHistoriConverter;
|
private BaseConverterImpl<StrukHistoriVO, StrukHistori> strukHistoriConverter;
|
||||||
|
|
||||||
@ -161,9 +151,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
@Autowired
|
@Autowired
|
||||||
private LogbookKinerjaDao logbookKinerjaDao;
|
private LogbookKinerjaDao logbookKinerjaDao;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private LogbookKinerjaDetailDao logbookKinerjaDetailDao;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long reduceTime(Date jamAbsensi, Date jamJadwal) {
|
public Long reduceTime(Date jamAbsensi, Date jamJadwal) {
|
||||||
long diffMinutes = 0;
|
long diffMinutes = 0;
|
||||||
@ -211,78 +198,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
} else {
|
} else {
|
||||||
minutes = minutesAbsen;
|
minutes = minutesAbsen;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jadwalMasuk) && CommonUtil.isNotNullOrEmpty(jadwalPulang)) {
|
|
||||||
if ( (CommonUtil.isNullOrEmpty(jamAbsensiMasuk) && CommonUtil.isNotNullOrEmpty(jamAbsensiPulang)) || (CommonUtil.isNotNullOrEmpty(jamAbsensiMasuk) && CommonUtil.isNullOrEmpty(jamAbsensiPulang)) ) {
|
|
||||||
minutesJadwal = reduceTime(jadwalPulang, jadwalMasuk);
|
|
||||||
minutes = minutesJadwal / 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
long menit = minutes % 60;// menit
|
|
||||||
Long jam = minutes / 60;// jam
|
|
||||||
jam_efektif = jam + ".";
|
|
||||||
String minute = Long.toString(menit);
|
|
||||||
if (minute.length() < 2) {
|
|
||||||
minute = "0" + minute;
|
|
||||||
}
|
|
||||||
jam_efektif += minute;
|
|
||||||
|
|
||||||
Map<String, Integer> countHari = countHariKerja(minutes, shift);
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(countHari)) {
|
|
||||||
result.putAll(countHari);
|
|
||||||
}
|
|
||||||
result.put("jam_efektif", jam_efektif);
|
|
||||||
result.put("Minutes_Efektif", minutes);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> jamEfektifFactorRate(float factorRate, String shift) {
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
Long minutes = (long) 0;
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(factorRate)) {
|
|
||||||
minutes = (long) (factorRate * 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
long menit = minutes % 60;// menit
|
|
||||||
Long jam = minutes / 60;// jam
|
|
||||||
String jam_efektif = jam + ".";
|
|
||||||
String minute = Long.toString(menit);
|
|
||||||
if (minute.length() < 2) {
|
|
||||||
minute = "0" + minute;
|
|
||||||
}
|
|
||||||
jam_efektif += minute;
|
|
||||||
|
|
||||||
Map<String, Integer> countHari = countHariKerja(minutes, shift);
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(countHari)) {
|
|
||||||
result.putAll(countHari);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.put("jam_efektif", jam_efektif);
|
|
||||||
result.put("Minutes_Efektif", minutes);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> jamEfektifTunggal(Date jadwalPulang, Date jadwalMasuk, long waktuIstirahat, String shift, float factorRate) {
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
String jam_efektif;
|
|
||||||
long minutes;
|
|
||||||
Long minutesAbsen = (long) 0;
|
|
||||||
Long minutesJadwal = (long) 0;
|
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(factorRate)) {
|
|
||||||
minutesJadwal = (long) (factorRate * 60);
|
|
||||||
}else{
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jadwalMasuk) && CommonUtil.isNotNullOrEmpty(jadwalPulang)) {
|
|
||||||
minutesJadwal = reduceTime(jadwalPulang, jadwalMasuk);
|
|
||||||
if (minutesJadwal > 30) {
|
|
||||||
minutesJadwal = minutesJadwal - waktuIstirahat; // 30_adalah_waktu_istirahat
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
minutes = minutesJadwal / 2;
|
|
||||||
long menit = minutes % 60;// menit
|
long menit = minutes % 60;// menit
|
||||||
Long jam = minutes / 60;// jam
|
Long jam = minutes / 60;// jam
|
||||||
jam_efektif = jam + ".";
|
jam_efektif = jam + ".";
|
||||||
@ -1512,21 +1427,11 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
List<String> vpnIPXList = stringSplitDataSettingDatafixed("vpnAksesLuar");
|
List<String> vpnIPXList = stringSplitDataSettingDatafixed("vpnAksesLuar");
|
||||||
List<String> listIp = stringSplitDataSettingDatafixed("ip_addr");
|
List<String> listIp = stringSplitDataSettingDatafixed("ip_addr");
|
||||||
Map<String, Object> pegawaiMonitoring = new HashMap<>();
|
Map<String, Object> pegawaiMonitoring = new HashMap<>();
|
||||||
String[] listKetidakhadiran = {"L","PDK","I","CM","SKT","TL","CAP","CT","CB","S-P2"};
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(idFinger)) {
|
if (CommonUtil.isNotNullOrEmpty(idFinger)) {
|
||||||
pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger);
|
pegawaiMonitoring = pegawaiDao.getPegawaiToMonitoringAbsen(idFinger);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate);
|
List<Map<String, Object>> listKomponenJadwal = monitoringAbsenDao.findKalender(startDate, endDate);
|
||||||
|
|
||||||
List<Object[]> ListMasterShift = monitoringAbsenDao.getDataMasterShift();
|
|
||||||
List<Map<String, Object>> resultListMasterShift = ListMasterShift.stream().map(r -> {
|
|
||||||
Map<String, Object> m = new HashMap<>();
|
|
||||||
m.put("kodeShift", r[0]); // reportdisplay → kodeShift
|
|
||||||
m.put("namaShift", r[1]); // namashift → namaShift
|
|
||||||
return m;
|
|
||||||
}).collect(Collectors.toList());
|
|
||||||
|
|
||||||
for (Map<String, Object> data : listKomponenJadwal) {
|
for (Map<String, Object> data : listKomponenJadwal) {
|
||||||
String alasanCuti = "";
|
String alasanCuti = "";
|
||||||
// put everything data needs
|
// put everything data needs
|
||||||
@ -1584,13 +1489,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float rawFactorRate = (float) 0.0;
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && CommonUtil.isNotNullOrEmpty(data.get("factorRate"))) {
|
|
||||||
rawFactorRate = (float) listJadwal.get("factorRate");
|
|
||||||
}
|
|
||||||
|
|
||||||
data.put("factorRate", rawFactorRate);
|
|
||||||
data.put("jadwalMasuk", jamMasuk);
|
data.put("jadwalMasuk", jamMasuk);
|
||||||
data.put("jadwalPulang", jamPulang);
|
data.put("jadwalPulang", jamPulang);
|
||||||
data.put("idFinger", idFinger);
|
data.put("idFinger", idFinger);
|
||||||
@ -1658,8 +1556,8 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) && ((data.get("namaShift").equals("Pagi Malam")) || (data.get("namaShift").equals("Non Shift MOD")))) {
|
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) && ((data.get("namaShift").equals("Pagi Malam"))
|
||||||
//if (CommonUtil.isNotNullOrEmpty(data.get("namaShift")) && (data.get("namaShift").equals("Non Shift MOD"))) {
|
|| (data.get("namaShift").equals("Non Shift MOD")))) {
|
||||||
try {
|
try {
|
||||||
List<Map<String, Object>> listAbsensiPagi = new ArrayList<>();
|
List<Map<String, Object>> listAbsensiPagi = new ArrayList<>();
|
||||||
List<Map<String, Object>> listAbsensiPM = new ArrayList<>();
|
List<Map<String, Object>> listAbsensiPM = new ArrayList<>();
|
||||||
@ -1810,11 +1708,12 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
Map<String, Object> jamEfektif = null;
|
Map<String, Object> jamEfektif = null;
|
||||||
|
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi");
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
||||||
//jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
(Integer) data.get("idKelompokShiftKerja"), waktuIstirahatPagi, "Pagi");
|
||||||
} else if (i == 2) {
|
} else if (i == 2) {
|
||||||
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam, "Malam");
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
||||||
//jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Malam");
|
(Integer) data.get("idKelompokShiftKerja"), waktuIstirahatMalam,
|
||||||
|
"Malam");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
||||||
@ -1860,63 +1759,16 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
hadir_tanpa_jadwal++;
|
hadir_tanpa_jadwal++;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
float factorRateX = (float) data.get("factorRate");
|
if ((CommonUtil.isNullOrEmpty(dataPM.get("absensiPulang"))
|
||||||
|
&& CommonUtil.isNotNullOrEmpty(dataPM.get("absensiMasuk")))
|
||||||
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) && !Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift"))) {
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk)
|
||||||
//System.out.print(data.get("tanggal2"));
|
&& CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
||||||
try {
|
|
||||||
DateFormat sdfX = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date target = sdfX.parse( data.get("tanggal2").toString() );
|
|
||||||
|
|
||||||
Date now = new Date();
|
|
||||||
Date twoDaysAgo = new Date(now.getTime() - (2L * 24 * 60 * 60 * 1000));
|
|
||||||
|
|
||||||
if (target.before(twoDaysAgo) || target.equals(twoDaysAgo)) {
|
|
||||||
absenTunggal++;
|
absenTunggal++;
|
||||||
Map<String, Object> jamEfektif = new HashMap<>();
|
} else if ((CommonUtil.isNotNullOrEmpty(dataPM.get("absensiPulang"))
|
||||||
jamEfektif = jamEfektifTunggal(jadwalPulang, jadwalMasuk, (long) data.get("waktuIstirahat"), (String) data.get("namaShift"), (float) factorRateX);
|
&& CommonUtil.isNullOrEmpty(dataPM.get("absensiMasuk")))
|
||||||
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk)
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
&& CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
||||||
jamEf = (String) jamEfektif.get("jam_efektif");
|
|
||||||
jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif");
|
|
||||||
|
|
||||||
if (((Integer) jamEfektif.get("hariKerja")) != 0) {
|
|
||||||
harikerja += (Integer) jamEfektif.get("hariKerja");
|
|
||||||
p1 += (Integer) jamEfektif.get("p1");
|
|
||||||
pagi += (Integer) jamEfektif.get("pagi");
|
|
||||||
sore += (Integer) jamEfektif.get("sore");
|
|
||||||
malam += (Integer) jamEfektif.get("malam");
|
|
||||||
data.putAll(jamEfektif);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jumlahTerlambat += (long) 0;
|
|
||||||
data.put("terlambat", "0");
|
|
||||||
data.put("telat", (long) 0);
|
|
||||||
}
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
||||||
absenTunggal++;
|
absenTunggal++;
|
||||||
} else if ( CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && factorRateX > 0.0 && Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift")) ) {
|
|
||||||
Map<String, Object> jamEfektif = new HashMap<>();
|
|
||||||
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
||||||
jamEf = (String) jamEfektif.get("jam_efektif");
|
|
||||||
jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (((Integer) jamEfektif.get("hariKerja")) != 0) {
|
|
||||||
harikerja += (Integer) jamEfektif.get("hariKerja");
|
|
||||||
p1 += (Integer) jamEfektif.get("p1");
|
|
||||||
pagi += (Integer) jamEfektif.get("pagi");
|
|
||||||
sore += (Integer) jamEfektif.get("sore");
|
|
||||||
malam += (Integer) jamEfektif.get("malam");
|
|
||||||
data.putAll(jamEfektif);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2022,17 +1874,12 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
dataPM.put("verifikasi", "X");
|
dataPM.put("verifikasi", "X");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dataPM.put("jamEfektif", jamEf);
|
||||||
dataPM.put("jamEfektif", jamEf); //xxx
|
|
||||||
dataPM.put("jam_efektif", jamEf); //xxx
|
|
||||||
dataPM.put("kelebihanJamKerja", kelebihanJamKerja);
|
dataPM.put("kelebihanJamKerja", kelebihanJamKerja);
|
||||||
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
dataPM.put("jumlahTerlambat", jumlahTerlambat.toString());
|
||||||
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
dataPM.put("jumlahJamEfektif", jumlahJamEfektif.toString());
|
||||||
rsMap.put("jumlahKelebihanMenitKerja", jumlahKelebihanJamKerja);
|
dataPM.put("jumlahPulangAwal", jumlahPulangAwal.toString());
|
||||||
dataPM.put("jumlahTerlambat", jumlahTerlambat.toString()); //xxx
|
dataPM.put("alasan", alasanCuti);
|
||||||
dataPM.put("jumlahJamEfektif", jumlahJamEfektif.toString()); //xxx
|
|
||||||
dataPM.put("jumlahPulangAwal", jumlahPulangAwal.toString()); //xxx
|
|
||||||
dataPM.put("alasan", alasanCuti); //xxx
|
|
||||||
listkehadiran.add(dataPM);
|
listkehadiran.add(dataPM);
|
||||||
}
|
}
|
||||||
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
||||||
@ -2116,11 +1963,11 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
if (kelebihanJamKerja != 0L) {
|
if (kelebihanJamKerja != 0L) {
|
||||||
jumlahCountKelebihanJamKerja += 1;
|
jumlahCountKelebihanJamKerja += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> jamEfektif = new HashMap<>();
|
Map<String, Object> jamEfektif = new HashMap<>();
|
||||||
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) {
|
if (CommonUtil.isNotNullOrEmpty(data.get("namaShift"))) {
|
||||||
//jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk, (Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"), (String) data.get("namaShift"));
|
jamEfektif = jamEfektif(absensiDate, absensiMasuk, jadwalPulang, jadwalMasuk,
|
||||||
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), (String) data.get("namaShift"));
|
(Integer) data.get("idKelompokShiftKerja"), (long) data.get("waktuIstirahat"),
|
||||||
|
(String) data.get("namaShift"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
||||||
@ -2163,79 +2010,14 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
hadir_tanpa_jadwal++;
|
hadir_tanpa_jadwal++;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
float factorRateX = (float) data.get("factorRate");
|
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang"))
|
||||||
|
&& CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk")))
|
||||||
if ((CommonUtil.isNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNotNullOrEmpty(data.get("absensiMasuk"))) && !Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift"))) {
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
||||||
//System.out.print(data.get("tanggal2"));
|
|
||||||
try {
|
|
||||||
DateFormat sdfX = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date target = sdfX.parse( data.get("tanggal2").toString() );
|
|
||||||
|
|
||||||
Date now = new Date();
|
|
||||||
Date twoDaysAgo = new Date(now.getTime() - (2L * 24 * 60 * 60 * 1000));
|
|
||||||
|
|
||||||
if (target.before(twoDaysAgo) || target.equals(twoDaysAgo)) {
|
|
||||||
absenTunggal++;
|
absenTunggal++;
|
||||||
Map<String, Object> jamEfektif = new HashMap<>();
|
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang"))
|
||||||
jamEfektif = jamEfektifTunggal(jadwalPulang, jadwalMasuk, (long) data.get("waktuIstirahat"), (String) data.get("namaShift"), (float) factorRateX);
|
&& CommonUtil.isNullOrEmpty(data.get("absensiMasuk")))
|
||||||
|
&& (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
||||||
jamEf = (String) jamEfektif.get("jam_efektif");
|
|
||||||
jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif");
|
|
||||||
|
|
||||||
if (count == 1) {
|
|
||||||
if ( CommonUtil.isNotNullOrEmpty(data.get("terlambat"))) {
|
|
||||||
jumlahTerlambat -= (long) data.get("terlambat");
|
|
||||||
jumlahCountTerlambat -= 1;
|
|
||||||
data.put("terlambat", "0");
|
|
||||||
data.put("telat", (long) 0);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
jumlahTerlambat += (long) 0;
|
|
||||||
data.put("terlambat", "0");
|
|
||||||
data.put("telat", (long) 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (((Integer) jamEfektif.get("hariKerja")) != 0) {
|
|
||||||
harikerja += (Integer) jamEfektif.get("hariKerja");
|
|
||||||
p1 += (Integer) jamEfektif.get("p1");
|
|
||||||
pagi += (Integer) jamEfektif.get("pagi");
|
|
||||||
sore += (Integer) jamEfektif.get("sore");
|
|
||||||
malam += (Integer) jamEfektif.get("malam");
|
|
||||||
data.putAll(jamEfektif);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
jumlahTerlambat += (long) 0;
|
|
||||||
data.put("terlambat", "0");
|
|
||||||
data.put("telat", (long) 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ((CommonUtil.isNotNullOrEmpty(data.get("absensiPulang")) && CommonUtil.isNullOrEmpty(data.get("absensiMasuk"))) && (CommonUtil.isNotNullOrEmpty(jamMasuk) && CommonUtil.isNotNullOrEmpty(jamPulang))) {
|
|
||||||
absenTunggal++;
|
absenTunggal++;
|
||||||
|
|
||||||
System.out.print("terlambat 2");
|
|
||||||
} else if ( CommonUtil.isNotNullOrEmpty(data.get("factorRate")) && factorRateX > 0.0 && Arrays.asList(listKetidakhadiran).contains(data.get("kodeShift")) ) {
|
|
||||||
//System.out.print("Ini Gua Cuti 123");
|
|
||||||
Map<String, Object> jamEfektif = new HashMap<>();
|
|
||||||
jamEfektif = jamEfektifFactorRate((float) data.get("factorRate"), "Pagi");
|
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(jamEfektif)) {
|
|
||||||
jamEf = (String) jamEfektif.get("jam_efektif");
|
|
||||||
jumlahJamEfektif += (Long) jamEfektif.get("Minutes_Efektif");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (((Integer) jamEfektif.get("hariKerja")) != 0) {
|
|
||||||
harikerja += (Integer) jamEfektif.get("hariKerja");
|
|
||||||
p1 += (Integer) jamEfektif.get("p1");
|
|
||||||
pagi += (Integer) jamEfektif.get("pagi");
|
|
||||||
sore += (Integer) jamEfektif.get("sore");
|
|
||||||
malam += (Integer) jamEfektif.get("malam");
|
|
||||||
data.putAll(jamEfektif);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2340,7 +2122,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.put("jamEfektif", jamEf);
|
data.put("jamEfektif", jamEf);
|
||||||
data.put("jam_efektif", jamEf);
|
|
||||||
data.put("kelebihanJamKerja", kelebihanJamKerja);
|
data.put("kelebihanJamKerja", kelebihanJamKerja);
|
||||||
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
rsMap.put("jumlahCountKelebihanJamKerja", jumlahCountKelebihanJamKerja);
|
||||||
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
rsMap.put("jumlahKelebihanJamKerja", jumlahKelebihanJamKerja / 60);
|
||||||
@ -2386,21 +2167,7 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
listInformasiAbsensiLainnya.put("absen_tunggal_tanpa_jadwal", absenTunggalNonJadwal);
|
listInformasiAbsensiLainnya.put("absen_tunggal_tanpa_jadwal", absenTunggalNonJadwal);
|
||||||
|
|
||||||
if (CommonUtil.isNotNullOrEmpty(listkehadiran) && CommonUtil.isNotNullOrEmpty(groupKodeShift)) {
|
if (CommonUtil.isNotNullOrEmpty(listkehadiran) && CommonUtil.isNotNullOrEmpty(groupKodeShift)) {
|
||||||
if (Arrays.asList(listKetidakhadiran).contains(groupKodeShift)) {
|
dataShift.put(groupKodeShift, listkehadiran.stream().filter(p -> p.containsKey("kodeShift") && groupKodeShift.equals(p.get("kodeShift"))).count());
|
||||||
long jumlah = listkehadiran.stream().filter(
|
|
||||||
p -> p.containsKey("kodeShift") &&
|
|
||||||
groupKodeShift.equals(p.get("kodeShift"))
|
|
||||||
).count();
|
|
||||||
dataShift.put(groupKodeShift, jumlah);
|
|
||||||
}else{
|
|
||||||
long jumlah = listkehadiran.stream().filter(
|
|
||||||
p -> p.containsKey("kodeShift") &&
|
|
||||||
groupKodeShift.equals(p.get("kodeShift")) &&
|
|
||||||
!p.get("absensiMasuk").equals("-") &&
|
|
||||||
!p.get("absensiPulang").equals("-")
|
|
||||||
).count();
|
|
||||||
dataShift.put(groupKodeShift, jumlah);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
listShiftArray.add(dataShift);
|
listShiftArray.add(dataShift);
|
||||||
@ -2419,7 +2186,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
rsMap.put("jumlahCountTerlambat", jumlahCountTerlambat);
|
rsMap.put("jumlahCountTerlambat", jumlahCountTerlambat);
|
||||||
rsMap.put("jumlahTerlambat", jumlahTerlambat / 60);
|
rsMap.put("jumlahTerlambat", jumlahTerlambat / 60);
|
||||||
rsMap.put("menitTerlambat", jumlahTerlambat);
|
rsMap.put("menitTerlambat", jumlahTerlambat);
|
||||||
rsMap.put("jumlahMenitEfektif", jumlahJamEfektif);
|
|
||||||
rsMap.put("jumlahJamEfektif", jumlahJamEfektif / 60);
|
rsMap.put("jumlahJamEfektif", jumlahJamEfektif / 60);
|
||||||
rsMap.put("jumlahPulangAwal", jumlahPulangAwal / 60);
|
rsMap.put("jumlahPulangAwal", jumlahPulangAwal / 60);
|
||||||
rsMap.put("menitPulangAwal", jumlahPulangAwal);
|
rsMap.put("menitPulangAwal", jumlahPulangAwal);
|
||||||
@ -2430,7 +2196,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
rsMap.put("hariKerja", hariKerja);
|
rsMap.put("hariKerja", hariKerja);
|
||||||
rsMap.put("listkehadiran", listkehadiran);
|
rsMap.put("listkehadiran", listkehadiran);
|
||||||
rsMap.put("totalQtyShift", newResultDataShift);
|
rsMap.put("totalQtyShift", newResultDataShift);
|
||||||
rsMap.put("masterShift", resultListMasterShift);
|
|
||||||
|
|
||||||
listRs.addAll(listkehadiran);
|
listRs.addAll(listkehadiran);
|
||||||
result.putAll(rsMap);
|
result.putAll(rsMap);
|
||||||
@ -3215,174 +2980,6 @@ public class MonitoringAbsenServiceImpl extends BaseVoServiceImpl implements Mon
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional
|
|
||||||
public Map<String, Object> rekapitulasiCapaianHariDanJamKerjaPegawai(String tglAwal, String tglAkhir) {
|
|
||||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
|
|
||||||
LocalDate localDate = LocalDate.now().minusMonths(1);
|
|
||||||
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
|
||||||
Date tglAwalDefault = DateUtil.startMonth(date);
|
|
||||||
Date tglAkhirDefault = DateUtil.endMonth(date);
|
|
||||||
String tglAwalString = df.format(tglAwalDefault);
|
|
||||||
String tglAkhirString = df.format(tglAkhirDefault);
|
|
||||||
|
|
||||||
List<Object[]> listTargetHariJamKerja = monitoringAbsenDao.getTargetHariJamKerja();
|
|
||||||
List<Map<String, Object>> resultListTargetHariJamKerja = listTargetHariJamKerja.stream().map(r -> {
|
|
||||||
Map<String, Object> m = new HashMap<>();
|
|
||||||
m.put("pegawaiId", r[0]);
|
|
||||||
m.put("namaLengkap", r[1]);
|
|
||||||
m.put("jumlahTargetHari", r[2]);
|
|
||||||
m.put("jumlahTargetMenit", r[3]);
|
|
||||||
m.put("objectjabatanfk", r[4]);
|
|
||||||
return m;
|
|
||||||
}).collect(Collectors.toList());
|
|
||||||
|
|
||||||
ExecutorService executorService = Executors.newFixedThreadPool(2);
|
|
||||||
CountDownLatch latch = new CountDownLatch(resultListTargetHariJamKerja.size());
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
List<Map<String, Object>> listRekap = Collections.synchronizedList(new ArrayList<>());
|
|
||||||
|
|
||||||
try {
|
|
||||||
for (Map<String, Object> data : resultListTargetHariJamKerja) {
|
|
||||||
executorService.execute(() -> {
|
|
||||||
LOGGER.info("Simpan rekap absensi {}", data.get("namaLengkap"));
|
|
||||||
|
|
||||||
Map<String, Object> kehadiranByPegawai = this.simpanLogbookKinerja(data, tglAwalString, tglAkhirString);
|
|
||||||
listRekap.add(kehadiranByPegawai);
|
|
||||||
|
|
||||||
latch.countDown();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
latch.await();
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
Thread.currentThread().interrupt();
|
|
||||||
} finally {
|
|
||||||
executorService.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
result.put("listRekapKehadiran", listRekap);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
||||||
public Map<String, Object> simpanLogbookKinerja(Map<String, Object> data, String tglAwalString, String tglAkhirString) {
|
|
||||||
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Short kdprofile = 0;
|
|
||||||
boolean statusenabled = true;
|
|
||||||
boolean statusverifikasi = true;
|
|
||||||
Integer pegawaiId = (Integer) data.get("pegawaiId");
|
|
||||||
Pegawai pegawaiObject = new Pegawai();
|
|
||||||
pegawaiObject.setId(pegawaiId);
|
|
||||||
|
|
||||||
Integer jabatanId = (Integer) data.get("objectjabatanfk");
|
|
||||||
Jabatan jabatanObject = new Jabatan();
|
|
||||||
jabatanObject.setId(jabatanId);
|
|
||||||
|
|
||||||
String namaLengkap = (String) data.get("namaLengkap");
|
|
||||||
Date bulan = null;
|
|
||||||
Double capaianLogbookKinerja = null;
|
|
||||||
Double bobot = null;
|
|
||||||
Integer indikatorLogbookKinerja = null;
|
|
||||||
Double targetLogbookKinerja = null;
|
|
||||||
String catatan = "-";
|
|
||||||
String namakegiatan = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
bulan = df.parse(tglAwalString);
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, Object> kehadiranByPegawai = this.jumlahKehadiran(null, null, pegawaiId, tglAwalString, tglAkhirString);
|
|
||||||
|
|
||||||
capaianLogbookKinerja = ((Number) kehadiranByPegawai.get("hariKerja")).doubleValue(); // Untuk Capaian Row Insert Hari Kerja
|
|
||||||
bobot = (double) Master.IndikatorKinerja.BOBOT_HARI_KERJA;
|
|
||||||
indikatorLogbookKinerja = Master.IndikatorKinerja.PEMENUHAN_HARI_KERJA;
|
|
||||||
IndikatorKinerja indikatorLogbookKinerjaObject = new IndikatorKinerja();
|
|
||||||
indikatorLogbookKinerjaObject.setId(indikatorLogbookKinerja);
|
|
||||||
|
|
||||||
targetLogbookKinerja = ((Number) data.get("jumlahTargetHari")).doubleValue();
|
|
||||||
|
|
||||||
// ===============================
|
|
||||||
// 1. INSERT LOGBOOK HARI KERJA
|
|
||||||
// ===============================
|
|
||||||
|
|
||||||
LogbookKinerja logbookHariKerja = new LogbookKinerja();
|
|
||||||
logbookHariKerja.setBulan(bulan);
|
|
||||||
logbookHariKerja.setKdProfile(kdprofile);
|
|
||||||
logbookHariKerja.setStatusEnabled(statusenabled);
|
|
||||||
logbookHariKerja.setTarget(targetLogbookKinerja);
|
|
||||||
logbookHariKerja.setBobot(bobot);
|
|
||||||
logbookHariKerja.setCapaian(capaianLogbookKinerja);
|
|
||||||
logbookHariKerja.setStatusVerifikasi(statusverifikasi);
|
|
||||||
logbookHariKerja.setPegawai(pegawaiObject);
|
|
||||||
logbookHariKerja.setJabatan(jabatanObject);
|
|
||||||
logbookHariKerja.setIndikatorKinerja(indikatorLogbookKinerjaObject);
|
|
||||||
logbookHariKerja = logbookKinerjaDao.save(logbookHariKerja);
|
|
||||||
|
|
||||||
namakegiatan = "Hari Kerja Periode "+ tglAwalString +" s/d "+tglAkhirString;
|
|
||||||
LogbookKinerjaDetail detailHariKerja = new LogbookKinerjaDetail();
|
|
||||||
detailHariKerja.setKdProfile(kdprofile);
|
|
||||||
detailHariKerja.setStatusEnabled(statusenabled);
|
|
||||||
detailHariKerja.setNamaKegiatan(namakegiatan);
|
|
||||||
detailHariKerja.setCapaian(capaianLogbookKinerja);
|
|
||||||
detailHariKerja.setCatatan(catatan);
|
|
||||||
detailHariKerja.setTanggalKegiatan(bulan);
|
|
||||||
detailHariKerja.setStatusVerifikasi(statusverifikasi);
|
|
||||||
detailHariKerja.setLogbookKinerja(logbookHariKerja);
|
|
||||||
logbookKinerjaDetailDao.save(detailHariKerja);
|
|
||||||
|
|
||||||
// ===============================
|
|
||||||
// 1. INSERT LOGBOOK JAM KERJA
|
|
||||||
// ===============================
|
|
||||||
|
|
||||||
capaianLogbookKinerja = ((Number) kehadiranByPegawai.get("jumlahMenitEfektif")).doubleValue(); // Untuk Capaian Row Insert Jam Kerja
|
|
||||||
bobot = (double) Master.IndikatorKinerja.BOBOT_JAM_KERJA;
|
|
||||||
indikatorLogbookKinerja = Master.IndikatorKinerja.PEMENUHAN_JAM_KERJA;
|
|
||||||
IndikatorKinerja indikatorLogbookKinerjaJamObject = new IndikatorKinerja();
|
|
||||||
indikatorLogbookKinerjaJamObject.setId(indikatorLogbookKinerja);
|
|
||||||
targetLogbookKinerja = ((Number) data.get("jumlahTargetMenit")).doubleValue();
|
|
||||||
|
|
||||||
LogbookKinerja logbookJamKerja = new LogbookKinerja();
|
|
||||||
logbookJamKerja.setBulan(bulan);
|
|
||||||
logbookJamKerja.setKdProfile(kdprofile);
|
|
||||||
logbookJamKerja.setStatusEnabled(statusenabled);
|
|
||||||
logbookJamKerja.setTarget(targetLogbookKinerja);
|
|
||||||
logbookJamKerja.setBobot(bobot);
|
|
||||||
logbookJamKerja.setCapaian(capaianLogbookKinerja);
|
|
||||||
logbookJamKerja.setStatusVerifikasi(statusverifikasi);
|
|
||||||
logbookJamKerja.setPegawai(pegawaiObject);
|
|
||||||
logbookJamKerja.setJabatan(jabatanObject);
|
|
||||||
logbookJamKerja.setIndikatorKinerja(indikatorLogbookKinerjaJamObject);
|
|
||||||
logbookJamKerja = logbookKinerjaDao.save(logbookJamKerja);
|
|
||||||
|
|
||||||
namakegiatan = "Hari Kerja Periode "+ tglAwalString +" s/d "+tglAkhirString;
|
|
||||||
LogbookKinerjaDetail detailJamKerja = new LogbookKinerjaDetail();
|
|
||||||
detailJamKerja.setKdProfile(kdprofile);
|
|
||||||
detailJamKerja.setStatusEnabled(statusenabled);
|
|
||||||
detailJamKerja.setNamaKegiatan(namakegiatan);
|
|
||||||
detailJamKerja.setCapaian(capaianLogbookKinerja);
|
|
||||||
detailJamKerja.setCatatan(catatan);
|
|
||||||
detailJamKerja.setTanggalKegiatan(bulan);
|
|
||||||
detailJamKerja.setStatusVerifikasi(statusverifikasi);
|
|
||||||
detailJamKerja.setLogbookKinerja(logbookJamKerja);
|
|
||||||
logbookKinerjaDetailDao.save(detailJamKerja);
|
|
||||||
|
|
||||||
Map<String, Object> mapFilter = new HashMap<>();
|
|
||||||
mapFilter.put("idPegawai", kehadiranByPegawai.get("idPegawai"));
|
|
||||||
mapFilter.put("namaLengkap", namaLengkap);
|
|
||||||
mapFilter.put("hariKerja", kehadiranByPegawai.get("hariKerja"));
|
|
||||||
mapFilter.put("jumlahMenitEfektif", kehadiranByPegawai.get("jumlahMenitEfektif"));
|
|
||||||
mapFilter.put("menitTerlambat", kehadiranByPegawai.get("menitTerlambat"));
|
|
||||||
mapFilter.put("jumlahKelebihanMenitKerja", kehadiranByPegawai.get("jumlahKelebihanMenitKerja"));
|
|
||||||
mapFilter.put("jumlahTargetHariKerja", data.get("jumlahTargetHari"));
|
|
||||||
mapFilter.put("jumlahTargetMenitKerja", data.get("jumlahTargetMenit"));
|
|
||||||
|
|
||||||
return mapFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public Map<String, Object> rekapitulasiKehadiranByUnitKerja(Integer idUnitKerja, String startDate, String endDate) {
|
public Map<String, Object> rekapitulasiKehadiranByUnitKerja(Integer idUnitKerja, String startDate, String endDate) {
|
||||||
|
|||||||
@ -693,13 +693,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
double persenRemunDokterUmumHD = toDoubleSettingFix("persenRemunDokterUmumHD", tglAkhir);
|
double persenRemunDokterUmumHD = toDoubleSettingFix("persenRemunDokterUmumHD", tglAkhir);
|
||||||
double persenRemunLabGenetika = toDoubleSettingFix("persenRemunLabGenetika", tglAkhir);
|
double persenRemunLabGenetika = toDoubleSettingFix("persenRemunLabGenetika", tglAkhir);
|
||||||
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
||||||
|
|
||||||
Integer[] ICU_NICU;
|
|
||||||
if((date.before(new Date(1761929999000L)) || date.equals(new Date(1761929999000L)))){
|
|
||||||
ICU_NICU = ICU_NICU_V1;
|
|
||||||
}else{
|
|
||||||
ICU_NICU = ICU_NICU_v2;
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* Persiapan filter logic remunerasi
|
* Persiapan filter logic remunerasi
|
||||||
*/
|
*/
|
||||||
@ -2225,14 +2218,6 @@ public class PelayananPasienServiceImpl extends BaseVoServiceImpl implements Pel
|
|||||||
double persenRemunDokterUmumHD = toDoubleSettingFix("persenRemunDokterUmumHD", tglAkhir);
|
double persenRemunDokterUmumHD = toDoubleSettingFix("persenRemunDokterUmumHD", tglAkhir);
|
||||||
double persenRemunLabGenetika = toDoubleSettingFix("persenRemunLabGenetika", tglAkhir);
|
double persenRemunLabGenetika = toDoubleSettingFix("persenRemunLabGenetika", tglAkhir);
|
||||||
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
double persenRemunTerapis = toDoubleSettingFix("persenRemunTerapis", tglAkhir);
|
||||||
|
|
||||||
Integer[] ICU_NICU;
|
|
||||||
if((date.before(new Date(1761929999000L)) || date.equals(new Date(1761929999000L)))){
|
|
||||||
ICU_NICU = ICU_NICU_V1;
|
|
||||||
}else{
|
|
||||||
ICU_NICU = ICU_NICU_v2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Persiapan filter logic remunerasi
|
* Persiapan filter logic remunerasi
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -281,7 +281,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mendapatkan kelompok kerja dokter
|
* Mendapatkan kelompok kerja dokter
|
||||||
*/
|
*/
|
||||||
@ -297,14 +296,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
/*
|
/*
|
||||||
* Mendapatkan nominal target remunerasi untuk simulasi
|
* Mendapatkan nominal target remunerasi untuk simulasi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Integer[] ICU_NICU;
|
|
||||||
if((date.before(new Date(1761929999000L)) || date.equals(new Date(1761929999000L)))){
|
|
||||||
ICU_NICU = ICU_NICU_V1;
|
|
||||||
}else{
|
|
||||||
ICU_NICU = ICU_NICU_v2;
|
|
||||||
}
|
|
||||||
|
|
||||||
Double targetRemun = 0.0;
|
Double targetRemun = 0.0;
|
||||||
String sdTarget = getSettingDataFixed("targetRemunJasaDokter");
|
String sdTarget = getSettingDataFixed("targetRemunJasaDokter");
|
||||||
if (CommonUtil.isNotNullOrEmpty(sdTarget))
|
if (CommonUtil.isNotNullOrEmpty(sdTarget))
|
||||||
@ -580,7 +571,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")))
|
if (!DOKTER_PEMERIKSA.equals(d.get("idJenisPelaksana")))
|
||||||
d.put("isTermasukProporsi", false);
|
d.put("isTermasukProporsi", false);
|
||||||
} else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan")) && Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
|
} else if (CommonUtil.isNotNullOrEmpty(d.get("idRuangan"))
|
||||||
|
&& Arrays.asList(ICU_NICU).contains(Integer.parseInt(d.get("idRuangan").toString()))) {
|
||||||
double persenJasa = persenTindakan / 100;
|
double persenJasa = persenTindakan / 100;
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d);
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
@ -1877,17 +1869,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
.map(d -> d.get("paketId").toString() + d.get("idKelas").toString()).collect(Collectors.toList()));
|
.map(d -> d.get("paketId").toString() + d.get("idKelas").toString()).collect(Collectors.toList()));
|
||||||
allConcatProdukKelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
|
allConcatProdukKelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
|
||||||
.map(d -> d.get("idProduk").toString() + d.get("idKelas").toString()).collect(Collectors.toList()));
|
.map(d -> d.get("idProduk").toString() + d.get("idKelas").toString()).collect(Collectors.toList()));
|
||||||
//List<HargaNettoProdukByKelasD> tarifDetailReguler = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(allConcatProdukKelas); // Ganti Versi batching
|
List<HargaNettoProdukByKelasD> tarifDetailReguler = hargaNettoProdukByKelasDDao
|
||||||
|
.findByConcateProdukKelas(allConcatProdukKelas);
|
||||||
final int BATCH_SIZE = Master.AppDefaultVariabel.RECURSIVE_BATCH; // Limitasi Jumlah Data Per Batch
|
|
||||||
int total = allConcatProdukKelas.size();
|
|
||||||
List<HargaNettoProdukByKelasD> tarifDetailReguler = new ArrayList<>();
|
|
||||||
for (int i = 0; i < total; i += BATCH_SIZE) {
|
|
||||||
int end = Math.min(i + BATCH_SIZE, total);
|
|
||||||
List<String> batchKeys = allConcatProdukKelas.subList(i, end);
|
|
||||||
List<HargaNettoProdukByKelasD> batchResult = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(batchKeys);
|
|
||||||
tarifDetailReguler.addAll(batchResult);
|
|
||||||
}
|
|
||||||
List<String> allConcatProdukNonkelas = listData.stream()
|
List<String> allConcatProdukNonkelas = listData.stream()
|
||||||
.filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId")))
|
.filter(d -> CommonUtil.isNotNullOrEmpty(d.get("regRefId")))
|
||||||
.map(d -> d.get("regRefId").toString() + NON_KELAS).collect(Collectors.toList());
|
.map(d -> d.get("regRefId").toString() + NON_KELAS).collect(Collectors.toList());
|
||||||
@ -1895,17 +1878,8 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
.map(d -> d.get("paketId").toString() + NON_KELAS).collect(Collectors.toList()));
|
.map(d -> d.get("paketId").toString() + NON_KELAS).collect(Collectors.toList()));
|
||||||
allConcatProdukNonkelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
|
allConcatProdukNonkelas.addAll(listData.stream().filter(d -> CommonUtil.isNotNullOrEmpty(d.get("idProduk")))
|
||||||
.map(d -> d.get("idProduk").toString() + NON_KELAS).collect(Collectors.toList()));
|
.map(d -> d.get("idProduk").toString() + NON_KELAS).collect(Collectors.toList()));
|
||||||
//List<HargaNettoProdukByKelasD> tarifDetailNonKelas = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(allConcatProdukNonkelas); // Ganti Versi batching
|
List<HargaNettoProdukByKelasD> tarifDetailNonKelas = hargaNettoProdukByKelasDDao
|
||||||
|
.findByConcateProdukKelas(allConcatProdukNonkelas);
|
||||||
final int BATCH_SIZE_NB = Master.AppDefaultVariabel.RECURSIVE_BATCH;
|
|
||||||
int totalNB = allConcatProdukNonkelas.size();
|
|
||||||
List<HargaNettoProdukByKelasD> tarifDetailNonKelas = new ArrayList<>();
|
|
||||||
for (int i = 0; i < totalNB; i += BATCH_SIZE_NB) {
|
|
||||||
int end = Math.min(i + BATCH_SIZE_NB, totalNB);
|
|
||||||
List<String> batchKeys = allConcatProdukNonkelas.subList(i, end);
|
|
||||||
List<HargaNettoProdukByKelasD> batchResult = hargaNettoProdukByKelasDDao.findByConcateProdukKelas(batchKeys);
|
|
||||||
tarifDetailNonKelas.addAll(batchResult);
|
|
||||||
}
|
|
||||||
Set<Map<String, Object>> ibuPaketDiRanapByDokter = pelayananPasienDao.findPasienPaketDiRanapByDokter(drKsmObgyn,
|
Set<Map<String, Object>> ibuPaketDiRanapByDokter = pelayananPasienDao.findPasienPaketDiRanapByDokter(drKsmObgyn,
|
||||||
allProdukEntriId, Arrays.asList(GRUP_RAWAT_INAP));
|
allProdukEntriId, Arrays.asList(GRUP_RAWAT_INAP));
|
||||||
Set<Integer> setIdIbu = ibuPaketDiRanapByDokter.stream()
|
Set<Integer> setIdIbu = ibuPaketDiRanapByDokter.stream()
|
||||||
@ -2266,9 +2240,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
} else {
|
} else {
|
||||||
remunFfs = this.splitRemunFfs(idPegawai, bulan);
|
remunFfs = this.splitRemunFfs(idPegawai, bulan);
|
||||||
}
|
}
|
||||||
|
|
||||||
// cek disini
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<Map<String, Object>> listData = (List<Map<String, Object>>) remunFfs.get("remun");
|
List<Map<String, Object>> listData = (List<Map<String, Object>>) remunFfs.get("remun");
|
||||||
Double target = Double.parseDouble(remunFfs.get("targetRemun").toString());
|
Double target = Double.parseDouble(remunFfs.get("targetRemun").toString());
|
||||||
@ -2296,14 +2267,6 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
double persenRemunVisiteDokterKelompokBudiRahmat = toDoubleSettingFix(
|
||||||
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
"persenRemunVisiteDokterKelompokBudiRahmat", tglAkhir);
|
||||||
long millisPersenJasa2024 = Long.parseLong(getSettingDataFixed("tmtPersenJasa2024"));
|
long millisPersenJasa2024 = Long.parseLong(getSettingDataFixed("tmtPersenJasa2024"));
|
||||||
|
|
||||||
Integer[] ICU_NICU;
|
|
||||||
if((date.before(new Date(1761929999000L)) || date.equals(new Date(1761929999000L)))){
|
|
||||||
ICU_NICU = ICU_NICU_V1;
|
|
||||||
}else{
|
|
||||||
ICU_NICU = ICU_NICU_v2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TMT persentase jasa tahun 2024
|
* TMT persentase jasa tahun 2024
|
||||||
*/
|
*/
|
||||||
@ -2374,7 +2337,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenJasa = persenOperatorAkumulatif / 100;
|
double persenJasa = persenOperatorAkumulatif / 100;
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
d.put("persenJasa", persenOperatorAkumulatif + "%");
|
||||||
d.put("keterangan", "Tarif Jasa (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
@ -2384,7 +2347,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenJasa = persenAsisten / 100;
|
double persenJasa = persenAsisten / 100;
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("persenJasa", persenAsisten + "%");
|
d.put("persenJasa", persenAsisten + "%");
|
||||||
d.put("keterangan", "Tarif Jasa (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
@ -2394,7 +2357,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenJasa = persenAnestesi / 100;
|
double persenJasa = persenAnestesi / 100;
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifIBS, hargaJual, d);
|
||||||
d.put("persenJasa", persenAnestesi + "%");
|
d.put("persenJasa", persenAnestesi + "%");
|
||||||
d.put("keterangan", "Tarif Jasa (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa Bedah (" + persenTarifJasaBedah + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
} else if ((BEDAH_SENTRAL.equals(d.get("idDepartemen"))
|
||||||
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
|| (RADIOLOGI.equals(d.get("idDepartemen")) && CATHLAB.equals(d.get("idRuangan"))))
|
||||||
@ -2501,7 +2464,7 @@ public class RemunerasiServiceImpl extends BaseVoServiceImpl implements Remunera
|
|||||||
double persenJasa = persenTindakan / 100;
|
double persenJasa = persenTindakan / 100;
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenJasa * persenTarifICU, hargaJual, d);
|
||||||
d.put("persenJasa", persenTindakan + "%");
|
d.put("persenJasa", persenTindakan + "%");
|
||||||
d.put("keterangan", "Tarif Jasa (" + persenTarifJasaICU + "%)" + hargaJasa.getKeterangan());
|
d.put("keterangan", "Tarif Jasa ICU (" + persenTarifJasaICU + "%)" + hargaJasa.getKeterangan());
|
||||||
d.put("hargaJasa", hargaJasa.getNilai());
|
d.put("hargaJasa", hargaJasa.getNilai());
|
||||||
} else {
|
} else {
|
||||||
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d);
|
RemunHargaJasaDto hargaJasa = hargaJasa(persenTindakan / 100, hargaJual, d);
|
||||||
|
|||||||
@ -30,8 +30,6 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.orm.jpa.JpaSystemException;
|
import org.springframework.orm.jpa.JpaSystemException;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -2629,18 +2627,7 @@ public class SdmController extends LocaleController<AkunVO> {
|
|||||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||||
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Map<String, Object> error = new HashMap<>();
|
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
error.put("message", e.getMessage());
|
|
||||||
|
|
||||||
if (e.getStackTrace() != null && e.getStackTrace().length > 0) {
|
|
||||||
error.put("line", e.getStackTrace()[0].getLineNumber());
|
|
||||||
error.put("class", e.getStackTrace()[0].getClassName());
|
|
||||||
error.put("method", e.getStackTrace()[0].getMethodName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return RestUtil.getJsonResponse(error, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
|
|
||||||
//return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2655,16 +2642,7 @@ public class SdmController extends LocaleController<AkunVO> {
|
|||||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
getMessage(MessageResource.LABEL_SUCCESS, request));
|
||||||
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Map<String, Object> error = new HashMap<>();
|
return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
error.put("message", e.getMessage());
|
|
||||||
|
|
||||||
if (e.getStackTrace() != null && e.getStackTrace().length > 0) {
|
|
||||||
error.put("line", e.getStackTrace()[0].getLineNumber());
|
|
||||||
error.put("class", e.getStackTrace()[0].getClassName());
|
|
||||||
error.put("method", e.getStackTrace()[0].getMethodName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return RestUtil.getJsonResponse(error, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3845,53 +3823,6 @@ public class SdmController extends LocaleController<AkunVO> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Fitur Auto Generate Capaian Kehadian
|
|
||||||
@RequestMapping(value = "/new-rekap-kehadiran", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
||||||
public ResponseEntity<Map<String, Object>> generateCapaianHariDanJamKerjaPegawai(
|
|
||||||
HttpServletRequest request) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> result = monitoringAbsenService.rekapitulasiCapaianHariDanJamKerjaPegawai(null, null);
|
|
||||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
|
||||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
|
||||||
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
|
||||||
} catch (Exception e) {
|
|
||||||
Map<String, Object> error = new HashMap<>();
|
|
||||||
error.put("message", e.getMessage());
|
|
||||||
|
|
||||||
if (e.getStackTrace() != null && e.getStackTrace().length > 0) {
|
|
||||||
error.put("line", e.getStackTrace()[0].getLineNumber());
|
|
||||||
error.put("class", e.getStackTrace()[0].getClassName());
|
|
||||||
error.put("method", e.getStackTrace()[0].getMethodName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return RestUtil.getJsonResponse(error, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping(value = "/new-rekap-kehadiran/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
||||||
public ResponseEntity<Map<String, Object>> generateCapaianHariDanJamKerjaPegawaiByDate(@PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate, HttpServletRequest request) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> result = monitoringAbsenService.rekapitulasiCapaianHariDanJamKerjaPegawai(startDate, endDate);
|
|
||||||
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
|
|
||||||
getMessage(MessageResource.LABEL_SUCCESS, request));
|
|
||||||
return RestUtil.getJsonResponse(result, HttpStatus.OK);
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
Map<String, Object> error = new HashMap<>();
|
|
||||||
error.put("message", e.getMessage());
|
|
||||||
|
|
||||||
if (e.getStackTrace() != null && e.getStackTrace().length > 0) {
|
|
||||||
error.put("line", e.getStackTrace()[0].getLineNumber());
|
|
||||||
error.put("class", e.getStackTrace()[0].getClassName());
|
|
||||||
error.put("method", e.getStackTrace()[0].getMethodName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return RestUtil.getJsonResponse(error, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
|
|
||||||
//return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping(value = "/rekap-kehadiran-by-unit-kerja/{idUnitKerja}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
@RequestMapping(value = "/rekap-kehadiran-by-unit-kerja/{idUnitKerja}/{startDate}/{endDate}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
public ResponseEntity<Map<String, Object>> rekapKehadiranByUnitKerja(
|
public ResponseEntity<Map<String, Object>> rekapKehadiranByUnitKerja(
|
||||||
@PathVariable("idUnitKerja") Integer idUnitKerja, @PathVariable("startDate") String startDate,
|
@PathVariable("idUnitKerja") Integer idUnitKerja, @PathVariable("startDate") String startDate,
|
||||||
@ -5993,18 +5924,4 @@ public class SdmController extends LocaleController<AkunVO> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "cek-health", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
||||||
public ResponseEntity<Map<String, Object>> cekHealth(HttpServletRequest request) {
|
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
|
|
||||||
Map<String, Object> body = new HashMap<>();
|
|
||||||
String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
|
||||||
|
|
||||||
body.put("message", "ready");
|
|
||||||
body.put("time", now);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user