Update service jatah cuti dan iziin

Pembuatan subrutin get data presensi di cuti bersama yang bisa ditangguhkan di tahun sebelumnya
This commit is contained in:
Salman Manoe 2025-01-13 04:17:11 +07:00
parent 172559120b
commit c72352c294
4 changed files with 81 additions and 5 deletions

View File

@ -1,5 +1,6 @@
package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.dto.PresensiHariLibur;
import com.jasamedika.medifirst2000.entities.Kalender;
import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur;
import org.springframework.data.jpa.repository.Query;
@ -7,6 +8,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -36,4 +38,11 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository<Ma
+ "and to_char(kalender.tanggal,'yyyy')>=:tahun")
List<Map<String, Object>> getMappingHariLibur(@Param("tahun") String tahun);
@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 "
+ "and mkl.isCutiBersamaDitangguhkan is true " + "and kld.tanggal between :tglAwal and :tglAkhir")
List<PresensiHariLibur> getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir);
}

View File

@ -3,6 +3,8 @@ package com.jasamedika.medifirst2000.service.impl;
import com.jasamedika.medifirst2000.constants.Master;
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.service.JatahCutiDanIzinService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.DateUtil;
@ -44,10 +46,12 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
@Override
public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) {
return calculateCutiIzin(pegawaiId, year, statusPegawaiId);
DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId);
JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId);
return tangguhkanCutiBersama(dto, jatahCutiRequest);
}
public DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) {
private DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) {
DataCutiDto.DataCutiDtoBuilder cutiIzinBuilder = DataCutiDto.builder();
List<Integer> listKomponenIndex = new ArrayList<>();
int sisaCuti;
@ -306,8 +310,6 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
sisaCutiN2 = 0;
}
} else {
difCutiTerpakai(cutiTerpakaiN2, dataCutiB2);
difCutiTerpakai(cutiTerpakaiN1, dataCutiB1);
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
}
}
@ -530,11 +532,24 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
return cutiIzinBuilder.build();
}
public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) {
private Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) {
int difCutiTerpakai = 0;
if (cutiTerpakai > dataCuti)
difCutiTerpakai = cutiTerpakai - dataCuti;
return difCutiTerpakai;
}
private JatahCutiRequest transform(Integer pegawaiId, String year, Integer statusPegawaiId) {
return JatahCutiRequest.builder().pegawaiId(pegawaiId).year(year).statusPegawaiId(statusPegawaiId).build();
}
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()));
return dto;
}
}

View File

@ -0,0 +1,25 @@
package com.jasamedika.medifirst2000.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Salman
* @version 1.0.0
* @since 10/01/2025
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class JatahCutiRequest {
Integer pegawaiId;
String year;
Integer statusPegawaiId;
}

View File

@ -0,0 +1,27 @@
package com.jasamedika.medifirst2000.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Salman
* @version 1.0.0
* @since 10/01/2025
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PresensiHariLibur {
private Integer idPegawai;
private String namaLengkap;
private Date tanggal;
}