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:
parent
172559120b
commit
c72352c294
@ -1,5 +1,6 @@
|
|||||||
package com.jasamedika.medifirst2000.dao;
|
package com.jasamedika.medifirst2000.dao;
|
||||||
|
|
||||||
|
import com.jasamedika.medifirst2000.dto.PresensiHariLibur;
|
||||||
import com.jasamedika.medifirst2000.entities.Kalender;
|
import com.jasamedika.medifirst2000.entities.Kalender;
|
||||||
import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur;
|
import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
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.data.repository.query.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -36,4 +38,11 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository<Ma
|
|||||||
+ "and to_char(kalender.tanggal,'yyyy')>=:tahun")
|
+ "and to_char(kalender.tanggal,'yyyy')>=:tahun")
|
||||||
List<Map<String, Object>> getMappingHariLibur(@Param("tahun") String 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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package com.jasamedika.medifirst2000.service.impl;
|
|||||||
import com.jasamedika.medifirst2000.constants.Master;
|
import com.jasamedika.medifirst2000.constants.Master;
|
||||||
import com.jasamedika.medifirst2000.dao.*;
|
import com.jasamedika.medifirst2000.dao.*;
|
||||||
import com.jasamedika.medifirst2000.dto.DataCutiDto;
|
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.service.JatahCutiDanIzinService;
|
||||||
import com.jasamedika.medifirst2000.util.CommonUtil;
|
import com.jasamedika.medifirst2000.util.CommonUtil;
|
||||||
import com.jasamedika.medifirst2000.util.DateUtil;
|
import com.jasamedika.medifirst2000.util.DateUtil;
|
||||||
@ -44,10 +46,12 @@ 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) {
|
||||||
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();
|
DataCutiDto.DataCutiDtoBuilder cutiIzinBuilder = DataCutiDto.builder();
|
||||||
List<Integer> listKomponenIndex = new ArrayList<>();
|
List<Integer> listKomponenIndex = new ArrayList<>();
|
||||||
int sisaCuti;
|
int sisaCuti;
|
||||||
@ -306,8 +310,6 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
sisaCutiN2 = 0;
|
sisaCutiN2 = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
difCutiTerpakai(cutiTerpakaiN2, dataCutiB2);
|
|
||||||
difCutiTerpakai(cutiTerpakaiN1, dataCutiB1);
|
|
||||||
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
|
sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -530,11 +532,24 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService {
|
|||||||
return cutiIzinBuilder.build();
|
return cutiIzinBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) {
|
private Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) {
|
||||||
int difCutiTerpakai = 0;
|
int difCutiTerpakai = 0;
|
||||||
if (cutiTerpakai > dataCuti)
|
if (cutiTerpakai > dataCuti)
|
||||||
difCutiTerpakai = cutiTerpakai - dataCuti;
|
difCutiTerpakai = cutiTerpakai - dataCuti;
|
||||||
return difCutiTerpakai;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user