From 02c5f250f399ce68025913d255eb878f9bfd94cd Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 21 Jan 2025 11:33:41 +0700 Subject: [PATCH 1/3] Update service jatah cuti dan izin Penerapan cuti tahunan di cuti bersama tidak memengaruhi jata cuti bersama yang bisa ditangguhkan --- .../medifirst2000/dao/ListTanggalCutiDao.java | 23 +- .../dao/MapKalenderToHariLiburDao.java | 6 +- .../impl/JatahCutiDanIzinServiceImpl.java | 20 +- .../service/impl/KalenderServiceImpl.java | 29 +- ...iHariLibur.java => HariLiburTerpakai.java} | 2 +- .../medifirst2000/entities/Kalender.java | 402 +++--------------- .../medifirst2000/vo/KalenderVO.java | 191 ++------- 7 files changed, 130 insertions(+), 543 deletions(-) rename jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/{PresensiHariLibur.java => HariLiburTerpakai.java} (92%) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ListTanggalCutiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ListTanggalCutiDao.java index ec07e90e..2e2d9063 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ListTanggalCutiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ListTanggalCutiDao.java @@ -1,16 +1,16 @@ package com.jasamedika.medifirst2000.dao; -import java.util.Date; -import java.util.List; -import java.util.Map; - +import com.jasamedika.medifirst2000.dto.HariLiburTerpakai; +import com.jasamedika.medifirst2000.entities.ListTanggalCuti; import org.springframework.data.jpa.repository.Modifying; 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.ListTanggalCuti; +import java.util.Date; +import java.util.List; +import java.util.Map; @Repository("ListTanggalCutiDao") public interface ListTanggalCutiDao extends PagingAndSortingRepository { @@ -62,4 +62,17 @@ public interface ListTanggalCutiDao extends PagingAndSortingRepository getCutiByTahun(@Param("idPegawai") Integer idPegawai, + @Param("idHariLibur") Integer idHariLibur, @Param("tglAwal") Date tglAwal, + @Param("tglAkhir") Date tglAkhir); + } 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 c5472f5e..5066db04 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,6 +1,6 @@ package com.jasamedika.medifirst2000.dao; -import com.jasamedika.medifirst2000.dto.PresensiHariLibur; +import com.jasamedika.medifirst2000.dto.HariLiburTerpakai; import com.jasamedika.medifirst2000.entities.Kalender; import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur; import org.springframework.data.jpa.repository.Query; @@ -38,14 +38,14 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository=:tahun") List> getMappingHariLibur(@Param("tahun") String tahun); - @Query("select distinct new com.jasamedika.medifirst2000.dto.PresensiHariLibur(" + @Query("select distinct new com.jasamedika.medifirst2000.dto.HariLiburTerpakai(" + "pg.id as idPegawai, pg.namaLengkap as namaLengkap, " + "kld.tanggal as tanggal, " + "mkl.isCutiBersamaDitangguhkan as isCBDitangguhkan) " + "from Pegawai pg, Habsen hab, MapKalenderToHariLibur mkl " + "inner join mkl.tanggal kld " + "where pg.id = :idPegawai " + "and pg.idFinger = hab.empl_code " + "and cast(hab.tr_date as date) = kld.tanggal " + "and mkl.hariLiburId = :idHariLibur " + "and kld.tanggal between :tglAwal and :tglAkhir") - List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, + List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("idHariLibur") Integer idHariLibur, @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 f34ae5c8..a2a8bfab 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 @@ -4,7 +4,7 @@ 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.dto.HariLiburTerpakai; import com.jasamedika.medifirst2000.entities.ListTanggalCuti; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -558,19 +558,25 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { Date tahunLalu = DateUtil.getInstanceCalendar(-1); Date awalTahunLalu = DateUtil.startYear(tahunLalu); Date akhirTahunLalu = DateUtil.endYear(tahunLalu); - List listPresensiTahunLalu = mapKalenderToHariLiburDao + List listPresensiTahunLalu = mapKalenderToHariLiburDao .getPresensiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu); - List listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream() - .filter(PresensiHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); + List listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream() + .filter(HariLiburTerpakai::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty()) return dto; + List listCutiDiCutiBersamaTahunLalu = tanggalCutiDao.getCutiByTahun(request.getPegawaiId(), + LIBUR_CB, awalTahunLalu, akhirTahunLalu); if (DateUtil.getYear(new Date()) == Integer.parseInt(request.getYear())) { List listCutiTahunLaluBelumDisetujui = tanggalCutiDao .notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu); int presensiCutiBersama = listPresensiTahunLalu.size(); - int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size(); - if (presensiCutiBersama - dto.getCutiTerpakaiB1() - - listCutiTahunLaluBelumDisetujui.size() >= jatahDitangguhkan) { + int cutiDiCutiBersama = listCutiDiCutiBersamaTahunLalu.size(); + int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - dto.getCutiTerpakaiB1(); + int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size() + - listCutiTahunLaluBelumDisetujui.size(); + if (jatahDitangguhkan >= sisaJatah) { + if (jatahDitangguhkan < 0) + jatahDitangguhkan = 0; dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/KalenderServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/KalenderServiceImpl.java index a1c66569..7be27c5b 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/KalenderServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/KalenderServiceImpl.java @@ -1,29 +1,27 @@ package com.jasamedika.medifirst2000.service.impl; +import com.jasamedika.medifirst2000.constants.Master; +import com.jasamedika.medifirst2000.dao.KalenderDao; +import com.jasamedika.medifirst2000.entities.Kalender; +import com.jasamedika.medifirst2000.service.KalenderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.jasamedika.medifirst2000.constants.Master; -import com.jasamedika.medifirst2000.dao.KalenderDao; -import com.jasamedika.medifirst2000.entities.Kalender; -import com.jasamedika.medifirst2000.service.KalenderService; - @Service("kalenderService") public class KalenderServiceImpl extends BaseVoServiceImpl implements KalenderService { - + @Autowired KalenderDao kalenderDao; @Override public void generateAndSaveKalender() { - List kals = new ArrayList(); - + List kals = new ArrayList<>(); Calendar ct = Calendar.getInstance(); ct.set(Calendar.MONTH, 0); ct.set(Calendar.DAY_OF_MONTH, 1); @@ -32,20 +30,15 @@ public class KalenderServiceImpl extends BaseVoServiceImpl implements KalenderSe ct.set(Calendar.SECOND, 0); ct.set(Calendar.MILLISECOND, 0); ct.add(Calendar.YEAR, 1); - Calendar c = Calendar.getInstance(); Date lastDate = kalenderDao.getLastDateData(); c.setTime(lastDate); c.add(Calendar.DATE, 1); - if (ct.getTime().compareTo(c.getTime()) == 0) { int daysInYear = c.getActualMaximum(Calendar.DAY_OF_YEAR); - for (int i = 1; i <= daysInYear; i++) { c.set(Calendar.DAY_OF_YEAR, i); - Kalender kal = new Kalender(); - kal.setKdProfile((short) 0); kal.setStatusEnabled(Master.STATUS_ENABLE_TRUE); kal.setBulanKeDlmTahun((byte) (c.get(Calendar.MONTH) + 1)); @@ -55,15 +48,13 @@ public class KalenderServiceImpl extends BaseVoServiceImpl implements KalenderSe kal.setKdTanggal(c.get(Calendar.DAY_OF_YEAR)); kal.setNamaBulan(new SimpleDateFormat("MMMM", new java.util.Locale("id")).format(c.getTime())); kal.setNamaHari(new SimpleDateFormat("EEEE", new java.util.Locale("id")).format(c.getTime())); - kal.setqTanggal(c.get(Calendar.DAY_OF_YEAR)); + kal.setQTanggal(c.get(Calendar.DAY_OF_YEAR)); kal.setTahunKalender((short) c.get(Calendar.YEAR)); kal.setTanggal(c.getTime()); - kals.add(kal); } kalenderDao.save(kals); } - } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/HariLiburTerpakai.java similarity index 92% rename from jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java rename to jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/HariLiburTerpakai.java index 83de45f3..23e27d2e 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/HariLiburTerpakai.java @@ -16,7 +16,7 @@ import java.util.Date; @Builder @AllArgsConstructor @NoArgsConstructor -public class PresensiHariLibur { +public class HariLiburTerpakai { private Integer idPegawai; diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Kalender.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Kalender.java index 54b1e031..7c11a849 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Kalender.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/Kalender.java @@ -1,407 +1,125 @@ package com.jasamedika.medifirst2000.entities; -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - import com.jasamedika.medifirst2000.base.BaseMaster; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.util.Date; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Getter +@Setter @Entity @Table(name = "Kalender_S") public class Kalender extends BaseMaster { - - @Column(name = "BulanFiscal", nullable = true , length = 10) - @Caption(value="Bulan Fiscal") + + @Column(name = "BulanFiscal", length = 10) + @Caption(value = "Bulan Fiscal") private String bulanFiscal; - @NotNull(message="Bulan Ke Dlm Tahun tidak boleh kosong") - @Column(name = "BulanKeDlmTahun", nullable = false ) - @Caption(value="Bulan Ke Dlm Tahun") + @NotNull(message = "Bulan Ke Dlm Tahun tidak boleh kosong") + @Column(name = "BulanKeDlmTahun", nullable = false) + @Caption(value = "Bulan Ke Dlm Tahun") private Byte bulanKeDlmTahun; - @NotNull(message="Hari Ke Dlm Bulan tidak boleh kosong") - @Column(name = "HariKeDlmBulan", nullable = false ) - @Caption(value="Hari Ke Dlm Bulan") + @NotNull(message = "Hari Ke Dlm Bulan tidak boleh kosong") + @Column(name = "HariKeDlmBulan", nullable = false) + @Caption(value = "Hari Ke Dlm Bulan") private Byte hariKeDlmBulan; - @NotNull(message="Hari Ke Dlm Minggu tidak boleh kosong") - @Column(name = "HariKeDlmMinggu", nullable = false ) - @Caption(value="Hari Ke Dlm Minggu") + @NotNull(message = "Hari Ke Dlm Minggu tidak boleh kosong") + @Column(name = "HariKeDlmMinggu", nullable = false) + @Caption(value = "Hari Ke Dlm Minggu") private Byte hariKeDlmMinggu; - @NotNull(message="Hari Ke Dlm Tahun tidak boleh kosong") - @Column(name = "HariKeDlmTahun", nullable = false ) - @Caption(value="Hari Ke Dlm Tahun") + @NotNull(message = "Hari Ke Dlm Tahun tidak boleh kosong") + @Column(name = "HariKeDlmTahun", nullable = false) + @Caption(value = "Hari Ke Dlm Tahun") private Short hariKeDlmTahun; @ManyToOne @JoinColumn(name = "ObjectHistoryLoginDFk") - @Caption(value="Object History Login D") + @Caption(value = "Object History Login D") private HistoryLoginModulAplikasi historyLoginD; - @Column(name = "ObjectHistoryLoginDFk", insertable=false,updatable=false) + @Column(name = "ObjectHistoryLoginDFk", insertable = false, updatable = false) private Integer historyLoginDId; @ManyToOne @JoinColumn(name = "ObjectHistoryLoginIFk") - @NotNull(message="Kd History Login I tidak boleh kosong") - @Caption(value="Object History Login I") + @NotNull(message = "Kd History Login I tidak boleh kosong") + @Caption(value = "Object History Login I") private HistoryLoginModulAplikasi historyLoginI; - @Column(name = "ObjectHistoryLoginIFk", insertable=false,updatable=false) + @Column(name = "ObjectHistoryLoginIFk", insertable = false, updatable = false) private Integer historyLoginIId; @ManyToOne @JoinColumn(name = "ObjectHistoryLoginSFk") - @Caption(value="Object History Login S") + @Caption(value = "Object History Login S") private HistoryLoginModulAplikasi historyLoginS; - @Column(name = "ObjectHistoryLoginSFk", insertable=false,updatable=false,nullable=false) + @Column(name = "ObjectHistoryLoginSFk", insertable = false, updatable = false, nullable = false) private Integer historyLoginSId; @ManyToOne @JoinColumn(name = "ObjectHistoryLoginUFk") - @Caption(value="Object History Login U") + @Caption(value = "Object History Login U") private HistoryLoginModulAplikasi historyLoginU; - @Column(name = "ObjectHistoryLoginUFk", insertable=false,updatable=false) + @Column(name = "ObjectHistoryLoginUFk", insertable = false, updatable = false) private Integer historyLoginUId; - @NotNull(message="Kd Tanggal tidak boleh kosong") - @Column(name = "KdTanggal", nullable = false ) - @Caption(value="Kode Tanggal") + @NotNull(message = "Kd Tanggal tidak boleh kosong") + @Column(name = "KdTanggal", nullable = false) + @Caption(value = "Kode Tanggal") private Integer kdTanggal; - @NotNull(message="Nama Bulan tidak boleh kosong") - @Column(name = "NamaBulan", nullable = false , length = 10) - @Caption(value="Nama Bulan") + @NotNull(message = "Nama Bulan tidak boleh kosong") + @Column(name = "NamaBulan", nullable = false, length = 10) + @Caption(value = "Nama Bulan") private String namaBulan; - @NotNull(message="Nama Hari tidak boleh kosong") - @Column(name = "NamaHari", nullable = false , length = 10) - @Caption(value="Nama Hari") + @NotNull(message = "Nama Hari tidak boleh kosong") + @Column(name = "NamaHari", nullable = false, length = 10) + @Caption(value = "Nama Hari") private String namaHari; - @NotNull(message="QTanggal tidak boleh kosong") - @Column(name = "QTanggal", nullable = false ) - @Caption(value="QTanggal") + @NotNull(message = "QTanggal tidak boleh kosong") + @Column(name = "QTanggal", nullable = false) + @Caption(value = "QTanggal") private Integer qTanggal; - @Column(name = "SemesterKeDlmTahun", nullable = true ) - @Caption(value="Semester Ke Dlm Tahun") + @Column(name = "SemesterKeDlmTahun") + @Caption(value = "Semester Ke Dlm Tahun") private Byte semesterKeDlmTahun; - @Column(name = "TahunFiscal", nullable = true ) - @Caption(value="Tahun Fiscal") + @Column(name = "TahunFiscal") + @Caption(value = "Tahun Fiscal") private Short tahunFiscal; - @NotNull(message="Tahun Kalender tidak boleh kosong") - @Column(name = "TahunKalender", nullable = false ) - @Caption(value="Tahun Kalender") + @NotNull(message = "Tahun Kalender tidak boleh kosong") + @Column(name = "TahunKalender", nullable = false) + @Caption(value = "Tahun Kalender") private Short tahunKalender; - @NotNull(message="Tanggal tidak boleh kosong") - @Column(name = "Tanggal", nullable = false ) - @Caption(value="Tanggal") + @NotNull(message = "Tanggal tidak boleh kosong") + @Column(name = "Tanggal", nullable = false) + @Caption(value = "Tanggal") private Date tanggal; - @Column(name = "TriwulanKeDlmTahun", nullable = true ) - @Caption(value="Triwulan Ke Dlm Tahun") + @Column(name = "TriwulanKeDlmTahun") + @Caption(value = "Triwulan Ke Dlm Tahun") private Byte triwulanKeDlmTahun; - - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.kalender_m_id_seq") - @javax.persistence.SequenceGenerator(name = "public.kalender_m_id_seq", sequenceName = "public.kalender_m_id_seq", allocationSize = 1) + @GeneratedValue(strategy = SEQUENCE, generator = "public.kalender_m_id_seq") + @SequenceGenerator(name = "public.kalender_m_id_seq", sequenceName = "public.kalender_m_id_seq", allocationSize = 1) @Column(name = "id") protected Integer id; - - - public String getBulanFiscal() { - return bulanFiscal; - } - - - - public void setBulanFiscal(String bulanFiscal) { - this.bulanFiscal = bulanFiscal; - } - - - - public Byte getBulanKeDlmTahun() { - return bulanKeDlmTahun; - } - - - - public void setBulanKeDlmTahun(Byte bulanKeDlmTahun) { - this.bulanKeDlmTahun = bulanKeDlmTahun; - } - - - - public Byte getHariKeDlmBulan() { - return hariKeDlmBulan; - } - - - - public void setHariKeDlmBulan(Byte hariKeDlmBulan) { - this.hariKeDlmBulan = hariKeDlmBulan; - } - - - - public Byte getHariKeDlmMinggu() { - return hariKeDlmMinggu; - } - - - - public void setHariKeDlmMinggu(Byte hariKeDlmMinggu) { - this.hariKeDlmMinggu = hariKeDlmMinggu; - } - - - - public Short getHariKeDlmTahun() { - return hariKeDlmTahun; - } - - - - public void setHariKeDlmTahun(Short hariKeDlmTahun) { - this.hariKeDlmTahun = hariKeDlmTahun; - } - - - - public HistoryLoginModulAplikasi getHistoryLoginD() { - return historyLoginD; - } - - - - public void setHistoryLoginD(HistoryLoginModulAplikasi historyLoginD) { - this.historyLoginD = historyLoginD; - } - - - - public Integer getHistoryLoginDId() { - return historyLoginDId; - } - - - - public void setHistoryLoginDId(Integer historyLoginDId) { - this.historyLoginDId = historyLoginDId; - } - - - - public HistoryLoginModulAplikasi getHistoryLoginI() { - return historyLoginI; - } - - - - public void setHistoryLoginI(HistoryLoginModulAplikasi historyLoginI) { - this.historyLoginI = historyLoginI; - } - - - - public Integer getHistoryLoginIId() { - return historyLoginIId; - } - - - - public void setHistoryLoginIId(Integer historyLoginIId) { - this.historyLoginIId = historyLoginIId; - } - - - - public HistoryLoginModulAplikasi getHistoryLoginS() { - return historyLoginS; - } - - - - public void setHistoryLoginS(HistoryLoginModulAplikasi historyLoginS) { - this.historyLoginS = historyLoginS; - } - - - - public Integer getHistoryLoginSId() { - return historyLoginSId; - } - - - - public void setHistoryLoginSId(Integer historyLoginSId) { - this.historyLoginSId = historyLoginSId; - } - - - - public HistoryLoginModulAplikasi getHistoryLoginU() { - return historyLoginU; - } - - - - public void setHistoryLoginU(HistoryLoginModulAplikasi historyLoginU) { - this.historyLoginU = historyLoginU; - } - - - - public Integer getHistoryLoginUId() { - return historyLoginUId; - } - - - - public void setHistoryLoginUId(Integer historyLoginUId) { - this.historyLoginUId = historyLoginUId; - } - - - - public Integer getKdTanggal() { - return kdTanggal; - } - - - - public void setKdTanggal(Integer kdTanggal) { - this.kdTanggal = kdTanggal; - } - - - - public String getNamaBulan() { - return namaBulan; - } - - - - public void setNamaBulan(String namaBulan) { - this.namaBulan = namaBulan; - } - - - - public String getNamaHari() { - return namaHari; - } - - - - public void setNamaHari(String namaHari) { - this.namaHari = namaHari; - } - - - - public Integer getqTanggal() { - return qTanggal; - } - - - - public void setqTanggal(Integer qTanggal) { - this.qTanggal = qTanggal; - } - - - - public Byte getSemesterKeDlmTahun() { - return semesterKeDlmTahun; - } - - - - public void setSemesterKeDlmTahun(Byte semesterKeDlmTahun) { - this.semesterKeDlmTahun = semesterKeDlmTahun; - } - - - - public Short getTahunFiscal() { - return tahunFiscal; - } - - - - public void setTahunFiscal(Short tahunFiscal) { - this.tahunFiscal = tahunFiscal; - } - - - - public Short getTahunKalender() { - return tahunKalender; - } - - - - public void setTahunKalender(Short tahunKalender) { - this.tahunKalender = tahunKalender; - } - - - - public Date getTanggal() { - return tanggal; - } - - - - public void setTanggal(Date tanggal) { - this.tanggal = tanggal; - } - - - - public Byte getTriwulanKeDlmTahun() { - return triwulanKeDlmTahun; - } - - - - public void setTriwulanKeDlmTahun(Byte triwulanKeDlmTahun) { - this.triwulanKeDlmTahun = triwulanKeDlmTahun; - } - - - - public Integer getId() { - return id; - } - - - - public void setId(Integer id) { - this.id = id; - } - - } - diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/KalenderVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/KalenderVO.java index a8c5be47..6bc3dd77 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/KalenderVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/KalenderVO.java @@ -1,209 +1,68 @@ package com.jasamedika.medifirst2000.vo; -import java.util.Date; - import com.jasamedika.medifirst2000.base.vo.BaseMasterVO; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +import java.util.Date; + +@Getter +@Setter public class KalenderVO extends BaseMasterVO { - - @Caption(value="Bulan Fiscal") + + @Caption(value = "Bulan Fiscal") private String bulanFiscal; - @Caption(value="Bulan Ke Dlm Tahun") + @Caption(value = "Bulan Ke Dlm Tahun") private Byte bulanKeDlmTahun; - @Caption(value="Hari Ke Dlm Bulan") + @Caption(value = "Hari Ke Dlm Bulan") private Byte hariKeDlmBulan; - @Caption(value="Hari Ke Dlm Minggu") + @Caption(value = "Hari Ke Dlm Minggu") private Byte hariKeDlmMinggu; - @Caption(value="Hari Ke Dlm Tahun") + @Caption(value = "Hari Ke Dlm Tahun") private short hariKeDlmTahun; - @Caption(value="Object History Login D") + @Caption(value = "Object History Login D") private HistoryLoginModulAplikasiVO historyLoginD; - @Caption(value="Object History Login I") + @Caption(value = "Object History Login I") private HistoryLoginModulAplikasiVO historyLoginI; - @Caption(value="Object History Login S") + @Caption(value = "Object History Login S") private HistoryLoginModulAplikasiVO historyLoginS; - @Caption(value="Object History Login U") + @Caption(value = "Object History Login U") private HistoryLoginModulAplikasiVO historyLoginU; - @Caption(value="Kode Tanggal") + @Caption(value = "Kode Tanggal") private Integer kdTanggal; - @Caption(value="Nama Bulan") + @Caption(value = "Nama Bulan") private String namaBulan; - @Caption(value="Nama Hari") + @Caption(value = "Nama Hari") private String namaHari; - @Caption(value="QTanggal") + @Caption(value = "QTanggal") private Integer qTanggal; - @Caption(value="Semester Ke Dlm Tahun") + @Caption(value = "Semester Ke Dlm Tahun") private Byte semesterKeDlmTahun; - @Caption(value="Tahun Fiscal") + @Caption(value = "Tahun Fiscal") private short tahunFiscal; - @Caption(value="Tahun Kalender") + @Caption(value = "Tahun Kalender") private short tahunKalender; - @Caption(value="Tanggal") + @Caption(value = "Tanggal") private Date tanggal; - @Caption(value="Triwulan Ke Dlm Tahun") + @Caption(value = "Triwulan Ke Dlm Tahun") private Byte triwulanKeDlmTahun; - public String getBulanFiscal() { - return bulanFiscal; - } - - public void setBulanFiscal(String bulanFiscal) { - this.bulanFiscal = bulanFiscal; - } - - public Byte getBulanKeDlmTahun() { - return bulanKeDlmTahun; - } - - public void setBulanKeDlmTahun(Byte bulanKeDlmTahun) { - this.bulanKeDlmTahun = bulanKeDlmTahun; - } - - public Byte getHariKeDlmBulan() { - return hariKeDlmBulan; - } - - public void setHariKeDlmBulan(Byte hariKeDlmBulan) { - this.hariKeDlmBulan = hariKeDlmBulan; - } - - public Byte getHariKeDlmMinggu() { - return hariKeDlmMinggu; - } - - public void setHariKeDlmMinggu(Byte hariKeDlmMinggu) { - this.hariKeDlmMinggu = hariKeDlmMinggu; - } - - public short getHariKeDlmTahun() { - return hariKeDlmTahun; - } - - public void setHariKeDlmTahun(short hariKeDlmTahun) { - this.hariKeDlmTahun = hariKeDlmTahun; - } - - public HistoryLoginModulAplikasiVO getHistoryLoginD() { - return historyLoginD; - } - - public void setHistoryLoginD(HistoryLoginModulAplikasiVO historyLoginD) { - this.historyLoginD = historyLoginD; - } - - public HistoryLoginModulAplikasiVO getHistoryLoginI() { - return historyLoginI; - } - - public void setHistoryLoginI(HistoryLoginModulAplikasiVO historyLoginI) { - this.historyLoginI = historyLoginI; - } - - public HistoryLoginModulAplikasiVO getHistoryLoginS() { - return historyLoginS; - } - - public void setHistoryLoginS(HistoryLoginModulAplikasiVO historyLoginS) { - this.historyLoginS = historyLoginS; - } - - public HistoryLoginModulAplikasiVO getHistoryLoginU() { - return historyLoginU; - } - - public void setHistoryLoginU(HistoryLoginModulAplikasiVO historyLoginU) { - this.historyLoginU = historyLoginU; - } - - public Integer getKdTanggal() { - return kdTanggal; - } - - public void setKdTanggal(Integer kdTanggal) { - this.kdTanggal = kdTanggal; - } - - public String getNamaBulan() { - return namaBulan; - } - - public void setNamaBulan(String namaBulan) { - this.namaBulan = namaBulan; - } - - public String getNamaHari() { - return namaHari; - } - - public void setNamaHari(String namaHari) { - this.namaHari = namaHari; - } - - public Integer getqTanggal() { - return qTanggal; - } - - public void setqTanggal(Integer qTanggal) { - this.qTanggal = qTanggal; - } - - public Byte getSemesterKeDlmTahun() { - return semesterKeDlmTahun; - } - - public void setSemesterKeDlmTahun(Byte semesterKeDlmTahun) { - this.semesterKeDlmTahun = semesterKeDlmTahun; - } - - public short getTahunFiscal() { - return tahunFiscal; - } - - public void setTahunFiscal(short tahunFiscal) { - this.tahunFiscal = tahunFiscal; - } - - public short getTahunKalender() { - return tahunKalender; - } - - public void setTahunKalender(short tahunKalender) { - this.tahunKalender = tahunKalender; - } - - public Date getTanggal() { - return tanggal; - } - - public void setTanggal(Date tanggal) { - this.tanggal = tanggal; - } - - public Byte getTriwulanKeDlmTahun() { - return triwulanKeDlmTahun; - } - - public void setTriwulanKeDlmTahun(Byte triwulanKeDlmTahun) { - this.triwulanKeDlmTahun = triwulanKeDlmTahun; - } - } - From b64bb1d05405928a64479917c6b69417723c8450 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 22 Jan 2025 11:31:57 +0700 Subject: [PATCH 2/3] Update JatahCutiDanIzinServiceImpl.java Perbaikan urutan hitung jatab cuti bersama ditangguhkan dipakai dalam pengajuan cuti --- .../impl/JatahCutiDanIzinServiceImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) 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 a2a8bfab..3aa9f92b 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 @@ -54,9 +54,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { @Override public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) { - DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId); - JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId); - return tangguhkanCutiBersama(dto, jatahCutiRequest); + return calculateCutiIzin(pegawaiId, year, statusPegawaiId); } private DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) { @@ -231,7 +229,6 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } } dataCutiB = countDataHabsen; - cutiIzinBuilder.dataCutiB(dataCutiB); // kondisikan cuti bersama yg sudah berlalu if (cutiTerpakaiN2 > dataCutiB2) { cutiTerpakaiB2 = dataCutiB2; @@ -243,6 +240,10 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } else { cutiTerpakaiB1 = cutiTerpakaiN1; } + JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId); + int jatahCutiBersamaDitangguhkan = tangguhkanCutiBersama(cutiTerpakaiB1, jatahCutiRequest); + dataCutiB += jatahCutiBersamaDitangguhkan; + cutiIzinBuilder.dataCutiB(dataCutiB); // Mendapatkan kondisi penangguhan saat ini cutiIzinBuilder.isTangguhkanB2(false); cutiIzinBuilder.isTangguhkanB1(false); @@ -552,7 +553,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { return JatahCutiRequest.builder().pegawaiId(pegawaiId).year(year).statusPegawaiId(statusPegawaiId).build(); } - private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { + private int tangguhkanCutiBersama(Integer cutiBersamaTerpakaiTahunLalu, JatahCutiRequest request) { if (CommonUtil.isNullOrEmpty(request.getYear())) request.setYear(String.valueOf(DateUtil.getYear(new Date()))); Date tahunLalu = DateUtil.getInstanceCalendar(-1); @@ -563,7 +564,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { List listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream() .filter(HariLiburTerpakai::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty()) - return dto; + return 0; List listCutiDiCutiBersamaTahunLalu = tanggalCutiDao.getCutiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu); if (DateUtil.getYear(new Date()) == Integer.parseInt(request.getYear())) { @@ -571,17 +572,16 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { .notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu); int presensiCutiBersama = listPresensiTahunLalu.size(); int cutiDiCutiBersama = listCutiDiCutiBersamaTahunLalu.size(); - int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - dto.getCutiTerpakaiB1(); + int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - cutiBersamaTerpakaiTahunLalu; int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size() - listCutiTahunLaluBelumDisetujui.size(); if (jatahDitangguhkan >= sisaJatah) { if (jatahDitangguhkan < 0) jatahDitangguhkan = 0; - dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); - dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); + return jatahDitangguhkan; } } - return dto; + return 0; } } From 29fe69e5eec19bf44de692964ed28021c611dbe9 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 22 Jan 2025 13:18:33 +0700 Subject: [PATCH 3/3] Update JatahCutiDanIzinServiceImpl.java Penerapan TMT SK cuti 2024 menghapus jatah cuti bersama untuk cuti tahunan di tanggal cuti bersama --- .../service/impl/JatahCutiDanIzinServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 3aa9f92b..da7142b3 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 @@ -12,6 +12,7 @@ import com.jasamedika.medifirst2000.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; @@ -173,7 +174,14 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { // Hitung Absen di tanggal cuti bersama List listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year); int countDataHabsen = 0; + Date awal2024 = new Date(1704042000000L); for (String tglStr : listTglCutiBersama) { + Date tglCheck; + try { + tglCheck = sdf.parse(tglStr); + } catch (ParseException e) { + tglCheck = new Date(); + } List dataHabsen = new ArrayList<>(); // cek shift malam String tglPrev = sdf.format(java.sql.Date.valueOf(LocalDate.parse(tglStr).minusDays(1))); @@ -206,7 +214,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } else { countDataHabsen += 1; } - } else { + } else if (tglCheck.before(awal2024)) { // cuti tahunan di tanggal cuti bersama List tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao .getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr);