From 172559120bb25b2f84e49f2d205b37708cd34afa Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 9 Jan 2025 15:24:20 +0700 Subject: [PATCH] Add service jatah cuti dan izin Persiapan legacy service sebelum enhancement feature cuti bersama bisa ditangguhkan ke tahun berikutnya --- .../dao/JatahCutiDanIzinDao.java | 47 +- .../service/JatahCutiDanIzinService.java | 14 + .../PermohonanStatusPegawaiService.java | 5 +- .../impl/JatahCutiDanIzinServiceImpl.java | 540 ++++++++++++++++++ .../impl/PermohonanStatusPegawaiImpl.java | 207 +++---- .../service/impl/ReportServiceImpl.java | 80 ++- .../medifirst2000/dto/DataCutiDto.java | 78 +++ .../entities/JatahCutiDanIzin.java | 115 +--- .../medifirst2000/vo/JatahCutiDanIzinVO.java | 91 +-- .../controller/SdmController.java | 32 +- 10 files changed, 820 insertions(+), 389 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JatahCutiDanIzinService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/DataCutiDto.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JatahCutiDanIzinDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JatahCutiDanIzinDao.java index 0a2df3ef..f6e22ff1 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JatahCutiDanIzinDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/JatahCutiDanIzinDao.java @@ -1,41 +1,41 @@ package com.jasamedika.medifirst2000.dao; +import com.jasamedika.medifirst2000.entities.JatahCutiDanIzin; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + import java.util.Date; import java.util.List; import java.util.Map; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.PagingAndSortingRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import com.jasamedika.medifirst2000.entities.JatahCutiDanIzin; - @Repository("JatahCutiDanIzinDao") -public interface JatahCutiDanIzinDao extends PagingAndSortingRepository { +public interface JatahCutiDanIzinDao extends JpaRepository { + @Query("select jatahCuti " + "from JatahCutiDanIzin jatahCuti " + "left join jatahCuti.pegawai pegawai " + "left join jatahCuti.komponenIndex komponenIndex " + "where jatahCuti.tahun = :tahun and pegawai.id = :idPegawai " + "and komponenIndex.id = :komponenIndexId") - public JatahCutiDanIzin getJatahCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, + JatahCutiDanIzin getJatahCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("komponenIndexId") Integer komponenIndexId); @Query("select jatahCuti " + "from JatahCutiDanIzin jatahCuti " + "left join jatahCuti.pegawai pegawai " + "left join jatahCuti.komponenIndex komponenIndex " + "where jatahCuti.tahun = :tahun and pegawai.id = :idPegawai " + "and komponenIndex.id in (:komponenIndexId)") - public JatahCutiDanIzin getJatahCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, + JatahCutiDanIzin getJatahCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("komponenIndexId") List komponenIndexId); @Query("select coalesce(jatahCuti.value,0) " + "from JatahCutiDanIzin jatahCuti " + "left join jatahCuti.pegawai pegawai " + "left join jatahCuti.komponenIndex komponenIndex " + "where jatahCuti.tahun = :tahun and pegawai.id = :idPegawai " + "and komponenIndex.id = :komponenIndexId") - public Integer getDataCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, + Integer getDataCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("komponenIndexId") Integer komponenIndexId); @Query("select jatahCuti.isTangguhkan " + "from JatahCutiDanIzin jatahCuti " + "left join jatahCuti.pegawai pegawai " + "left join jatahCuti.komponenIndex komponenIndex " + "where jatahCuti.tahun = :tahun and pegawai.id = :idPegawai " + "and komponenIndex.id = :komponenIndexId") - public Boolean getPenangguhanSisaCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, + Boolean getPenangguhanSisaCuti(@Param("tahun") String tahun, @Param("idPegawai") Integer idPegawai, @Param("komponenIndexId") Integer komponenIndexId); @Query("select new map(" + "jatahCuti.value as value, " + "jatahCuti.sisaCuti as sisaCuti, " @@ -49,22 +49,7 @@ public interface JatahCutiDanIzinDao extends PagingAndSortingRepository> getAllJatahCuti(@Param("komponenIndexId") Integer komponenIndexId); - - @Query("select new map(" + "jatahCuti.noRec as noRec, " + "jatahCuti.komponenIndexId as komponenIndexId, " - + "jatahCuti.tahun as tahun, " + "jatahCuti.value as value, " + "jatahCuti.sisaCuti as sisaCuti, " - + "jatahCuti.cutiTerpakai as cutiTerpakai, " + "jatahCuti.isTangguhkan as isTangguhkan, " - + "pegawai.id as idPegawai, " + "pegawai.namaLengkap as namaPegawai, " + "pegawai.nipPns as nipPegawai, " - + "unitKerja.name as unitKerja," + "subUnitKerja.name as subUnitKerja) " - + "from JatahCutiDanIzin jatahCuti, MapPegawaiJabatanToUnitKerja mapPegawai " - + "left join jatahCuti.pegawai pegawai " + "left join jatahCuti.komponenIndex komponenIndex " - + "left join mapPegawai.subUnitKerjaPegawai subUnitKerja " - + "left join mapPegawai.unitKerjaPegawai unitKerja " + "where mapPegawai.pegawaiId = pegawai.id " - + "and mapPegawai.isPrimary is true " + "and mapPegawai.statusEnabled is true " - + "and pegawai.id = :pegawaiId " + "and komponenIndex.id = :komponenIndexId " - + "order by pegawai.id, jatahCuti.tahun") - public List> getAllJatahCuti(@Param("komponenIndexId") Integer komponenIndexId, - @Param("pegawaiId") Integer pegawaiId); + List> getAllJatahCuti(@Param("komponenIndexId") Integer komponenIndexId); @Query("select new map(" + "jatahCuti.noRec as noRec, " + "jatahCuti.komponenIndexId as komponenIndexId, " + "komponenIndex.komponenIndex as komponenIndex, " + "jatahCuti.tahun as tahun, " @@ -80,18 +65,18 @@ public interface JatahCutiDanIzinDao extends PagingAndSortingRepository= cast(to_char(current_date,'yyyy') as int)-2 " + "and pegawai.id = :pegawaiId " + "and komponenIndex.id in (:komponenIndexId) " + "order by jatahCuti.tahun, komponenIndex.komponenIndex") - public List> getAllJatahCuti(@Param("komponenIndexId") List komponenIndexId, + List> getAllJatahCuti(@Param("komponenIndexId") List komponenIndexId, @Param("pegawaiId") Integer pegawaiId); @Query("select l.tgl " + "from PlanningPegawaiStatus p " + "left join p.listTanggal l " + "where p.statusEnabled is true and l.statusEnabled is true " + "and p.approvalStatus = 1 and l.approvalStatus is true " + "and p.statusPegawaiPlanId = :idStatusPlan " + "and p.pegawaiId = :idPegawai " + "and to_char(l.tgl, 'yyyy-MM-dd') = :tglCuti " + "order by l.tgl") - public List getCutiTahunanDiTglCutiBersama(@Param("idStatusPlan") Integer idStatusPlan, + List getCutiTahunanDiTglCutiBersama(@Param("idStatusPlan") Integer idStatusPlan, @Param("idPegawai") Integer idPegawai, @Param("tglCuti") String tglCuti); @Query("select sum(jc.cutiTerpakai) from JatahCutiDanIzin jc " + "where jc.pegawaiId = :pegawaiId and jc.tahun < :tahun") - public Integer getHistoriCutiTerpakai(@Param("pegawaiId") Integer idPegawai, @Param("tahun") String tahun); + Integer getHistoriCutiTerpakai(@Param("pegawaiId") Integer idPegawai, @Param("tahun") String tahun); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JatahCutiDanIzinService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JatahCutiDanIzinService.java new file mode 100644 index 00000000..f0d2f819 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/JatahCutiDanIzinService.java @@ -0,0 +1,14 @@ +package com.jasamedika.medifirst2000.service; + +import com.jasamedika.medifirst2000.dto.DataCutiDto; + +/** + * @author Salman + * @version 1.0.0 + * @since 09/01/2025 + */ +public interface JatahCutiDanIzinService { + + DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PermohonanStatusPegawaiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PermohonanStatusPegawaiService.java index 4856ec81..3d9861bd 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PermohonanStatusPegawaiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/PermohonanStatusPegawaiService.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.service; +import com.jasamedika.medifirst2000.dto.DataCutiDto; import com.jasamedika.medifirst2000.entities.PegawaiHistoriRekapIndex; import com.jasamedika.medifirst2000.vo.JatahCutiDanIzinVO; import com.jasamedika.medifirst2000.vo.KelompokShiftKerjaCustomVO; @@ -27,7 +28,7 @@ public interface PermohonanStatusPegawaiService { Map savePlanningPegawaiStatus(PlanningPegawaiStatusVO vo); - Map perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai); + DataCutiDto perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai); boolean validateTanggalPermohonanRev(Integer statusPegawaiPlanId, Set listTanggalCutiVO, Integer idPegawai); @@ -89,8 +90,6 @@ public interface PermohonanStatusPegawaiService { JatahCutiDanIzinVO setJatahCutiDanIzinVo(Integer idPegawai, Integer idStatusPegawai); - Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti); - Integer countJumlahPengajuanDiprosesByPegawai(Integer idPegawai, Integer idPlan); Integer countJumlahPengajuanDiprosesByPegawai(Integer idPegawai, Integer idPlan, String noPlanning); 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 new file mode 100644 index 00000000..bbe22d00 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java @@ -0,0 +1,540 @@ +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.service.JatahCutiDanIzinService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; + +/** + * @author Salman + * @version 1.0.0 + * @since 09/01/2025 + */ +@Service +public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { + + @Autowired + private PlanningPegawaiStatusDao planningPegawaiStatusDao; + + @Autowired + private JatahCutiDanIzinDao jatahCutiDanIzinDao; + + @Autowired + private PegawaiDao pegawaiDao; + + @Autowired + private PegawaiHistoriRekapIndexDao pegawaiHistoriRekapIndexDao; + + @Autowired + private PegawaiJadwalKerjaDao pegawaiJadwalKerjaDao; + + @Autowired + private MapKalenderToHariLiburDao mapKalenderToHariLiburDao; + + @Autowired + private HabsenDao habsenDao; + + @Override + public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) { + return calculateCutiIzin(pegawaiId, year, statusPegawaiId); + } + + public DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) { + DataCutiDto.DataCutiDtoBuilder cutiIzinBuilder = DataCutiDto.builder(); + List listKomponenIndex = new ArrayList<>(); + int sisaCuti; + Integer sisaCutiB2 = 0; + Integer sisaCutiB1 = 0; + int sisaCutiB; + int sisaCutiN2; + int sisaCutiN1; + int sisaCutiN; + Integer jatahCuti = 0; + int sisaJatahRawatJalan = 0; + int sisaJatahRawatInap = 0; + int sisaIzin; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); + if (CommonUtil.isNullOrEmpty(year)) + year = formatter.format(DateUtil.now()); + int yearn1 = Integer.parseInt(year) - 1; + int yearn2 = Integer.parseInt(year) - 2; + int yearn3 = Integer.parseInt(year) + 1; + String yearN1 = Integer.toString(yearn1); + String yearN2 = Integer.toString(yearn2); + String yearN3 = Integer.toString(yearn3); + if (statusPegawaiId == 5 || statusPegawaiId == 1 || statusPegawaiId == 21) { + String komponen = Master.KomponenIndex.CUTI_NONSHIFT.toString(); + String komponenIndeksCutiShift = Master.KomponenIndex.CUTI_SHIFT.toString(); + String komponenIndeksCutiBersama = Master.KomponenIndex.CUTI_BERSAMA.toString(); + listKomponenIndex.add(Integer.valueOf(komponen)); + listKomponenIndex.add(Integer.valueOf(komponenIndeksCutiShift)); + // Initiate cuti bersama + Integer cutiTerpakaiB2; + Integer cutiTerpakaiB1; + Integer cutiTerpakaiB; + // Menghitung cuti terpakai tahun n-2 + Integer cutiTerpakaiN2 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN2, pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(cutiTerpakaiN2)) + cutiTerpakaiN2 = 0; + // Menghitung cuti terpakai tahun n-1 + Integer cutiTerpakaiN1 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN1, pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(cutiTerpakaiN1)) + cutiTerpakaiN1 = 0; + // Menghitung cuti terpakai tahun n + Integer cutiTerpakaiN = pegawaiHistoriRekapIndexDao.getCutiTerpakai(year, pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(cutiTerpakaiN)) + cutiTerpakaiN = 0; + // Menghitung cuti terpakai by histori pengajuan + Integer jumlahTglByPengajuan = pegawaiHistoriRekapIndexDao.getHistoriCutiTerpakaiByTahunPengajuan(year, + pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(jumlahTglByPengajuan)) + jumlahTglByPengajuan = 0; + Integer rekapHistoriCutiTerpakai = pegawaiHistoriRekapIndexDao.getHistoriCutiTerpakai(yearN2, pegawaiId, + listKomponenIndex); + if (CommonUtil.isNullOrEmpty(rekapHistoriCutiTerpakai)) + rekapHistoriCutiTerpakai = 0; + Integer dataHistoriCutiTerpakai = jatahCutiDanIzinDao.getHistoriCutiTerpakai(pegawaiId, yearN2); + if (CommonUtil.isNullOrEmpty(dataHistoriCutiTerpakai)) + dataHistoriCutiTerpakai = 0; + Integer diffHistori = dataHistoriCutiTerpakai - rekapHistoriCutiTerpakai; + if (rekapHistoriCutiTerpakai < dataHistoriCutiTerpakai) { + if (cutiTerpakaiN2 > diffHistori) { + cutiTerpakaiN2 -= diffHistori; + } else { + diffHistori -= cutiTerpakaiN2; + cutiTerpakaiN2 = 0; + if (cutiTerpakaiN1 > diffHistori) { + cutiTerpakaiN1 -= diffHistori; + } else { + diffHistori -= cutiTerpakaiN1; + cutiTerpakaiN1 = 0; + if (cutiTerpakaiN > diffHistori) { + cutiTerpakaiN -= diffHistori; + } else { + cutiTerpakaiN = 0; + } + } + } + } + // Mendapatkan seluruh data jatah cuti untuk pegawai tertentu + Integer dataCutiB2 = jatahCutiDanIzinDao.getDataCuti(yearN2, pegawaiId, + Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n-2 + Integer dataCutiB1 = jatahCutiDanIzinDao.getDataCuti(yearN1, pegawaiId, + Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n-1 + Integer dataCutiB = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId, + Integer.valueOf(komponenIndeksCutiBersama)); // dataCutiBersama_di_n + Integer dataCutiN2 = jatahCutiDanIzinDao.getDataCuti(yearN2, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n-2 + Integer dataCutiN1 = jatahCutiDanIzinDao.getDataCuti(yearN1, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n-1 + Integer dataCutiN = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n + Integer dataCutiN3 = jatahCutiDanIzinDao.getDataCuti(yearN3, pegawaiId, Integer.valueOf(komponen)); // dataCutiTahunan_tahun_n+1 + // Validasi existing data + if (CommonUtil.isNullOrEmpty(dataCutiB2)) + dataCutiB2 = 0; + if (CommonUtil.isNullOrEmpty(dataCutiB1)) + dataCutiB1 = 0; + if (CommonUtil.isNullOrEmpty(dataCutiB)) + dataCutiB = 0; + if (CommonUtil.isNullOrEmpty(dataCutiN2)) + dataCutiN2 = 0; + if (CommonUtil.isNullOrEmpty(dataCutiN1)) + dataCutiN1 = 0; + if (CommonUtil.isNullOrEmpty(dataCutiN)) + dataCutiN = 0; + if (CommonUtil.isNullOrEmpty(dataCutiN3)) + dataCutiN3 = 12; + // mapping jatah cuti + cutiIzinBuilder.dataCutiB2(dataCutiB2); + cutiIzinBuilder.dataCutiB1(dataCutiB1); + cutiIzinBuilder.dataCutiB(dataCutiB); + cutiIzinBuilder.dataCutiN2(dataCutiN2); + cutiIzinBuilder.dataCutiN1(dataCutiN1); + cutiIzinBuilder.dataCutiN(dataCutiN); + cutiIzinBuilder.dataCutiN3(dataCutiN3); + + // Hitung Absen di tanggal cuti bersama + List listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year); + int countDataHabsen = 0; + for (String tglStr : listTglCutiBersama) { + List dataHabsen = new ArrayList<>(); + // cek shift malam + String tglPrev = sdf.format(java.sql.Date.valueOf(LocalDate.parse(tglStr).minusDays(1))); + List> listMap = pegawaiJadwalKerjaDao.getNamaShiftKerjaPegawaiByTanggal(tglPrev, + tglStr, pegawaiId); + if (listMap.size() == 2) { + if (!listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam") + && listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) { + dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId)); + } else if (listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam") + && listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) { + dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId)); + } else if (!listMap.get(0).get("namaShift").toString().toLowerCase().contains("malam") + && !listMap.get(1).get("namaShift").toString().toLowerCase().contains("malam")) { + dataHabsen = habsenDao.countAbsenTglCutiBersama(tglStr, pegawaiDao.getidFinger(pegawaiId)); + } + } + if (CommonUtil.isNotNullOrEmpty(dataHabsen)) { + if (listMap.size() == 2) { + if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT) + .contains(Integer.parseInt(listMap.get(1).get("idShift").toString()))) { + if (Integer.parseInt(year) < 2023) { + countDataHabsen += 2; + } else { + countDataHabsen += 1; + } + } else { + countDataHabsen += 1; + } + } else { + countDataHabsen += 1; + } + } else { + // cuti tahunan di tanggal cuti bersama + List tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao + .getCutiTahunanDiTglCutiBersama(Master.StatusPegawai.CUTI_TAHUNAN, pegawaiId, tglStr); + if (CommonUtil.isNotNullOrEmpty(tglCutiTahunanDiTglCutiBersama)) { + if (listMap.size() == 2) { + if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT) + .contains(Integer.parseInt(listMap.get(1).get("idShift").toString()))) { + if (Integer.parseInt(year) < 2023) { + countDataHabsen += 2; + } else { + countDataHabsen += 1; + } + } else { + countDataHabsen += 1; + } + } else { + countDataHabsen += 1; + } + } + } + } + dataCutiB = countDataHabsen; + cutiIzinBuilder.dataCutiB(dataCutiB); + // kondisikan cuti bersama yg sudah berlalu + if (cutiTerpakaiN2 > dataCutiB2) { + cutiTerpakaiB2 = dataCutiB2; + } else { + cutiTerpakaiB2 = cutiTerpakaiN2; + } + if (cutiTerpakaiN1 > dataCutiB1) { + cutiTerpakaiB1 = dataCutiB1; + } else { + cutiTerpakaiB1 = cutiTerpakaiN1; + } + // Mendapatkan kondisi penangguhan saat ini + cutiIzinBuilder.isTangguhkanB2(false); + cutiIzinBuilder.isTangguhkanB1(false); + cutiIzinBuilder.isTangguhkanB(false); + Boolean jCutiN2 = jatahCutiDanIzinDao.getPenangguhanSisaCuti(yearN2, pegawaiId, Integer.valueOf(komponen)); + if (CommonUtil.isNotNullOrEmpty(jCutiN2)) { + cutiIzinBuilder.isTangguhkanN2(jCutiN2); + } else { + jCutiN2 = false; + cutiIzinBuilder.isTangguhkanN2(false); + } + Boolean jCutiN1 = jatahCutiDanIzinDao.getPenangguhanSisaCuti(yearN1, pegawaiId, Integer.valueOf(komponen)); + if (CommonUtil.isNotNullOrEmpty(jCutiN1)) { + cutiIzinBuilder.isTangguhkanN1(jCutiN1); + } else { + jCutiN1 = false; + cutiIzinBuilder.isTangguhkanN1(false); + } + Boolean jCutiN = jatahCutiDanIzinDao.getPenangguhanSisaCuti(year, pegawaiId, Integer.valueOf(komponen)); + if (CommonUtil.isNotNullOrEmpty(jCutiN)) { + cutiIzinBuilder.isTangguhkanN(jCutiN); + } else { + cutiIzinBuilder.isTangguhkanN(false); + } + if (dataCutiB >= cutiTerpakaiN) { + sisaCutiB = dataCutiB - cutiTerpakaiN; + cutiTerpakaiB = cutiTerpakaiN; + } else { + sisaCutiB = 0; + cutiTerpakaiB = dataCutiB; + } + cutiIzinBuilder.sisaCutiB2(sisaCutiB2); + cutiIzinBuilder.sisaCutiB1(sisaCutiB1); + cutiIzinBuilder.sisaCutiB(sisaCutiB); + cutiIzinBuilder.cutiTerpakaiB2(cutiTerpakaiB2); + cutiIzinBuilder.cutiTerpakaiB1(cutiTerpakaiB1); + cutiIzinBuilder.cutiTerpakaiB(cutiTerpakaiB); + // menghitung jatah cuti yang terpakai + Integer jatahCutiTerpakaiN2 = 0, jatahCutiTerpakaiN1 = 0, jatahCutiTerpakaiN = 0; + int allCutiTerpakai = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) + difCutiTerpakai(cutiTerpakaiN, dataCutiB); + if (dataCutiN2 > 0) { + if (allCutiTerpakai >= dataCutiN2) { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); + } else { + jatahCutiTerpakaiN2 = dataCutiN2; + } + } else { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); + } else { + jatahCutiTerpakaiN2 = allCutiTerpakai; + } + } + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) > 0) { + sisaCutiN2 = 0; // hangus + } else { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6) { + if (jatahCutiTerpakaiN2 == 0 && !jCutiN1) { + sisaCutiN2 = 6; + } else if (jatahCutiTerpakaiN2 == 0) { + sisaCutiN2 = 0; + } else if (!jCutiN2 && !jCutiN1) { + sisaCutiN2 = 6 - jatahCutiTerpakaiN2; + } else { + sisaCutiN2 = 0; + } + } else { + difCutiTerpakai(cutiTerpakaiN2, dataCutiB2); + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); + sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2; + } + } + } else { + if (dataCutiN2 - jatahCutiTerpakaiN2 >= 6 && !jCutiN2) { + sisaCutiN2 = 6 - jatahCutiTerpakaiN2; + } else { + sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2; + } + } + if (sisaCutiN2 > 0 && difCutiTerpakai(cutiTerpakaiN, dataCutiB) > 0) { + if (sisaCutiN2 > difCutiTerpakai(cutiTerpakaiN, dataCutiB)) { + jatahCutiTerpakaiN2 += difCutiTerpakai(cutiTerpakaiN, dataCutiB); + } else { + jatahCutiTerpakaiN2 += sisaCutiN2; + } + } + allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN2; + if (allCutiTerpakai > 0) { + if (allCutiTerpakai >= dataCutiN1) { + jatahCutiTerpakaiN1 = dataCutiN1; + allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN1; + if ((allCutiTerpakai > 0) && (allCutiTerpakai <= dataCutiN)) { + jatahCutiTerpakaiN = allCutiTerpakai; + } else { + jatahCutiTerpakaiN = 0; + } + } else { + jatahCutiTerpakaiN1 = allCutiTerpakai; + } + } + } else if (dataCutiN1 > 0) { + if (allCutiTerpakai >= dataCutiN1) { + jatahCutiTerpakaiN1 = dataCutiN1; + allCutiTerpakai = allCutiTerpakai - jatahCutiTerpakaiN1; + if ((allCutiTerpakai > 0) && (allCutiTerpakai <= dataCutiN)) { + jatahCutiTerpakaiN = allCutiTerpakai; + } else { + jatahCutiTerpakaiN = 0; + } + } else { + jatahCutiTerpakaiN1 = allCutiTerpakai; + } + } else if (dataCutiN > 0) { + if (allCutiTerpakai <= dataCutiN) { + jatahCutiTerpakaiN = allCutiTerpakai; + } else { + jatahCutiTerpakaiN = 0; + } + } + // Menghitung cuti terpakai tahun n+1 + Integer cutiTerpakaiN3 = pegawaiHistoriRekapIndexDao.getCutiTerpakai(yearN3, pegawaiId, listKomponenIndex); + if (CommonUtil.isNullOrEmpty(cutiTerpakaiN3)) + cutiTerpakaiN3 = 0; + if (cutiTerpakaiN3 > 0) { + // menghitung sisa cuti n-1 terlebih dahulu + if (dataCutiN1 - jatahCutiTerpakaiN1 >= 6 && !jCutiN1) { + sisaCutiN1 = 6 - jatahCutiTerpakaiN1; + } else { + sisaCutiN1 = dataCutiN1 - jatahCutiTerpakaiN1; + } + // juga menghitung sisa cuti n terlebih dahulu + sisaCutiN = dataCutiN - jatahCutiTerpakaiN; + // menghitung jatah cuti terpakai karena pengajuan lintas tahun + if (difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) == 0 && !jCutiN1) { + if (sisaCutiN1 > 0) { + if (cutiTerpakaiN3 > sisaCutiN1) { + jatahCutiTerpakaiN1 += sisaCutiN1; + cutiTerpakaiN3 -= sisaCutiN1; + if (sisaCutiN > 0) { + if (cutiTerpakaiN3 > sisaCutiN) { + jatahCutiTerpakaiN += sisaCutiN; + } else { + jatahCutiTerpakaiN += cutiTerpakaiN3; + } + } + } else { + jatahCutiTerpakaiN1 += cutiTerpakaiN3; + } + } else if (sisaCutiN > 0) { + if (cutiTerpakaiN3 > sisaCutiN) { + jatahCutiTerpakaiN += sisaCutiN; + } else { + jatahCutiTerpakaiN += cutiTerpakaiN3; + } + } + } else { + if (sisaCutiN > 0) { + if (cutiTerpakaiN3 > sisaCutiN) { + jatahCutiTerpakaiN += sisaCutiN; + } else { + jatahCutiTerpakaiN += cutiTerpakaiN3; + } + } + } + } + // put all data jatah cuti terpakai + cutiIzinBuilder.cutiTerpakaiN2(jatahCutiTerpakaiN2); + cutiIzinBuilder.cutiTerpakaiN1(jatahCutiTerpakaiN1); + cutiIzinBuilder.cutiTerpakaiN(jatahCutiTerpakaiN); + // menghitung sisa cuti + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) > 0) { + sisaCutiN2 = 0; // hangus + } else { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 + && dataCutiN2 > 0) { + if (jatahCutiTerpakaiN2 == 0 && !jCutiN1) { + sisaCutiN2 = 6; + } else if (jatahCutiTerpakaiN2 == 0) { + sisaCutiN2 = 0; + } else if (!jCutiN2 && !jCutiN1) { + sisaCutiN2 = 6 - jatahCutiTerpakaiN2; + } else { + sisaCutiN2 = 0; + } + } else if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 6 && dataCutiN2 <= 0) { + sisaCutiN2 = 0; + } else if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) > 6 && jCutiN1) { + sisaCutiN2 = 0; + } else { + sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2; + } + } + } else { + if (dataCutiN2 - jatahCutiTerpakaiN2 >= 6 && !jCutiN2) { + sisaCutiN2 = 6 - jatahCutiTerpakaiN2; + } else { + sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2; + } + } + if (dataCutiN1 - jatahCutiTerpakaiN1 >= 6 && !jCutiN1) { + jumlahTglByPengajuan -= (dataHistoriCutiTerpakai + jatahCutiTerpakaiN2 + cutiTerpakaiB + cutiTerpakaiB1 + + cutiTerpakaiB2); + if (jumlahTglByPengajuan < 0) + jumlahTglByPengajuan = 0; + if (jumlahTglByPengajuan > jatahCutiTerpakaiN1) { + sisaCutiN1 = 6; + } else { + sisaCutiN1 = 6 - (jatahCutiTerpakaiN1 - jumlahTglByPengajuan); + } + } else { + sisaCutiN1 = dataCutiN1 - jatahCutiTerpakaiN1; + } + sisaCutiN = dataCutiN - jatahCutiTerpakaiN; + // put all data sisa cuti + cutiIzinBuilder.sisaCutiN2(sisaCutiN2); + cutiIzinBuilder.sisaCutiN1(sisaCutiN1); + cutiIzinBuilder.sisaCutiN(sisaCutiN); + } + if (statusPegawaiId == 24) { + if (CommonUtil.isNotNullOrEmpty(jatahCuti)) + cutiIzinBuilder.jatahCuti("-"); + cutiIzinBuilder.sisaCuti("-"); + } + if (statusPegawaiId == 25) { + Map data = planningPegawaiStatusDao.getJatahCutiMelahirkan(statusPegawaiId); + if (CommonUtil.isNotNullOrEmpty(jatahCuti)) + cutiIzinBuilder.jatahCuti(data.get("kuotaTotalHari").toString()); + cutiIzinBuilder.sisaCuti("-"); + } + if (statusPegawaiId == 26) { + if (CommonUtil.isNotNullOrEmpty(jatahCuti)) + cutiIzinBuilder.jatahCuti("-"); + cutiIzinBuilder.sisaCuti("-"); + } + // Izin + if (statusPegawaiId == 27) { + Integer komponenIzin = 17; // komponenIndex untuk izin + Integer jatahIzin = 2; // sesuai kesepakatan + Integer jumlahIzinTerpakai = pegawaiHistoriRekapIndexDao.getIzinTerpakai(pegawaiId, komponenIzin); + if (CommonUtil.isNotNullOrEmpty(jumlahIzinTerpakai)) { + sisaIzin = jatahIzin - jumlahIzinTerpakai; + } else { + sisaIzin = jatahIzin; + } + cutiIzinBuilder.jatahIzin(jatahIzin); + cutiIzinBuilder.sisaIzin(sisaIzin); + } + if (statusPegawaiId == 28) { + if (CommonUtil.isNotNullOrEmpty(jatahCuti)) + cutiIzinBuilder.jatahCuti("-"); + cutiIzinBuilder.sisaCuti("-"); + } + if (statusPegawaiId == 17) { + Integer cutiTerpakai = pegawaiHistoriRekapIndexDao.getNilaiIndexPegawaiHistoriRekapIndex(pegawaiId, 17); + Integer dataCuti = jatahCutiDanIzinDao.getDataCuti(year, pegawaiId, 17); + if (CommonUtil.isNotNullOrEmpty(dataCuti)) { + if (CommonUtil.isNullOrEmpty(cutiTerpakai)) + cutiTerpakai = 0; + sisaCuti = dataCuti - cutiTerpakai; + if (sisaCuti < 0) + sisaCuti = 0; + } else { + sisaCuti = 0; + dataCuti = 0; + } + cutiIzinBuilder.sisaCuti(String.valueOf(sisaCuti)); + cutiIzinBuilder.jatahCuti(String.valueOf(dataCuti)); + } + // sakit + if (statusPegawaiId == 29 || statusPegawaiId == 6) { + Integer komponenSakit = 7; + Integer komponenSakitShift = 8; + Integer jumlahRawatJalan = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakit, 1); + if (CommonUtil.isNullOrEmpty(jumlahRawatJalan)) + jumlahRawatJalan = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakitShift, 1); + Integer jumlahRawatInap = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakit, 2); + if (CommonUtil.isNullOrEmpty(jumlahRawatInap)) + jumlahRawatInap = pegawaiHistoriRekapIndexDao.getSakitTerpakai(pegawaiId, komponenSakitShift, 2); + if ((CommonUtil.isNotNullOrEmpty(jumlahRawatJalan)) || (CommonUtil.isNotNullOrEmpty(jumlahRawatInap))) { + sisaJatahRawatJalan = 3 - jumlahRawatJalan; + sisaJatahRawatInap = 5 - jumlahRawatInap; + } + cutiIzinBuilder.sisaJatahRawatJalan(sisaJatahRawatJalan); + cutiIzinBuilder.sisaJatahRawatInap(sisaJatahRawatInap); + } + return cutiIzinBuilder.build(); + } + + public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) { + int difCutiTerpakai = 0; + if (cutiTerpakai > dataCuti) + difCutiTerpakai = cutiTerpakai - dataCuti; + return difCutiTerpakai; + } + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java index aa71d99a..dda2938a 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/PermohonanStatusPegawaiImpl.java @@ -4,8 +4,10 @@ import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.converter.BaseConverterImpl; import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dao.custom.PlanningPegawaiStatusDaoCustom; +import com.jasamedika.medifirst2000.dto.DataCutiDto; import com.jasamedika.medifirst2000.entities.*; import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.service.LoginUserService; import com.jasamedika.medifirst2000.service.MonitoringAbsenService; import com.jasamedika.medifirst2000.service.PermohonanStatusPegawaiService; @@ -25,6 +27,9 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import static java.util.Calendar.DAY_OF_MONTH; +import static java.util.Calendar.MONTH; + @Service("PegawaiCutiService") public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiService { @@ -34,6 +39,9 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi @Autowired private MonitoringAbsenService monitoringAbsenService; + @Autowired + private JatahCutiDanIzinService jatahCutiDanIzinService; + @Autowired private PlanningPegawaiStatusDao planningPegawaiStatusDao; @@ -187,7 +195,6 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi return result; } - @Override public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) { int difCutiTerpakai = 0; if (cutiTerpakai > dataCuti) @@ -1820,80 +1827,24 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi Map result = new HashMap<>(); if (CommonUtil.isNotNullOrEmpty(vo)) { for (FactoRateKelompokShiftVO vos : vo.getFactorRateKelompokShift()) { - Date monthDayNow = new Date(); - Calendar cal = Calendar.getInstance(); - cal.setTime(monthDayNow); - String monthPeriodInput = String.valueOf(cal.get(Calendar.MONTH) + 1); - if (monthPeriodInput.length() == 1) { - monthPeriodInput = "0" + monthPeriodInput; - } - String dayPeriodInput = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); - if (dayPeriodInput.length() == 1) { - dayPeriodInput = "0" + dayPeriodInput; - } - String periodeInput = Integer.parseInt(vos.getPeriode()) - 1 + "-" + monthPeriodInput + "-" - + dayPeriodInput; + String periodeInput = getString(vos); List listpegawai = pegawaiDao.findPegawaiStatusAktif(vos.getKelompokShift().getId(), periodeInput); for (Pegawai pegawai : listpegawai) { int todaysYear = Calendar.getInstance().get(Calendar.YEAR); int todaysYear1 = Integer .parseInt(settingDataFixedDao.getSettingDataFixed("tahunPenangguhanException")); - // storing data cuti - Map dataCuti = getDataCuti(pegawai.getId(), String.valueOf(todaysYear), - vos.getKomponenIndex().getId()); // menghitung data - // cuti selalu - // based on - // tahun - // berjalan - List> listDataCuti = new ArrayList<>(); - Map mapDataCutiB2 = new HashMap<>(); - Map mapDataCutiB1 = new HashMap<>(); - Map mapDataCutiB = new HashMap<>(); - Map mapDataCutiN = new HashMap<>(); - Map mapDataCutiN1 = new HashMap<>(); - Map mapDataCutiN2 = new HashMap<>(); - mapDataCutiB2.put("sisaCuti", dataCuti.get("sisaCutiB2")); - mapDataCutiB2.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB2")); - mapDataCutiB2.put("isTangguhkan", dataCuti.get("isTangguhkanB2")); - mapDataCutiB2.put("tahun", todaysYear - 2); - mapDataCutiB2.put("komponenIndex", 21); - mapDataCutiB1.put("sisaCuti", dataCuti.get("sisaCutiB1")); - mapDataCutiB1.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB1")); - mapDataCutiB1.put("isTangguhkan", dataCuti.get("isTangguhkanB1")); - mapDataCutiB1.put("tahun", todaysYear - 1); - mapDataCutiB1.put("komponenIndex", 21); - mapDataCutiB.put("sisaCuti", dataCuti.get("sisaCutiB")); - mapDataCutiB.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB")); - mapDataCutiB.put("isTangguhkan", dataCuti.get("isTangguhkanB")); - mapDataCutiB.put("tahun", todaysYear); - mapDataCutiB.put("komponenIndex", 21); - mapDataCutiN.put("sisaCuti", dataCuti.get("sisaCutiN")); - mapDataCutiN.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN")); - mapDataCutiN.put("isTangguhkan", dataCuti.get("isTangguhkanN")); - mapDataCutiN.put("tahun", todaysYear); - mapDataCutiN.put("komponenIndex", 5); - mapDataCutiN1.put("sisaCuti", dataCuti.get("sisaCutiN1")); - mapDataCutiN1.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN1")); - mapDataCutiN1.put("isTangguhkan", dataCuti.get("isTangguhkanN1")); - mapDataCutiN1.put("tahun", todaysYear - 1); - mapDataCutiN1.put("komponenIndex", 5); - mapDataCutiN2.put("sisaCuti", dataCuti.get("sisaCutiN2")); - mapDataCutiN2.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN2")); - mapDataCutiN2.put("isTangguhkan", dataCuti.get("isTangguhkanN2")); - mapDataCutiN2.put("tahun", todaysYear - 2); - mapDataCutiN2.put("komponenIndex", 5); - listDataCuti.add(mapDataCutiB2); - listDataCuti.add(mapDataCutiB1); - listDataCuti.add(mapDataCutiB); - listDataCuti.add(mapDataCutiN); - listDataCuti.add(mapDataCutiN1); - listDataCuti.add(mapDataCutiN2); + /* + * storing data cuti, menghitung data cuti selalu based on + * tahun berjalan + */ + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(pegawai.getId(), + String.valueOf(todaysYear), vos.getKomponenIndex().getId()); + List> listDataCuti = getMaps(cutiIzin, todaysYear); KomponenIndexVO kompIndexVoB = new KomponenIndexVO(); kompIndexVoB.setId(21); KomponenIndexVO kompIndexVoT = new KomponenIndexVO(); kompIndexVoT.setId(5); - for (Map mapDataCuti : listDataCuti) { JatahCutiDanIzin jatahCutiDanIzin = new JatahCutiDanIzin(); jatahCutiDanIzin.setPegawai(pegawai); @@ -2009,6 +1960,66 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi return result; } + private static List> getMaps(DataCutiDto cutiIzin, int todaysYear) { + List> listDataCuti = new ArrayList<>(); + Map mapDataCutiB2 = new HashMap<>(); + Map mapDataCutiB1 = new HashMap<>(); + Map mapDataCutiB = new HashMap<>(); + Map mapDataCutiN = new HashMap<>(); + Map mapDataCutiN1 = new HashMap<>(); + Map mapDataCutiN2 = new HashMap<>(); + mapDataCutiB2.put("sisaCuti", cutiIzin.getSisaCutiB2()); + mapDataCutiB2.put("cutiTerpakai", cutiIzin.getCutiTerpakaiB2()); + mapDataCutiB2.put("isTangguhkan", cutiIzin.getIsTangguhkanB2()); + mapDataCutiB2.put("tahun", todaysYear - 2); + mapDataCutiB2.put("komponenIndex", 21); + mapDataCutiB1.put("sisaCuti", cutiIzin.getSisaCutiB1()); + mapDataCutiB1.put("cutiTerpakai", cutiIzin.getCutiTerpakaiB1()); + mapDataCutiB1.put("isTangguhkan", cutiIzin.getIsTangguhkanB1()); + mapDataCutiB1.put("tahun", todaysYear - 1); + mapDataCutiB1.put("komponenIndex", 21); + mapDataCutiB.put("sisaCuti", cutiIzin.getSisaCutiB()); + mapDataCutiB.put("cutiTerpakai", cutiIzin.getCutiTerpakaiB()); + mapDataCutiB.put("isTangguhkan", cutiIzin.getIsTangguhkanB()); + mapDataCutiB.put("tahun", todaysYear); + mapDataCutiB.put("komponenIndex", 21); + mapDataCutiN.put("sisaCuti", cutiIzin.getSisaCutiN()); + mapDataCutiN.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + mapDataCutiN.put("isTangguhkan", cutiIzin.getIsTangguhkanN()); + mapDataCutiN.put("tahun", todaysYear); + mapDataCutiN.put("komponenIndex", 5); + mapDataCutiN1.put("sisaCuti", cutiIzin.getSisaCutiN1()); + mapDataCutiN1.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN1()); + mapDataCutiN1.put("isTangguhkan", cutiIzin.getIsTangguhkanN1()); + mapDataCutiN1.put("tahun", todaysYear - 1); + mapDataCutiN1.put("komponenIndex", 5); + mapDataCutiN2.put("sisaCuti", cutiIzin.getSisaCutiN2()); + mapDataCutiN2.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN2()); + mapDataCutiN2.put("isTangguhkan", cutiIzin.getIsTangguhkanN2()); + mapDataCutiN2.put("tahun", todaysYear - 2); + mapDataCutiN2.put("komponenIndex", 5); + listDataCuti.add(mapDataCutiB2); + listDataCuti.add(mapDataCutiB1); + listDataCuti.add(mapDataCutiB); + listDataCuti.add(mapDataCutiN); + listDataCuti.add(mapDataCutiN1); + listDataCuti.add(mapDataCutiN2); + return listDataCuti; + } + + private static String getString(FactoRateKelompokShiftVO vos) { + Date monthDayNow = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(monthDayNow); + String monthPeriodInput = String.valueOf(cal.get(MONTH) + 1); + if (monthPeriodInput.length() == 1) + monthPeriodInput = "0" + monthPeriodInput; + String dayPeriodInput = String.valueOf(cal.get(DAY_OF_MONTH)); + if (dayPeriodInput.length() == 1) + dayPeriodInput = "0" + dayPeriodInput; + return Integer.parseInt(vos.getPeriode()) - 1 + "-" + monthPeriodInput + "-" + dayPeriodInput; + } + @Override public Map setJatahCutiPegawai(JatahCutiDanIzinVO vo) { Map result = new HashMap<>(); @@ -2016,53 +2027,13 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi int todaysYear = Calendar.getInstance().get(Calendar.YEAR); int todaysYear1 = todaysYear - 1; - // storing_data_cuti - Map dataCuti = getDataCuti(vo.getPegawai().getId(), String.valueOf(todaysYear), - vo.getKomponenIndex().getId()); // menghitung_data_cuti_selalu_based_on_tahun_berjalan - - List> listDataCuti = new ArrayList<>(); - Map mapDataCutiB2 = new HashMap<>(); - Map mapDataCutiB1 = new HashMap<>(); - Map mapDataCutiB = new HashMap<>(); - Map mapDataCutiN = new HashMap<>(); - Map mapDataCutiN1 = new HashMap<>(); - Map mapDataCutiN2 = new HashMap<>(); - mapDataCutiB2.put("sisaCuti", dataCuti.get("sisaCutiB2")); - mapDataCutiB2.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB2")); - mapDataCutiB2.put("isTangguhkan", dataCuti.get("isTangguhkanB2")); - mapDataCutiB2.put("tahun", todaysYear - 2); - mapDataCutiB2.put("komponenIndex", 21); - mapDataCutiB1.put("sisaCuti", dataCuti.get("sisaCutiB1")); - mapDataCutiB1.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB1")); - mapDataCutiB1.put("isTangguhkan", dataCuti.get("isTangguhkanB1")); - mapDataCutiB1.put("tahun", todaysYear - 1); - mapDataCutiB1.put("komponenIndex", 21); - mapDataCutiB.put("sisaCuti", dataCuti.get("sisaCutiB")); - mapDataCutiB.put("cutiTerpakai", dataCuti.get("cutiTerpakaiB")); - mapDataCutiB.put("isTangguhkan", dataCuti.get("isTangguhkanB")); - mapDataCutiB.put("tahun", todaysYear); - mapDataCutiB.put("komponenIndex", 21); - mapDataCutiN.put("sisaCuti", dataCuti.get("sisaCutiN")); - mapDataCutiN.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN")); - mapDataCutiN.put("isTangguhkan", dataCuti.get("isTangguhkanN")); - mapDataCutiN.put("tahun", todaysYear); - mapDataCutiN.put("komponenIndex", 5); - mapDataCutiN1.put("sisaCuti", dataCuti.get("sisaCutiN1")); - mapDataCutiN1.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN1")); - mapDataCutiN1.put("isTangguhkan", dataCuti.get("isTangguhkanN1")); - mapDataCutiN1.put("tahun", todaysYear - 1); - mapDataCutiN1.put("komponenIndex", 5); - mapDataCutiN2.put("sisaCuti", dataCuti.get("sisaCutiN2")); - mapDataCutiN2.put("cutiTerpakai", dataCuti.get("cutiTerpakaiN2")); - mapDataCutiN2.put("isTangguhkan", dataCuti.get("isTangguhkanN2")); - mapDataCutiN2.put("tahun", todaysYear - 2); - mapDataCutiN2.put("komponenIndex", 5); - listDataCuti.add(mapDataCutiB2); - listDataCuti.add(mapDataCutiB1); - listDataCuti.add(mapDataCutiB); - listDataCuti.add(mapDataCutiN); - listDataCuti.add(mapDataCutiN1); - listDataCuti.add(mapDataCutiN2); + /* + * storing_data_cuti + * menghitung_data_cuti_selalu_based_on_tahun_berjalan + */ + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(vo.getPegawai().getId(), + String.valueOf(todaysYear), vo.getKomponenIndex().getId()); + List> listDataCuti = getMaps(cutiIzin, todaysYear); KomponenIndexVO kompIndexVoB = new KomponenIndexVO(); kompIndexVoB.setId(21); KomponenIndexVO kompIndexVoT = new KomponenIndexVO(); @@ -2227,7 +2198,7 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi } @Override - public Map perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai) { + public DataCutiDto perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai) { PegawaiVO pegawaiVo = new PegawaiVO(); pegawaiVo.setId(idPegawai); @@ -2243,14 +2214,14 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi int yearn2 = Integer.parseInt(year) - 2; String yearN2 = Integer.toString(yearn2); - Map dataCuti = this.getDataCuti(idPegawai, year, idStatusPegawai); + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(idPegawai, year, idStatusPegawai); JatahCutiDanIzinVO voTahunIni = new JatahCutiDanIzinVO(); voTahunIni.setStatusEnabled(Master.STATUS_ENABLE_TRUE); voTahunIni.setTahun(year); voTahunIni.setKdProfile(Master.KODE_PROFILE); voTahunIni.setPegawai(pegawaiVo); - voTahunIni.setValue(Integer.valueOf(dataCuti.get("dataCutiB").toString())); + voTahunIni.setValue(Integer.valueOf(cutiIzin.getDataCutiB().toString())); voTahunIni.setKomponenIndex(komponenIndexVo); voTahunIni.setIsTangguhkan(false); this.setJatahCutiPegawaiRecursive(voTahunIni); @@ -2260,7 +2231,7 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi voTahunLalu.setTahun(yearN1); voTahunLalu.setKdProfile(Master.KODE_PROFILE); voTahunLalu.setPegawai(pegawaiVo); - voTahunLalu.setValue(Integer.valueOf(dataCuti.get("dataCutiB1").toString())); + voTahunLalu.setValue(Integer.valueOf(cutiIzin.getDataCutiB1().toString())); voTahunLalu.setKomponenIndex(komponenIndexVo); voTahunLalu.setIsTangguhkan(false); this.setJatahCutiPegawaiRecursive(voTahunLalu); @@ -2270,12 +2241,12 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi voDuaTahunLalu.setTahun(yearN2); voDuaTahunLalu.setKdProfile(Master.KODE_PROFILE); voDuaTahunLalu.setPegawai(pegawaiVo); - voDuaTahunLalu.setValue(Integer.valueOf(dataCuti.get("dataCutiB2").toString())); + voDuaTahunLalu.setValue(Integer.valueOf(cutiIzin.getDataCutiB2().toString())); voDuaTahunLalu.setKomponenIndex(komponenIndexVo); voDuaTahunLalu.setIsTangguhkan(false); this.setJatahCutiPegawaiRecursive(voDuaTahunLalu); - return new HashMap<>(dataCuti); + return cutiIzin; } @Override diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java index f9b42512..c9cb8fb2 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ReportServiceImpl.java @@ -76,9 +76,6 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic @Autowired private MonitoringAbsenService monitoringAbsenService; - @Autowired - private PermohonanStatusPegawaiService permohonanStatusPegawaiService; - @Autowired private SlipGajiService slipGajiService; @@ -115,6 +112,9 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic @Autowired private SlipGajiDao slipGajiDao; + @Autowired + private JatahCutiDanIzinService jatahCutiDanIzinService; + private static final String[] INDONESIAN_WEEK = new String[] { "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu" }; @@ -1861,12 +1861,10 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic result.put("noHandphone", planningPegawaiStatus.getNomorTelepon()); result.put("unitKerja", pegawai.get("unitKerja")); result.put("tahun", pegawai.get("tahun")); - Map cutiTahunan = permohonanStatusPegawaiService - .getDataCuti(planningPegawaiStatus.getPegawai().getId(), null, 1); - if (CommonUtil.isNotNullOrEmpty(cutiTahunan)) { - result.put("cutiTerpakai", cutiTahunan.get("cutiTerpakai")); - result.put("sisaCuti", cutiTahunan.get("sisaCuti")); - } + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(planningPegawaiStatus.getPegawai().getId(), + null, 1); + result.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + result.put("sisaCuti", cutiIzin.getSisaCuti()); } } return result; @@ -2094,18 +2092,16 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic result.put("noHandphone", planningPegawaiStatus.getNomorTelepon()); result.put("unitKerja", unitKerja.getName()); result.put("tahun", pegawai.get("tahun")); - Map cutiTahunan = permohonanStatusPegawaiService - .getDataCuti(planningPegawaiStatus.getPegawai().getId(), null, 1); - if (CommonUtil.isNotNullOrEmpty(cutiTahunan)) { - result.put("cutiTerpakai", cutiTahunan.get("cutiTerpakaiN")); - result.put("sisaCuti", cutiTahunan.get("sisaCutiN")); - result.put("cutiTerpakaiN1", cutiTahunan.get("cutiTerpakaiN1")); - result.put("sisaCutiN1", cutiTahunan.get("sisaCutiN1")); - result.put("cutiTerpakaiN2", cutiTahunan.get("cutiTerpakaiN2")); - result.put("sisaCutiN2", cutiTahunan.get("sisaCutiN2")); - result.put("cutiTerpakaiB", cutiTahunan.get("cutiTerpakaiB")); - result.put("sisaCutiB", cutiTahunan.get("sisaCutiB")); - } + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(planningPegawaiStatus.getPegawai().getId(), + null, 1); + result.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + result.put("sisaCuti", cutiIzin.getSisaCutiN()); + result.put("cutiTerpakaiN1", cutiIzin.getCutiTerpakaiN1()); + result.put("sisaCutiN1", cutiIzin.getSisaCutiN1()); + result.put("cutiTerpakaiN2", cutiIzin.getCutiTerpakaiN2()); + result.put("sisaCutiN2", cutiIzin.getSisaCutiN2()); + result.put("cutiTerpakaiB", cutiIzin.getCutiTerpakaiB()); + result.put("sisaCutiB", cutiIzin.getSisaCutiB()); } } return result; @@ -2292,18 +2288,16 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic result.put("noHandphone", planningPegawaiStatus.getNomorTelepon()); result.put("unitKerja", pegawai.get("unitKerja")); result.put("tahun", pegawai.get("tahun")); - Map cutiTahunan = permohonanStatusPegawaiService - .getDataCuti(planningPegawaiStatus.getPegawai().getId(), null, 1); - if (CommonUtil.isNotNullOrEmpty(cutiTahunan)) { - result.put("cutiTerpakai", cutiTahunan.get("cutiTerpakaiN")); - result.put("sisaCuti", cutiTahunan.get("sisaCutiN")); - result.put("cutiTerpakaiN1", cutiTahunan.get("cutiTerpakaiN1")); - result.put("sisaCutiN1", cutiTahunan.get("sisaCutiN1")); - result.put("cutiTerpakaiN2", cutiTahunan.get("cutiTerpakaiN2")); - result.put("sisaCutiN2", cutiTahunan.get("sisaCutiN2")); - result.put("cutiTerpakaiB", cutiTahunan.get("cutiTerpakaiB")); - result.put("sisaCutiB", cutiTahunan.get("sisaCutiB")); - } + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(planningPegawaiStatus.getPegawai().getId(), + null, 1); + result.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + result.put("sisaCuti", cutiIzin.getSisaCutiN()); + result.put("cutiTerpakaiN1", cutiIzin.getCutiTerpakaiN1()); + result.put("sisaCutiN1", cutiIzin.getSisaCutiN1()); + result.put("cutiTerpakaiN2", cutiIzin.getCutiTerpakaiN2()); + result.put("sisaCutiN2", cutiIzin.getSisaCutiN2()); + result.put("cutiTerpakaiB", cutiIzin.getCutiTerpakaiB()); + result.put("sisaCutiB", cutiIzin.getSisaCutiB()); } } return result; @@ -2404,12 +2398,10 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic result.put("noHandphone", planningPegawaiStatus.getNomorTelepon()); result.put("unitKerja", unitKerja.getName()); result.put("tahun", pegawai.get("tahun")); - Map cutiTahunan = permohonanStatusPegawaiService - .getDataCuti(planningPegawaiStatus.getPegawai().getId(), null, 1); - if (CommonUtil.isNotNullOrEmpty(cutiTahunan)) { - result.put("cutiTerpakai", cutiTahunan.get("cutiTerpakai")); - result.put("sisaCuti", cutiTahunan.get("sisaCuti")); - } + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(planningPegawaiStatus.getPegawai().getId(), + null, 1); + result.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + result.put("sisaCuti", cutiIzin.getSisaCuti()); } } return result; @@ -2569,12 +2561,10 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic result.put("noHandphone", planningPegawaiStatus.getNomorTelepon()); result.put("unitKerja", unitKerja.getName()); result.put("tahun", pegawai.get("tahun")); - Map cutiTahunan = permohonanStatusPegawaiService - .getDataCuti(planningPegawaiStatus.getPegawai().getId(), null, 1); - if (CommonUtil.isNotNullOrEmpty(cutiTahunan)) { - result.put("cutiTerpakai", cutiTahunan.get("cutiTerpakai")); - result.put("sisaCuti", cutiTahunan.get("sisaCuti")); - } + DataCutiDto cutiIzin = jatahCutiDanIzinService.getDataCuti(planningPegawaiStatus.getPegawai().getId(), + null, 1); + result.put("cutiTerpakai", cutiIzin.getCutiTerpakaiN()); + result.put("sisaCuti", cutiIzin.getSisaCuti()); } } return result; diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/DataCutiDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/DataCutiDto.java new file mode 100644 index 00000000..bd9670ac --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/DataCutiDto.java @@ -0,0 +1,78 @@ +package com.jasamedika.medifirst2000.dto; + +import lombok.*; + +/** + * @author Salman + * @version 1.0.0 + * @since 09/01/2025 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DataCutiDto { + + private String sisaCuti; + + private Integer sisaIzin; + + private Integer sisaJatahRawatJalan; + + private Integer sisaJatahRawatInap; + + private Integer sisaCutiB; + + private Integer sisaCutiB1; + + private Integer sisaCutiB2; + + private Integer sisaCutiN; + + private Integer sisaCutiN1; + + private Integer sisaCutiN2; + + private Integer cutiTerpakaiB; + + private Integer cutiTerpakaiB1; + + private Integer cutiTerpakaiB2; + + private Integer cutiTerpakaiN; + + private Integer cutiTerpakaiN1; + + private Integer cutiTerpakaiN2; + + private Boolean isTangguhkanB; + + private Boolean isTangguhkanB1; + + private Boolean isTangguhkanB2; + + private Boolean isTangguhkanN; + + private Boolean isTangguhkanN1; + + private Boolean isTangguhkanN2; + + private Integer dataCutiB; + + private Integer dataCutiB1; + + private Integer dataCutiB2; + + private Integer dataCutiN; + + private Integer dataCutiN1; + + private Integer dataCutiN2; + + private Integer dataCutiN3; + + private String jatahCuti; + + private Integer jatahIzin; + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JatahCutiDanIzin.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JatahCutiDanIzin.java index 6f9e0cde..d07d20f1 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JatahCutiDanIzin.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/JatahCutiDanIzin.java @@ -1,128 +1,55 @@ package com.jasamedika.medifirst2000.entities; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; -@Entity // @Audited +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +@Getter +@Setter +@Entity @Table(name = "JatahCutiDanIzin_T") public class JatahCutiDanIzin extends BaseTransaction { - + @ManyToOne @JoinColumn(name = "PegawaiFK") - @NotNull(message="Pegawai Harus Diisi") - @Caption(value="Pegawai") + @NotNull(message = "Pegawai Harus Diisi") + @Caption(value = "Pegawai") private Pegawai pegawai; - @Column(name = "PegawaiFK", insertable=false,updatable=false,nullable = false) + @Column(name = "PegawaiFK", insertable = false, updatable = false, nullable = false) private Integer pegawaiId; - + @Column(name = "tahun") @Caption(value = "tahun") private String tahun; - + @ManyToOne @JoinColumn(name = "KomponenIndexFK") - @NotNull(message="KomponenIndex Harus Diisi") - @Caption(value="KomponenIndex") + @NotNull(message = "KomponenIndex Harus Diisi") + @Caption(value = "KomponenIndex") private KomponenIndex komponenIndex; - @Column(name = "KomponenIndexFK", insertable=false,updatable=false,nullable = false) + @Column(name = "KomponenIndexFK", insertable = false, updatable = false, nullable = false) private Integer komponenIndexId; - + @Column(name = "value") @Caption(value = "value") private Integer value; - + @Column(name = "CutiTerpakai") @Caption(value = "CutiTerpakai") private Integer cutiTerpakai; - + @Column(name = "SisaCuti") @Caption(value = "SisaCuti") private Integer sisaCuti; - + @Column(name = "isTangguhkanSisaCuti") @Caption(value = "Tangguhkan Sisa Cuti") private Boolean isTangguhkan; - - public Pegawai getPegawai() { - return pegawai; - } - - public void setPegawai(Pegawai pegawai) { - this.pegawai = pegawai; - } - - public Integer getPegawaiId() { - return pegawaiId; - } - - public void setPegawaiId(Integer pegawaiId) { - this.pegawaiId = pegawaiId; - } - - public String getTahun() { - return tahun; - } - - public void setTahun(String tahun) { - this.tahun = tahun; - } - - public KomponenIndex getKomponenIndex() { - return komponenIndex; - } - - public void setKomponenIndex(KomponenIndex komponenIndex) { - this.komponenIndex = komponenIndex; - } - - public Integer getKomponenIndexId() { - return komponenIndexId; - } - - public void setKomponenIndexId(Integer komponenIndexId) { - this.komponenIndexId = komponenIndexId; - } - - public Integer getValue() { - return value; - } - - public void setValue(Integer value) { - this.value = value; - } - - public Integer getCutiTerpakai() { - return cutiTerpakai; - } - - public void setCutiTerpakai(Integer cutiTerpakai) { - this.cutiTerpakai = cutiTerpakai; - } - - public Integer getSisaCuti() { - return sisaCuti; - } - - public void setSisaCuti(Integer sisaCuti) { - this.sisaCuti = sisaCuti; - } - - public Boolean getIsTangguhkan() { - return isTangguhkan; - } - - public void setIsTangguhkan(Boolean isTangguhkan) { - this.isTangguhkan = isTangguhkan; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JatahCutiDanIzinVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JatahCutiDanIzinVO.java index 34f0cbad..6057266a 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JatahCutiDanIzinVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/JatahCutiDanIzinVO.java @@ -1,98 +1,29 @@ package com.jasamedika.medifirst2000.vo; - import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class JatahCutiDanIzinVO extends BaseTransactionVO { - + private PegawaiVO pegawai; private Integer pegawaiId; - + private String tahun; - + private KomponenIndexVO komponenIndex; private Integer komponenIndexId; - + private Integer value; - + private Integer cutiTerpakai; - + private Integer sisaCuti; - + private Boolean isTangguhkan; - public PegawaiVO getPegawai() { - return pegawai; - } - - public void setPegawai(PegawaiVO pegawai) { - this.pegawai = pegawai; - } - - public Integer getPegawaiId() { - return pegawaiId; - } - - public void setPegawaiId(Integer pegawaiId) { - this.pegawaiId = pegawaiId; - } - - public String getTahun() { - return tahun; - } - - public void setTahun(String tahun) { - this.tahun = tahun; - } - - public KomponenIndexVO getKomponenIndex() { - return komponenIndex; - } - - public void setKomponenIndex(KomponenIndexVO komponenIndex) { - this.komponenIndex = komponenIndex; - } - - public Integer getKomponenIndexId() { - return komponenIndexId; - } - - public void setKomponenIndexId(Integer komponenIndexId) { - this.komponenIndexId = komponenIndexId; - } - - public Integer getValue() { - return value; - } - - public void setValue(Integer value) { - this.value = value; - } - - public Integer getCutiTerpakai() { - return cutiTerpakai; - } - - public void setCutiTerpakai(Integer cutiTerpakai) { - this.cutiTerpakai = cutiTerpakai; - } - - public Integer getSisaCuti() { - return sisaCuti; - } - - public void setSisaCuti(Integer sisaCuti) { - this.sisaCuti = sisaCuti; - } - - public Boolean getIsTangguhkan() { - return isTangguhkan; - } - - public void setIsTangguhkan(Boolean isTangguhkan) { - this.isTangguhkan = isTangguhkan; - } - } diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java index 7d34b264..3983753e 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SdmController.java @@ -7,6 +7,7 @@ import com.jasamedika.medifirst2000.controller.base.LocaleController; import com.jasamedika.medifirst2000.core.web.WebConstants; import com.jasamedika.medifirst2000.dao.JenisGajiDao; import com.jasamedika.medifirst2000.dao.MapUraianTugasToRincianKegiatanDao; +import com.jasamedika.medifirst2000.dto.DataCutiDto; import com.jasamedika.medifirst2000.entities.JenisGaji; import com.jasamedika.medifirst2000.entities.MapUraianTugasToRincianKegiatan; import com.jasamedika.medifirst2000.entities.Pegawai; @@ -327,6 +328,9 @@ public class SdmController extends LocaleController { @Autowired private LogAccService logAccService; + @Autowired + private JatahCutiDanIzinService jatahCutiDanIzinService; + @RequestMapping(value = "/save-custom-uraian-kerja", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity> saveBerkasLamaran(@Valid @RequestBody CustomIndexKerjaVO vo, HttpServletRequest request) { @@ -3189,20 +3193,16 @@ public class SdmController extends LocaleController { } @RequestMapping(value = "/get-data-cuti", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity> getDataCuti(@RequestParam(value = "pegawaiId") Integer pegawaiId, + public ResponseEntity getDataCuti(@RequestParam(value = "pegawaiId") Integer pegawaiId, @RequestParam(value = "year", required = false) String year, @RequestParam(value = "statusPegawaiId") Integer statusPegawaiId, @RequestParam(value = "kategoriPegawaiId", required = false) Integer kategoriPegawaiId, HttpServletRequest request) { try { - Map result = servicePermohonanStatus.getDataCuti(pegawaiId, year, statusPegawaiId); - if (null != result) { - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_SUCCESS, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } else { - return RestUtil.getJsonResponse(null, HttpStatus.NOT_FOUND, mapHeaderMessage); - } + DataCutiDto dto = jatahCutiDanIzinService.getDataCuti(pegawaiId, year, statusPegawaiId); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(dto, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { LOGGER.error("Got ServiceVOException {} when getDataCuti", e.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage()); @@ -3215,19 +3215,15 @@ public class SdmController extends LocaleController { } @RequestMapping(value = "/perbarui-data-cuti", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity> perbaruiDataCuti(HttpServletRequest request, + public ResponseEntity perbaruiDataCuti(HttpServletRequest request, @RequestParam(value = "pegawaiId") Integer idPegawai, @RequestParam(value = "year", required = false) String year, @RequestParam(value = "statusPegawaiId") Integer idStatusPegawai) { try { - Map result = servicePermohonanStatus.perbaruiDataCuti(idPegawai, idStatusPegawai); - if (null != result) { - mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, - getMessage(MessageResource.LABEL_UPDATE_DATA_CUTI, request)); - return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); - } else { - return RestUtil.getJsonResponse(null, HttpStatus.NOT_FOUND, mapHeaderMessage); - } + DataCutiDto dto = servicePermohonanStatus.perbaruiDataCuti(idPegawai, idStatusPegawai); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_UPDATE_DATA_CUTI, request)); + return RestUtil.getJsonResponse(dto, HttpStatus.OK, mapHeaderMessage); } catch (ServiceVOException e) { LOGGER.error("Got ServiceVOException {} when perbaruiDataCuti", e.getMessage()); addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, e.getMessage());