diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java index 33212ec8..359a0813 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java @@ -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=:tahun") List> 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 getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java index bbe22d00..0cd8851c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java @@ -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 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 listPresensi = mapKalenderToHariLiburDao + .getByTahun(DateUtil.startYear(calendar.getTime()), DateUtil.endYear(calendar.getTime())); + return dto; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java new file mode 100644 index 00000000..9ed999e5 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java @@ -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; + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java new file mode 100644 index 00000000..f3b5f6cb --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java @@ -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; + +}