Update service jatah cuti dan izin
Penerapana hitungan presensi dan komparasi data cuti tahun sebelumnya untuk validasi penangguhan cuti bersama ke tahun berjalan
This commit is contained in:
parent
c72352c294
commit
c65caf2afb
@ -58,6 +58,10 @@ public final class Master {
|
||||
public static final Integer VISIT = 29;
|
||||
}
|
||||
|
||||
public static final class HariLibur {
|
||||
public static final Integer LIBUR_CB = 8;
|
||||
}
|
||||
|
||||
public static final class IndikatorKinerja {
|
||||
public static final Integer KEPATUHAN_PELAYANAN_MEDIS = 674;
|
||||
public static final Integer KETEPATAN_KEHADIRAN = 357;
|
||||
|
||||
@ -41,8 +41,17 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository<Ma
|
||||
@Query("select distinct new com.jasamedika.medifirst2000.dto.PresensiHariLibur("
|
||||
+ "pg.id as idPegawai, pg.namaLengkap as namaLengkap, kld.tanggal as tanggal) "
|
||||
+ "from Pegawai pg, Habsen hab, MapKalenderToHariLibur mkl " + "inner join mkl.tanggal kld "
|
||||
+ "where pg.idFinger = hab.empl_code " + "and cast(hab.tr_date as date) = kld.tanggal "
|
||||
+ "where pg.id = :idPegawai " +
|
||||
"and pg.idFinger = hab.empl_code " + "and cast(hab.tr_date as date) = kld.tanggal "
|
||||
+ "and mkl.isCutiBersamaDitangguhkan is true " + "and kld.tanggal between :tglAwal and :tglAkhir")
|
||||
List<PresensiHariLibur> getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
|
||||
List<PresensiHariLibur> getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
|
||||
|
||||
@Query("select mkl from MapKalenderToHariLibur mkl " +
|
||||
"inner join mkl.tanggal kld " +
|
||||
"where mkl.statusEnabled is true " +
|
||||
"and kld.tanggal between :tglAwal and :tglAkhir " +
|
||||
"and mkl.hariLiburId = :idHariLibur")
|
||||
List<MapKalenderToHariLibur> getByTahun(@Param("idHariLibur") Integer idHariLibur,
|
||||
@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
|
||||
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.dao.*;
|
||||
import com.jasamedika.medifirst2000.dto.DataCutiDto;
|
||||
import com.jasamedika.medifirst2000.dto.JatahCutiRequest;
|
||||
import com.jasamedika.medifirst2000.dto.PresensiHariLibur;
|
||||
import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur;
|
||||
import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService;
|
||||
import com.jasamedika.medifirst2000.util.CommonUtil;
|
||||
import com.jasamedika.medifirst2000.util.DateUtil;
|
||||
@ -14,6 +15,9 @@ import org.springframework.stereotype.Service;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.jasamedika.medifirst2000.constants.Master.HariLibur.LIBUR_CB;
|
||||
|
||||
/**
|
||||
* @author Salman
|
||||
@ -544,11 +548,28 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
||||
}
|
||||
|
||||
private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) {
|
||||
DataCutiDto.DataCutiDtoBuilder builder = DataCutiDto.builder();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.YEAR, -1);
|
||||
List<PresensiHariLibur> listPresensi = mapKalenderToHariLiburDao
|
||||
.getByTahun(DateUtil.startYear(calendar.getTime()), DateUtil.endYear(calendar.getTime()));
|
||||
Date previousYear = DateUtil.getInstanceCalendar(-1);
|
||||
Date janFirstPrevYear = DateUtil.startYear(previousYear);
|
||||
Date decEndPrevYear = DateUtil.endYear(previousYear);
|
||||
List<PresensiHariLibur> listPresensiPrevYear = mapKalenderToHariLiburDao.getPresensiByTahun(request.getPegawaiId(),
|
||||
janFirstPrevYear, decEndPrevYear);
|
||||
List<MapKalenderToHariLibur> listCBPrevYear = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, janFirstPrevYear, decEndPrevYear);
|
||||
int countCBPrevYear = listCBPrevYear.size();
|
||||
List<MapKalenderToHariLibur> listCBPrevYearSuspended = listCBPrevYear.stream()
|
||||
.filter(MapKalenderToHariLibur::getIsCutiBersamaDitangguhkan)
|
||||
.collect(Collectors.toList());
|
||||
int countCBSuspended = listCBPrevYearSuspended.size();
|
||||
int countCBAllocated = 0;
|
||||
for (PresensiHariLibur presensiPrevYear : listPresensiPrevYear) {
|
||||
for (MapKalenderToHariLibur cbPrevYearSuspended : listCBPrevYearSuspended) {
|
||||
if (presensiPrevYear.getTanggal().equals(cbPrevYearSuspended.getTanggal().getTanggal())) {
|
||||
countCBAllocated++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dto.getCutiTerpakaiB1() < countCBPrevYear && countCBPrevYear - dto.getCutiTerpakaiB1() > countCBSuspended)
|
||||
dto.setDataCutiB(countCBSuspended);
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
@ -237,6 +237,12 @@ public final class DateUtil implements Serializable {
|
||||
return now.get(Calendar.YEAR);
|
||||
}
|
||||
|
||||
public static Date getInstanceCalendar(int addYear) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.YEAR, addYear);
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
public static final synchronized Integer getYearFromDate(Date date) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user