Merge branch 'dev/pegawai/cuti' into dev/no-cron
This commit is contained in:
commit
c45ee3f864
@ -12,6 +12,7 @@ import com.jasamedika.medifirst2000.util.DateUtil;
|
|||||||
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 java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -54,9 +55,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) {
|
public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) {
|
||||||
DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId);
|
return calculateCutiIzin(pegawaiId, year, statusPegawaiId);
|
||||||
JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId);
|
|
||||||
return tangguhkanCutiBersama(dto, jatahCutiRequest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) {
|
private DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) {
|
||||||
@ -175,7 +174,14 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
// Hitung Absen di tanggal cuti bersama
|
// Hitung Absen di tanggal cuti bersama
|
||||||
List<String> listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year);
|
List<String> listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year);
|
||||||
int countDataHabsen = 0;
|
int countDataHabsen = 0;
|
||||||
|
Date awal2024 = new Date(1704042000000L);
|
||||||
for (String tglStr : listTglCutiBersama) {
|
for (String tglStr : listTglCutiBersama) {
|
||||||
|
Date tglCheck;
|
||||||
|
try {
|
||||||
|
tglCheck = sdf.parse(tglStr);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
tglCheck = new Date();
|
||||||
|
}
|
||||||
List<Date> dataHabsen = new ArrayList<>();
|
List<Date> dataHabsen = new ArrayList<>();
|
||||||
// cek shift malam
|
// cek shift malam
|
||||||
String tglPrev = sdf.format(java.sql.Date.valueOf(LocalDate.parse(tglStr).minusDays(1)));
|
String tglPrev = sdf.format(java.sql.Date.valueOf(LocalDate.parse(tglStr).minusDays(1)));
|
||||||
@ -208,7 +214,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
} else {
|
} else {
|
||||||
countDataHabsen += 1;
|
countDataHabsen += 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (tglCheck.before(awal2024)) {
|
||||||
// cuti tahunan di tanggal cuti bersama
|
// cuti tahunan di tanggal cuti bersama
|
||||||
List<Date> tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao
|
List<Date> tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao
|
||||||
.getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr);
|
.getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr);
|
||||||
@ -231,7 +237,6 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dataCutiB = countDataHabsen;
|
dataCutiB = countDataHabsen;
|
||||||
cutiIzinBuilder.dataCutiB(dataCutiB);
|
|
||||||
// kondisikan cuti bersama yg sudah berlalu
|
// kondisikan cuti bersama yg sudah berlalu
|
||||||
if (cutiTerpakaiN2 > dataCutiB2) {
|
if (cutiTerpakaiN2 > dataCutiB2) {
|
||||||
cutiTerpakaiB2 = dataCutiB2;
|
cutiTerpakaiB2 = dataCutiB2;
|
||||||
@ -243,6 +248,10 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
} else {
|
} else {
|
||||||
cutiTerpakaiB1 = cutiTerpakaiN1;
|
cutiTerpakaiB1 = cutiTerpakaiN1;
|
||||||
}
|
}
|
||||||
|
JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId);
|
||||||
|
int jatahCutiBersamaDitangguhkan = tangguhkanCutiBersama(cutiTerpakaiB1, jatahCutiRequest);
|
||||||
|
dataCutiB += jatahCutiBersamaDitangguhkan;
|
||||||
|
cutiIzinBuilder.dataCutiB(dataCutiB);
|
||||||
// Mendapatkan kondisi penangguhan saat ini
|
// Mendapatkan kondisi penangguhan saat ini
|
||||||
cutiIzinBuilder.isTangguhkanB2(false);
|
cutiIzinBuilder.isTangguhkanB2(false);
|
||||||
cutiIzinBuilder.isTangguhkanB1(false);
|
cutiIzinBuilder.isTangguhkanB1(false);
|
||||||
@ -552,7 +561,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
return JatahCutiRequest.builder().pegawaiId(pegawaiId).year(year).statusPegawaiId(statusPegawaiId).build();
|
return JatahCutiRequest.builder().pegawaiId(pegawaiId).year(year).statusPegawaiId(statusPegawaiId).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) {
|
private int tangguhkanCutiBersama(Integer cutiBersamaTerpakaiTahunLalu, JatahCutiRequest request) {
|
||||||
if (CommonUtil.isNullOrEmpty(request.getYear()))
|
if (CommonUtil.isNullOrEmpty(request.getYear()))
|
||||||
request.setYear(String.valueOf(DateUtil.getYear(new Date())));
|
request.setYear(String.valueOf(DateUtil.getYear(new Date())));
|
||||||
Date tahunLalu = DateUtil.getInstanceCalendar(-1);
|
Date tahunLalu = DateUtil.getInstanceCalendar(-1);
|
||||||
@ -562,24 +571,25 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
.getPresensiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu);
|
.getPresensiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu);
|
||||||
List<HariLiburTerpakai> listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream()
|
List<HariLiburTerpakai> listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream()
|
||||||
.filter(HariLiburTerpakai::getIsCutiBersamaDitangguhkan).collect(Collectors.toList());
|
.filter(HariLiburTerpakai::getIsCutiBersamaDitangguhkan).collect(Collectors.toList());
|
||||||
List<HariLiburTerpakai> listCutiTahunLalu = tanggalCutiDao.getCutiByTahun(request.getPegawaiId(), LIBUR_CB,
|
|
||||||
awalTahunLalu, akhirTahunLalu);
|
|
||||||
if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty())
|
if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty())
|
||||||
return dto;
|
return 0;
|
||||||
|
List<HariLiburTerpakai> listCutiDiCutiBersamaTahunLalu = tanggalCutiDao.getCutiByTahun(request.getPegawaiId(),
|
||||||
|
LIBUR_CB, awalTahunLalu, akhirTahunLalu);
|
||||||
if (DateUtil.getYear(new Date()) == Integer.parseInt(request.getYear())) {
|
if (DateUtil.getYear(new Date()) == Integer.parseInt(request.getYear())) {
|
||||||
List<ListTanggalCuti> listCutiTahunLaluBelumDisetujui = tanggalCutiDao
|
List<ListTanggalCuti> listCutiTahunLaluBelumDisetujui = tanggalCutiDao
|
||||||
.notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu);
|
.notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu);
|
||||||
int presensiCutiBersama = listPresensiTahunLalu.size();
|
int presensiCutiBersama = listPresensiTahunLalu.size();
|
||||||
int cutiDiCutiBersama = listCutiTahunLalu.size();
|
int cutiDiCutiBersama = listCutiDiCutiBersamaTahunLalu.size();
|
||||||
|
int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - cutiBersamaTerpakaiTahunLalu;
|
||||||
int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size()
|
int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size()
|
||||||
- listCutiTahunLaluBelumDisetujui.size();
|
- listCutiTahunLaluBelumDisetujui.size();
|
||||||
int jatahDipakai = presensiCutiBersama + cutiDiCutiBersama - dto.getCutiTerpakaiB1();
|
if (jatahDitangguhkan >= sisaJatah) {
|
||||||
if (jatahDitangguhkan >= jatahDipakai) {
|
if (jatahDitangguhkan < 0)
|
||||||
dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan);
|
jatahDitangguhkan = 0;
|
||||||
dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB());
|
return jatahDitangguhkan;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dto;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user