From f4d24491b1acafb35b4bc307838d17c4848fd1d6 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 9 Jan 2025 13:23:31 +0700 Subject: [PATCH 01/16] Update domain pengaturan hari libur Penambahan atribut pengecekan cuti bersama dapat ditangguhkan --- .../dao/MapKalenderToHariLiburDao.java | 52 +++++++-------- .../service/impl/IndekKinerjaServiceImpl.java | 2 +- .../entities/MapKalenderToHariLibur.java | 65 +++++++------------ .../vo/MapKalenderToHariLiburVO.java | 46 +++---------- 4 files changed, 55 insertions(+), 110 deletions(-) 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 49bd9770..33212ec8 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,43 +1,39 @@ package com.jasamedika.medifirst2000.dao; -import java.util.List; -import java.util.Map; - +import com.jasamedika.medifirst2000.entities.Kalender; +import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur; 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.Kalender; -import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur; +import java.util.List; +import java.util.Map; @Repository public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository { - - @Query("select new map (model.id as id, model.namaExternal as name, model.tanggal.tanggal as tanggal) from MapKalenderToHariLibur model where model.statusEnabled is true") - public List> getAllByStatusEnabled(); - - @Query("select model from Kalender model where model.statusEnabled is true and to_char(tanggal,'yyyy-MM-dd') = :tanggal") - public Kalender getKalender(@Param("tanggal") String tgl); - - @Query("select to_char(kalender.tanggal,'yyyy-MM-dd') "+ - "from MapKalenderToHariLibur mapLibur "+ - "inner join mapLibur.tanggal kalender "+ - "inner join mapLibur.hariLibur hariLibur "+ - "where hariLibur.id in (8,17) "+ - "and to_char(kalender.tanggal,'yyyy')=:tahun "+ - "and mapLibur.statusEnabled is true") - public List getTglCutiBersama(@Param("tahun") String tahun); - + + @Query("select new map (model.id as id, model.namaExternal as name, model.tanggal.tanggal as tanggal) " + + "from MapKalenderToHariLibur model where model.statusEnabled is true") + List> getAllByStatusEnabled(); + + @Query("select model from Kalender model " + + "where model.statusEnabled is true and to_char(tanggal,'yyyy-MM-dd') = :tanggal") + Kalender getKalender(@Param("tanggal") String tgl); + + @Query("select to_char(kalender.tanggal,'yyyy-MM-dd') " + "from MapKalenderToHariLibur mapLibur " + + "inner join mapLibur.tanggal kalender " + "inner join mapLibur.hariLibur hariLibur " + + "where hariLibur.id in (8,17) " + "and to_char(kalender.tanggal,'yyyy')=:tahun " + + "and mapLibur.statusEnabled is true") + List getTglCutiBersama(@Param("tahun") String tahun); + @Query("select new Map(model.statusEnabled as statusEnabled,model.namaExternal as namaExternal," + "to_char(kalender.tanggal,'dd-MM-yyyy') as tanggal,to_char(kalender.tanggal,'yyyy-MM-dd') as tanggalId," + "model.reportDisplay as reportDisplay,model.id as id,model.kodeExternal as kodeExternal," - + "hariLibur.id as hariLiburId,hariLibur.namaHariLibur as hariLiburName," - + "model.noRec as noRec) " - + "from MapKalenderToHariLibur model " - + "inner join model.tanggal kalender " - + "inner join model.hariLibur hariLibur " - + "where model.statusEnabled is true " + + "hariLibur.id as hariLiburId,hariLibur.namaHariLibur as hariLiburName," + "model.noRec as noRec) " + + "from MapKalenderToHariLibur model " + "inner join model.tanggal kalender " + + "inner join model.hariLibur hariLibur " + "where model.statusEnabled is true " + "and to_char(kalender.tanggal,'yyyy')>=:tahun") - public List> getMappingHariLibur(@Param("tahun") String tahun); + List> getMappingHariLibur(@Param("tahun") String tahun); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java index a59ab48b..9a739bf3 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/IndekKinerjaServiceImpl.java @@ -1564,7 +1564,7 @@ public class IndekKinerjaServiceImpl extends BaseVoServiceImpl implements IndekK if (CommonUtil.isNotNullOrEmpty(vo.getTanggal())) { Kalender kalender = mapKalenderToHariLiburDao .getKalender(new SimpleDateFormat("yyyy-MM-dd").format(vo.getTanggal().getTanggal())); - mapKalenderToHariLibur.setTgl(kalender); + mapKalenderToHariLibur.setTanggal(kalender); } if (CommonUtil.isNotNullOrEmpty(mapKalenderToHariLibur)) { MapKalenderToHariLibur model = mapKalenderToHariLiburDao.save(mapKalenderToHariLibur); diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKalenderToHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKalenderToHariLibur.java index 826d064a..bb1db93f 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKalenderToHariLibur.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/MapKalenderToHariLibur.java @@ -1,73 +1,52 @@ package com.jasamedika.medifirst2000.entities; -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 static javax.persistence.GenerationType.SEQUENCE; /** * class MapKalenderToHariLibur * * @author Generator */ -@Entity // @Audited +@Getter +@Setter +@Entity @Table(name = "MapKalenderToHariLibur_M") public class MapKalenderToHariLibur extends BaseMaster { + + private static final long serialVersionUID = -1571116407894714011L; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "public.mapkalendertoharilibur_m_id_seq") + @SequenceGenerator(name = "public.mapkalendertoharilibur_m_id_seq", sequenceName = "public.mapkalendertoharilibur_m_id_seq", allocationSize = 1) + @Column(name = "id") + protected Integer id; + @ManyToOne @JoinColumn(name = "ObjectHariLiburFk") @NotNull(message = "Kd Hari Libur tidak boleh kosong") - @Caption(value = "Object Hari Libur") private HariLibur hariLibur; - public void setHariLibur(HariLibur hariLibur) { - this.hariLibur = hariLibur; - } - - public HariLibur getHariLibur() { - return this.hariLibur; - } - @Column(name = "ObjectHariLiburFk", insertable = false, updatable = false) private Integer hariLiburId; @ManyToOne - @JoinColumn(name = "ObjectTanggalFk") - + @JoinColumn(name = "ObjectTanggalFk") @Caption(value = "Object Tanggal") private Kalender tanggal; - public void setTgl(Kalender tanggal) { - this.tanggal = tanggal; - } - - public Kalender getTgl() { - return this.tanggal; - } - @Column(name = "ObjectTanggalFk", insertable = false, updatable = false, nullable = false) private Integer tanggalId; - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.mapkalendertoharilibur_m_id_seq") - @javax.persistence.SequenceGenerator(name = "public.mapkalendertoharilibur_m_id_seq", sequenceName = "public.mapkalendertoharilibur_m_id_seq", allocationSize = 1) - @Column(name = "id") - protected Integer id; + @Column(name = "is_cuti_bersama_ditangguhkan") + private Boolean isCutiBersamaDitangguhkan; - public Integer getId() { - - return id; - } - - public void setId(Integer id) { - this.id = id; - } } \ No newline at end of file diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapKalenderToHariLiburVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapKalenderToHariLiburVO.java index ae244cb2..dace8243 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapKalenderToHariLiburVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/MapKalenderToHariLiburVO.java @@ -1,56 +1,26 @@ package com.jasamedika.medifirst2000.vo; -import java.io.Serializable; -import javax.persistence.*; -import java.util.Date; -import org.hibernate.validator.constraints.NotEmpty; - import com.jasamedika.medifirst2000.base.vo.BaseMasterVO; -import javax.validation.constraints.NotNull; -import org.hibernate.validator.constraints.Length; -import org.hibernate.validator.internal.util.logging.Messages; - -import com.fasterxml.jackson.annotation.JsonManagedReference; -import com.jasamedika.medifirst2000.base.vo.BaseMasterVO; -import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; /** - * class MapKalenderToHariLibur + * class MapKalenderToHariLibur * * @author Generator */ -//@Entity -//@Table(name = "MapKalenderToHariLibur_M") +@Getter +@Setter public class MapKalenderToHariLiburVO extends BaseMasterVO { - - private HariVO hariLibur; - public void setHariLibur(HariVO hariLibur) { - this.hariLibur = hariLibur; - } + private HariLiburVO hariLibur; - @Column(name = "KdHariLibur", nullable = false ) - public HariVO getHariLibur(){ - return this.hariLibur; - } - - @Column(name = "ObjectHariLiburFk", insertable=false,updatable=false) private Integer hariLiburId; - - private KalenderVO tanggal; + private KalenderVO tanggal; - public KalenderVO getTanggal() { - return tanggal; - } - - public void setTanggal(KalenderVO tanggal) { - this.tanggal = tanggal; - } - - @Column(name = "ObjectTanggalFk", insertable=false,updatable=false) private Integer tanggalId; + private Boolean isCutiBersamaDitangguhkan; } - From 172559120bb25b2f84e49f2d205b37708cd34afa Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 9 Jan 2025 15:24:20 +0700 Subject: [PATCH 02/16] 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()); From c72352c2948791962a0e9275d9922ca518c1630f Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 13 Jan 2025 04:17:11 +0700 Subject: [PATCH 03/16] Update service jatah cuti dan iziin Pembuatan subrutin get data presensi di cuti bersama yang bisa ditangguhkan di tahun sebelumnya --- .../dao/MapKalenderToHariLiburDao.java | 9 +++++++ .../impl/JatahCutiDanIzinServiceImpl.java | 25 +++++++++++++---- .../medifirst2000/dto/JatahCutiRequest.java | 25 +++++++++++++++++ .../medifirst2000/dto/PresensiHariLibur.java | 27 +++++++++++++++++++ 4 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java index 33212ec8..359a0813 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapKalenderToHariLiburDao.java @@ -1,5 +1,6 @@ package com.jasamedika.medifirst2000.dao; +import com.jasamedika.medifirst2000.dto.PresensiHariLibur; import com.jasamedika.medifirst2000.entities.Kalender; import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur; import org.springframework.data.jpa.repository.Query; @@ -7,6 +8,7 @@ import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Date; import java.util.List; import java.util.Map; @@ -36,4 +38,11 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository=:tahun") List> getMappingHariLibur(@Param("tahun") String tahun); + @Query("select distinct new com.jasamedika.medifirst2000.dto.PresensiHariLibur(" + + "pg.id as idPegawai, pg.namaLengkap as namaLengkap, kld.tanggal as tanggal) " + + "from Pegawai pg, Habsen hab, MapKalenderToHariLibur mkl " + "inner join mkl.tanggal kld " + + "where pg.idFinger = hab.empl_code " + "and cast(hab.tr_date as date) = kld.tanggal " + + "and mkl.isCutiBersamaDitangguhkan is true " + "and kld.tanggal between :tglAwal and :tglAkhir") + List getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java index bbe22d00..0cd8851c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java @@ -3,6 +3,8 @@ package com.jasamedika.medifirst2000.service.impl; import com.jasamedika.medifirst2000.constants.Master; import com.jasamedika.medifirst2000.dao.*; import com.jasamedika.medifirst2000.dto.DataCutiDto; +import com.jasamedika.medifirst2000.dto.JatahCutiRequest; +import com.jasamedika.medifirst2000.dto.PresensiHariLibur; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; @@ -44,10 +46,12 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { @Override public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) { - return calculateCutiIzin(pegawaiId, year, statusPegawaiId); + DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId); + JatahCutiRequest jatahCutiRequest = transform(pegawaiId, year, statusPegawaiId); + return tangguhkanCutiBersama(dto, jatahCutiRequest); } - public DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) { + private DataCutiDto calculateCutiIzin(Integer pegawaiId, String year, Integer statusPegawaiId) { DataCutiDto.DataCutiDtoBuilder cutiIzinBuilder = DataCutiDto.builder(); List listKomponenIndex = new ArrayList<>(); int sisaCuti; @@ -306,8 +310,6 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { sisaCutiN2 = 0; } } else { - difCutiTerpakai(cutiTerpakaiN2, dataCutiB2); - difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); sisaCutiN2 = dataCutiN2 - jatahCutiTerpakaiN2; } } @@ -530,11 +532,24 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { return cutiIzinBuilder.build(); } - public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) { + private Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti) { int difCutiTerpakai = 0; if (cutiTerpakai > dataCuti) difCutiTerpakai = cutiTerpakai - dataCuti; return difCutiTerpakai; } + private JatahCutiRequest transform(Integer pegawaiId, String year, Integer statusPegawaiId) { + return JatahCutiRequest.builder().pegawaiId(pegawaiId).year(year).statusPegawaiId(statusPegawaiId).build(); + } + + private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { + DataCutiDto.DataCutiDtoBuilder builder = DataCutiDto.builder(); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, -1); + List listPresensi = mapKalenderToHariLiburDao + .getByTahun(DateUtil.startYear(calendar.getTime()), DateUtil.endYear(calendar.getTime())); + return dto; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java new file mode 100644 index 00000000..9ed999e5 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/JatahCutiRequest.java @@ -0,0 +1,25 @@ +package com.jasamedika.medifirst2000.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Salman + * @version 1.0.0 + * @since 10/01/2025 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class JatahCutiRequest { + + Integer pegawaiId; + + String year; + + Integer statusPegawaiId; + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java new file mode 100644 index 00000000..f3b5f6cb --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java @@ -0,0 +1,27 @@ +package com.jasamedika.medifirst2000.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author Salman + * @version 1.0.0 + * @since 10/01/2025 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PresensiHariLibur { + + private Integer idPegawai; + + private String namaLengkap; + + private Date tanggal; + +} From c65caf2afb3297a9079f88e9c8738fee8862a3aa Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 13 Jan 2025 13:23:26 +0700 Subject: [PATCH 04/16] Update service jatah cuti dan izin Penerapana hitungan presensi dan komparasi data cuti tahun sebelumnya untuk validasi penangguhan cuti bersama ke tahun berjalan --- .../medifirst2000/constants/Master.java | 4 +++ .../dao/MapKalenderToHariLiburDao.java | 13 ++++++-- .../impl/JatahCutiDanIzinServiceImpl.java | 31 ++++++++++++++++--- .../medifirst2000/util/DateUtil.java | 6 ++++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 9f661fd5..436c2c5c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -58,6 +58,10 @@ public final class Master { public static final Integer VISIT = 29; } + public static final class HariLibur { + public static final Integer LIBUR_CB = 8; + } + public static final class IndikatorKinerja { public static final Integer KEPATUHAN_PELAYANAN_MEDIS = 674; public static final Integer KETEPATAN_KEHADIRAN = 357; 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 359a0813..b8031150 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 @@ -41,8 +41,17 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + + @Query("select mkl from MapKalenderToHariLibur mkl " + + "inner join mkl.tanggal kld " + + "where mkl.statusEnabled is true " + + "and kld.tanggal between :tglAwal and :tglAkhir " + + "and mkl.hariLiburId = :idHariLibur") + List getByTahun(@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 0cd8851c..2edf231a 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 @@ -5,6 +5,7 @@ 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.entities.MapKalenderToHariLibur; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; @@ -14,6 +15,9 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; +import java.util.stream.Collectors; + +import static com.jasamedika.medifirst2000.constants.Master.HariLibur.LIBUR_CB; /** * @author Salman @@ -544,11 +548,28 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { - DataCutiDto.DataCutiDtoBuilder builder = DataCutiDto.builder(); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.YEAR, -1); - List listPresensi = mapKalenderToHariLiburDao - .getByTahun(DateUtil.startYear(calendar.getTime()), DateUtil.endYear(calendar.getTime())); + Date previousYear = DateUtil.getInstanceCalendar(-1); + Date janFirstPrevYear = DateUtil.startYear(previousYear); + Date decEndPrevYear = DateUtil.endYear(previousYear); + List listPresensiPrevYear = mapKalenderToHariLiburDao.getPresensiByTahun(request.getPegawaiId(), + janFirstPrevYear, decEndPrevYear); + List listCBPrevYear = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, janFirstPrevYear, decEndPrevYear); + int countCBPrevYear = listCBPrevYear.size(); + List listCBPrevYearSuspended = listCBPrevYear.stream() + .filter(MapKalenderToHariLibur::getIsCutiBersamaDitangguhkan) + .collect(Collectors.toList()); + int countCBSuspended = listCBPrevYearSuspended.size(); + int countCBAllocated = 0; + for (PresensiHariLibur presensiPrevYear : listPresensiPrevYear) { + for (MapKalenderToHariLibur cbPrevYearSuspended : listCBPrevYearSuspended) { + if (presensiPrevYear.getTanggal().equals(cbPrevYearSuspended.getTanggal().getTanggal())) { + countCBAllocated++; + break; + } + } + } + if (dto.getCutiTerpakaiB1() < countCBPrevYear && countCBPrevYear - dto.getCutiTerpakaiB1() > countCBSuspended) + dto.setDataCutiB(countCBSuspended); return dto; } diff --git a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java index 7e9b4f58..a4a80dee 100644 --- a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java +++ b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java @@ -237,6 +237,12 @@ public final class DateUtil implements Serializable { return now.get(Calendar.YEAR); } + public static Date getInstanceCalendar(int addYear) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, addYear); + return calendar.getTime(); + } + public static final synchronized Integer getYearFromDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); From 993707c1f371dede2bc9ec318bb741174508dd1e Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 13 Jan 2025 13:23:26 +0700 Subject: [PATCH 05/16] Update service jatah cuti dan izin Penerapana hitungan presensi dan komparasi data cuti tahun sebelumnya untuk validasi penangguhan cuti bersama ke tahun berjalan --- .../medifirst2000/constants/Master.java | 4 +++ .../dao/MapKalenderToHariLiburDao.java | 13 +++++-- .../impl/JatahCutiDanIzinServiceImpl.java | 34 ++++++++++++++++--- .../medifirst2000/util/DateUtil.java | 6 ++++ 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java index 9f661fd5..436c2c5c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/constants/Master.java @@ -58,6 +58,10 @@ public final class Master { public static final Integer VISIT = 29; } + public static final class HariLibur { + public static final Integer LIBUR_CB = 8; + } + public static final class IndikatorKinerja { public static final Integer KEPATUHAN_PELAYANAN_MEDIS = 674; public static final Integer KETEPATAN_KEHADIRAN = 357; 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 359a0813..b8031150 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 @@ -41,8 +41,17 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository getByTahun(@Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + + @Query("select mkl from MapKalenderToHariLibur mkl " + + "inner join mkl.tanggal kld " + + "where mkl.statusEnabled is true " + + "and kld.tanggal between :tglAwal and :tglAkhir " + + "and mkl.hariLiburId = :idHariLibur") + List getByTahun(@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 0cd8851c..0bca5cf3 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 @@ -5,6 +5,7 @@ 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.entities.MapKalenderToHariLibur; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; @@ -14,6 +15,9 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; +import java.util.stream.Collectors; + +import static com.jasamedika.medifirst2000.constants.Master.HariLibur.LIBUR_CB; /** * @author Salman @@ -544,11 +548,31 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { - DataCutiDto.DataCutiDtoBuilder builder = DataCutiDto.builder(); - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.YEAR, -1); - List listPresensi = mapKalenderToHariLiburDao - .getByTahun(DateUtil.startYear(calendar.getTime()), DateUtil.endYear(calendar.getTime())); + Date previousYear = DateUtil.getInstanceCalendar(-1); + Date janFirstPrevYear = DateUtil.startYear(previousYear); + Date decEndPrevYear = DateUtil.endYear(previousYear); + List listCBPrevYear = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, janFirstPrevYear, + decEndPrevYear); + int countCBPrevYear = listCBPrevYear.size(); + List listCBPrevYearSuspended = listCBPrevYear.stream() + .filter(MapKalenderToHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); + int countCBAllocated = 0; + List listPresensiPrevYear = mapKalenderToHariLiburDao + .getPresensiByTahun(request.getPegawaiId(), janFirstPrevYear, decEndPrevYear); + for (PresensiHariLibur presensiPrevYear : listPresensiPrevYear) { + for (MapKalenderToHariLibur cbPrevYearSuspended : listCBPrevYearSuspended) { + if (presensiPrevYear.getTanggal().equals(cbPrevYearSuspended.getTanggal().getTanggal())) { + countCBAllocated++; + break; + } + } + } + if (dto.getCutiTerpakaiB1() < countCBPrevYear) { + if (countCBPrevYear - dto.getCutiTerpakaiB1() > countCBAllocated) { + dto.setDataCutiB(dto.getDataCutiB() + countCBAllocated); + dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); + } + } return dto; } diff --git a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java index 7e9b4f58..a4a80dee 100644 --- a/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java +++ b/jasamedika-core/src/main/java/com/jasamedika/medifirst2000/util/DateUtil.java @@ -237,6 +237,12 @@ public final class DateUtil implements Serializable { return now.get(Calendar.YEAR); } + public static Date getInstanceCalendar(int addYear) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, addYear); + return calendar.getTime(); + } + public static final synchronized Integer getYearFromDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); From 3384ae7fd339bd04839438b041a1908a03222193 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 14 Jan 2025 11:02:16 +0700 Subject: [PATCH 06/16] Update service jatah cuti Penerapan validasi presensi dan cuti belum disetujui saat hitung jatah cuti bersama yang ditangguhkan --- .../medifirst2000/dao/ListTanggalCutiDao.java | 75 +- .../dao/MapKalenderToHariLiburDao.java | 25 +- .../dao/PlanningPegawaiStatusDao.java | 863 ++++++------------ .../impl/JatahCutiDanIzinServiceImpl.java | 58 +- .../medifirst2000/dto/PresensiHariLibur.java | 2 + .../entities/ListTanggalCuti.java | 67 +- .../entities/PlanningPegawaiStatus.java | 465 +++------- .../medifirst2000/vo/ListTanggalCutiVO.java | 45 +- .../vo/PlanningPegawaiStatusVO.java | 407 ++------- 9 files changed, 541 insertions(+), 1466 deletions(-) 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 b534f13e..637de75f 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,6 +1,5 @@ package com.jasamedika.medifirst2000.dao; - import java.util.Date; import java.util.List; import java.util.Map; @@ -14,52 +13,52 @@ import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.ListTanggalCuti; @Repository("ListTanggalCutiDao") -public interface ListTanggalCutiDao extends PagingAndSortingRepository{ +public interface ListTanggalCutiDao extends PagingAndSortingRepository { @Modifying @Query("update ListTanggalCuti m set m.statusEnabled=false where m.planningPegawaiStatusId =:id") void deleteDatas(@Param("id") String id); - - @Query("select distinct new Map(to_char(listTglCuti.tgl, 'yyyy') as tahun, "+ - "to_char(listTglCuti.tgl, 'MM') as bulan) "+ - "from ListTanggalCuti listTglCuti "+ - "where listTglCuti.statusEnabled is true "+ - "and listTglCuti.noRec in (:listNorec)") + + @Query("select distinct new Map(to_char(listTglCuti.tgl, 'yyyy') as tahun, " + + "to_char(listTglCuti.tgl, 'MM') as bulan) " + "from ListTanggalCuti listTglCuti " + + "where listTglCuti.statusEnabled is true " + "and listTglCuti.noRec in (:listNorec)") List> getListTglCutiByNorec(@Param("listNorec") List listNorec); - - @Query("select distinct new Map(to_char(kalender.tanggal, 'yyyy') as tahun,"+ - "to_char(kalender.tanggal, 'MM') as bulan) "+ - "from Kalender kalender "+ - "where kalender.statusEnabled is true "+ - "and kalender.id between :idKalAwal and :idKalAkhir "+ - "order by to_char(kalender.tanggal, 'yyyy'), to_char(kalender.tanggal, 'MM')") - List> getListTglCutiByNorec(@Param("idKalAwal") Integer idKalAwal, @Param("idKalAkhir") Integer idKalAkhir); - - @Query("select to_char(listTglCuti.tgl, 'yyyy-MM-dd') "+ - "from ListTanggalCuti listTglCuti "+ - "where listTglCuti.statusEnabled is true "+ - "and listTglCuti.noRec in (:listNorec)") + + @Query("select distinct new Map(to_char(kalender.tanggal, 'yyyy') as tahun," + + "to_char(kalender.tanggal, 'MM') as bulan) " + "from Kalender kalender " + + "where kalender.statusEnabled is true " + "and kalender.id between :idKalAwal and :idKalAkhir " + + "order by to_char(kalender.tanggal, 'yyyy'), to_char(kalender.tanggal, 'MM')") + List> getListTglCutiByNorec(@Param("idKalAwal") Integer idKalAwal, + @Param("idKalAkhir") Integer idKalAkhir); + + @Query("select to_char(listTglCuti.tgl, 'yyyy-MM-dd') " + "from ListTanggalCuti listTglCuti " + + "where listTglCuti.statusEnabled is true " + "and listTglCuti.noRec in (:listNorec)") List getListTglCutiByNorecDetail(@Param("listNorec") List listNorec); - - @Query("select kalender.id from Kalender kalender where kalender.statusEnabled is true and to_char(kalender.tanggal, 'yyyy-MM-dd') = :tglCuti") + + @Query("select kalender.id " + "from Kalender kalender " + "where kalender.statusEnabled is true " + + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = :tglCuti") Integer getIdKalenderByTglCuti(@Param("tglCuti") String tglCuti); - - @Query("select mapStatus.shiftKerjaId "+ - "from MapStatusPegawaiToShiftKerja mapStatus "+ - "where mapStatus.statusEnabled is true "+ - "and mapStatus.statusPegawaiId = :idStatusExec "+ - "and mapStatus.kelompokShiftId = :idKelShift") + + @Query("select mapStatus.shiftKerjaId " + "from MapStatusPegawaiToShiftKerja mapStatus " + + "where mapStatus.statusEnabled is true " + "and mapStatus.statusPegawaiId = :idStatusExec " + + "and mapStatus.kelompokShiftId = :idKelShift") Integer getMappingShiftKerja(@Param("idStatusExec") Integer idStatusExec, @Param("idKelShift") Integer idKelShift); - - @Query("select pegawai.shiftKerjaId from Pegawai pegawai where pegawai.statusEnabled is true and pegawai.id = :idPegawai") + + @Query("select pegawai.shiftKerjaId " + "from Pegawai pegawai " + "where pegawai.statusEnabled is true " + + "and pegawai.id = :idPegawai") Integer getKelShift(@Param("idPegawai") Integer idPegawai); - - @Query("select listTgl.tgl " - + "from ListTanggalCuti listTgl " - + "left join listTgl.planningPegawaiStatus planning " - + "where planning.noRec = :noRec " - + "and planning.statusEnabled is true " + + @Query("select listTgl.tgl " + "from ListTanggalCuti listTgl " + "left join listTgl.planningPegawaiStatus planning " + + "where planning.noRec = :noRec " + "and planning.statusEnabled is true " + "and planning.approvalStatus <> 3") List getTglCuti(@Param("noRec") String noRec); - + + @Query("select tc from ListTanggalCuti tc " + "inner join tc.planningPegawaiStatus ps " + + "where tc.statusEnabled is true " + "and ps.statusEnabled is true " + "and ps.noSkId is null " + + "and ps.approvalStatus not in (1, 3) " + "and ps.pegawaiId = :idPegawai " + + "and ps.statusPegawaiPlanId = :idJenisPermohonan " + "and tc.tgl between :tglAwal and :tglAkhir") + List notApprovedByPermohonan(@Param("idPegawai") Integer idPegawai, + @Param("idJenisPermohonan") Integer idJenisPermohonan, @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 b8031150..acd2859d 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 @@ -39,19 +39,20 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository> getMappingHariLibur(@Param("tahun") String tahun); @Query("select distinct new com.jasamedika.medifirst2000.dto.PresensiHariLibur(" - + "pg.id as idPegawai, pg.namaLengkap as namaLengkap, kld.tanggal as tanggal) " + + "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.isCutiBersamaDitangguhkan is true " + "and kld.tanggal between :tglAwal and :tglAkhir") - List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + + "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, + @Param("idHariLibur") Integer idHariLibur, @Param("tglAwal") Date tglAwal, + @Param("tglAkhir") Date tglAkhir); - @Query("select mkl from MapKalenderToHariLibur mkl " + - "inner join mkl.tanggal kld " + - "where mkl.statusEnabled is true " + - "and kld.tanggal between :tglAwal and :tglAkhir " + - "and mkl.hariLiburId = :idHariLibur") - List getByTahun(@Param("idHariLibur") Integer idHariLibur, - @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + @Query("select mkl from MapKalenderToHariLibur mkl " + "inner join mkl.tanggal kld " + + "where mkl.statusEnabled is true " + "and kld.tanggal between :tglAwal and :tglAkhir " + + "and mkl.hariLiburId = :idHariLibur") + List getByTahun(@Param("idHariLibur") Integer idHariLibur, @Param("tglAwal") Date tglAwal, + @Param("tglAkhir") Date tglAkhir); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java index 3955c7c7..258c3128 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java @@ -1,673 +1,322 @@ package com.jasamedika.medifirst2000.dao; -import java.util.Date; import java.util.List; import java.util.Map; +import org.springframework.data.jpa.repository.JpaRepository; 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.PlanningPegawaiStatus; @Repository("PlanningPegawaiStatusDao") -public interface PlanningPegawaiStatusDao extends PagingAndSortingRepository{ - - @Query("select a.noPlanning " - + "from PlanningPegawaiStatus a " - + "where a.noPlanning LIKE %:kode% " +public interface PlanningPegawaiStatusDao extends JpaRepository { + + @Query("select a.noPlanning " + "from PlanningPegawaiStatus a " + "where a.noPlanning LIKE %:kode% " + "order by a.noPlanning asc") List noPlanning(@Param("kode") String kode); - @Query("select count(a.noPlanning) " - + "from PlanningPegawaiStatus a " - + "where a.noPlanning LIKE %:kode% ") - Long countNoPlanning(@Param("kode") String kode) ; - - @Query("select NEW Map (" - + "a.id as id, " - + "a.namaLengkap as namaLengkap," - + "c.id as kategoriPegawaiId) " - + "from MapPegawaiJabatanToUnitKerja m " - + "left join m.pegawai a " - + "left join m.subUnitKerjaPegawai b " - + "left join m.unitKerjaPegawai e " - + "left join a.kategoryPegawai c " - + "left join a.statusPegawai d " - + "where m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.id=:id " - + "and c.id!=11 " + @Query("select NEW Map (" + "a.id as id, " + "a.namaLengkap as namaLengkap," + "c.id as kategoriPegawaiId) " + + "from MapPegawaiJabatanToUnitKerja m " + "left join m.pegawai a " + "left join m.subUnitKerjaPegawai b " + + "left join m.unitKerjaPegawai e " + "left join a.kategoryPegawai c " + "left join a.statusPegawai d " + + "where m.isPrimary is true " + "and m.statusEnabled is true " + "and e.id=:id " + "and c.id!=11 " + "and d.id=2") - List> getListPegawai( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.id as id," - + "a.statusPegawai as statusPegawai) " - + "from StatusPegawai a " - + "where a.id=1 or " - + "a.id=24 or " - + "a.id=25 or " - + "a.id=26 or " - + "a.id=27 or " - + "a.id=28 or " + List> getListPegawai(@Param("id") Integer id); + + @Query("select NEW Map (" + "a.id as id," + "a.statusPegawai as statusPegawai) " + "from StatusPegawai a " + + "where a.id=1 or " + "a.id=24 or " + "a.id=25 or " + "a.id=26 or " + "a.id=27 or " + "a.id=28 or " + "a.id=29") List> getListStatusPegawai(); - - @Query("select NEW Map (" - + "a.nipPns as nip," - + "a.id as idPegawai," - + "b.id as jabatanId," - + "b.namaJabatan as jabatan," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "c.id as subUnitKerjaId," - + "c.name as subUnitKerja," - + "a.tglMasuk as tglMasuk," - + "a.alamat as alamat," - + "a.noHandphone as noHandphone," - + "kategori.id as kategoriPegawaiId ) " - + "from MapPegawaiJabatanToUnitKerja m " - + "left join m.pegawai a " - + "left join m.jabatan b " - + "left join a.kategoryPegawai kategori " - + "left join m.subUnitKerjaPegawai c " - + "left join m.unitKerjaPegawai d " - + "where m.isPrimary is true " - + "and m.statusEnabled is true " + + @Query("select NEW Map (" + "a.nipPns as nip," + "a.id as idPegawai," + "b.id as jabatanId," + + "b.namaJabatan as jabatan," + "d.id as unitKerjaId," + "d.name as unitKerja," + "c.id as subUnitKerjaId," + + "c.name as subUnitKerja," + "a.tglMasuk as tglMasuk," + "a.alamat as alamat," + + "a.noHandphone as noHandphone," + "kategori.id as kategoriPegawaiId ) " + + "from MapPegawaiJabatanToUnitKerja m " + "left join m.pegawai a " + "left join m.jabatan b " + + "left join a.kategoryPegawai kategori " + "left join m.subUnitKerjaPegawai c " + + "left join m.unitKerjaPegawai d " + "where m.isPrimary is true " + "and m.statusEnabled is true " + "and a.id=:id") - Map getDataPermohonanStatus( - @Param("id") Integer id); - - @Query("select NEW Map(a.nipPns as nip,a.id as idPegawai,a.tglMasuk as tglMasuk,a.alamat as alamat,a.noHandphone as noHandphone,b.id as kategoriPegawaiId) " + Map getDataPermohonanStatus(@Param("id") Integer id); + + @Query("select NEW Map(a.nipPns as nip," + "a.id as idPegawai" + ",a.tglMasuk as tglMasuk" + ",a.alamat as alamat," + + "a.noHandphone as noHandphone," + "b.id as kategoriPegawaiId) " + "from Pegawai a left join a.kategoryPegawai b where a.id=:id") Map getDataMapPermohonanStatus(@Param("id") Integer id); - //--------------------------CUTI TAHUNAN---------------------- - @Query("select Count(a.id) " - + "from MapKalenderToHariLibur a " - + "left join a.hariLibur b " - + "left join a.tanggal c " - + "where b.id=:id and year(c.tanggal)=:thisYear") - Long getCutiBersama( - @Param("id") Integer id, - @Param("thisYear") Integer thisYear); - - //--------------------------CUTI MELAHIRKAN----------------------// - - @Query("select NEW Map (" - + "a.id as id," - + "a.kuotaTotalHari as kuotaTotalHari," - + "a.kuotaMinHariTake as kuotaMinHariTake," - + "a.qtyMaxTake as qtyMaxTake," - + "a.isAkumulasi as isAkumulasi) " - + "from PegawaiSKCuti a " - + "left join a.statusPegawai b " + @Query("select NEW Map (" + "a.id as id," + "a.kuotaTotalHari as kuotaTotalHari," + + "a.kuotaMinHariTake as kuotaMinHariTake," + "a.qtyMaxTake as qtyMaxTake," + + "a.isAkumulasi as isAkumulasi) " + "from PegawaiSKCuti a " + "left join a.statusPegawai b " + "where b.id=:statusPegawaiId") - Map getJatahCutiMelahirkan( - @Param("statusPegawaiId") Integer statusPegawaiId); - - //---------------------APPROVAL--------------------------------- - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.approvalStatus as approvalStatus," - + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "d.id as unitKerjaId," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and d.id=:id " + Map getJatahCutiMelahirkan(@Param("statusPegawaiId") Integer statusPegawaiId); + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + + "a.approvalStatus as approvalStatus," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "b.namaLengkap as namaPegawai," + "c.id as statusPegawaiId," + + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + "d.name as unitKerja," + + "d.id as unitKerjaId," + "f.namaJabatan as namaJabatan) " + + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + "left join a.pegawai b " + + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and d.id=:id " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") - List> getListPermohonanStatus( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.approvalStatus as approvalStatus," + List> getListPermohonanStatus(@Param("id") Integer id); + + String planningStatusPegawai = "select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and b.id=:id ") - List> getListPermohonanStatusByPegawai2( - @Param("id") Integer id); - - String planningStatusPegawai = "select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "a.approvalStatus as approvalStatus, " - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "g.id as subUnitKerjaId," - + "g.name as subUnitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and a.approvalStatus =1 " - + "and b.id=:id "; - - @Query( planningStatusPegawai - + "and " - + "(c.id=1 or " - + "c.id=24 or " - + "c.id=25 or " - + "c.id=26 or " - + "c.id=27 or " - + "c.id=28 or " - + "c.id=29)") - List> getListPermohonanStatusByPegawai( - @Param("id") Integer id); - - @Query(planningStatusPegawai - + "and " - + "c.statusPegawai=:statusPegawai and " + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "a.approvalStatus as approvalStatus, " + "b.namaLengkap as namaPegawai," + + "c.id as statusPegawaiId," + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + + "d.name as unitKerja," + "g.id as subUnitKerjaId," + "g.name as subUnitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and a.approvalStatus =1 " + "and b.id=:id "; + + @Query(planningStatusPegawai + "and " + "(c.id=1 or " + "c.id=24 or " + "c.id=25 or " + "c.id=26 or " + + "c.id=27 or " + "c.id=28 or " + "c.id=29)") + List> getListPermohonanStatusByPegawai(@Param("id") Integer id); + + @Query(planningStatusPegawai + "and " + "c.statusPegawai=:statusPegawai and " + "to_char(a.tglKeputusan,'yyyy')=to_char(current_timestamp,'yyyy') ") - List> getListPermohonanStatusByPegawai(@Param("id") Integer id, @Param("statusPegawai") String statusPegawai); - - @Query(planningStatusPegawai - + "and " - + "c.statusPegawai=:statusPegawai") - List> getListPermohonanStatusByPegawaiAll(@Param("id") Integer id, @Param("statusPegawai") String statusPegawai); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," + List> getListPermohonanStatusByPegawai(@Param("id") Integer id, + @Param("statusPegawai") String statusPegawai); + + @Query(planningStatusPegawai + "and " + "c.statusPegawai=:statusPegawai") + List> getListPermohonanStatusByPegawaiAll(@Param("id") Integer id, + @Param("statusPegawai") String statusPegawai); + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "a.approvalStatus as approvalStatus, " - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "g.id as subUnitKerjaId," - + "g.name as subUnitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join m.jabatan f " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and a.approvalStatus =1 " + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "a.approvalStatus as approvalStatus, " + "b.namaLengkap as namaPegawai," + + "c.id as statusPegawaiId," + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + + "d.name as unitKerja," + "g.id as subUnitKerjaId," + "g.name as subUnitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join a.noSk e " + + "left join m.jabatan f " + "left join m.subUnitKerjaPegawai g " + "left join m.unitKerjaPegawai d " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and a.approvalStatus =1 " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") List> getListPermohonanStatusAll(); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec," - + "a.keteranganLainyaExec as keteranganLainyaExec," - + "a.tglPengajuan as tglPengajuan," - + "a.tglKeputusan as tglKeputusan," - + "a.approvalStatus as approvalStatus," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "b.nipPns as nip," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") + + "a.keteranganLainyaExec as keteranganLainyaExec," + "a.tglPengajuan as tglPengajuan," + + "a.tglKeputusan as tglKeputusan," + "a.approvalStatus as approvalStatus," + "b.id as pegwaiId," + + "b.namaLengkap as namaPegawai," + "b.nipPns as nip," + "c.id as statusPegawaiId," + + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + "d.name as unitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") List> getApprovalStatus(); - - @Query("select NEW Map (" - + "b.id as id) " - + "from Pegawai a " - + "left join a.shiftKerja b " - + "where a.id=:id") - Map getKelompokShift( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.id as id," - + "a.factorRate as factorRate," - + "a.operatorFactorRate as operatorFactorRate," - + "a.komponenIndex as komponenIndex) " - + "from KomponenIndex a " - + "where a.id=:id") - Map getKomponenIndex( - @Param("id") Integer id); - - - @Query("select pegawai.id "+ - "from PegawaiSisaCuti psc "+ - "left join psc.pegawai pegawai "+ - "where psc.sisaCuti=:sisaCuti") - List getIdPegawai( - @Param("sisaCuti") Integer sisaCuti); - - @Query("select count(jadwalKerja.id) "+ - "from PegawaiJadwalKerja jadwalKerja "+ - "left join jadwalKerja.pegawai pegawai "+ - "left join jadwalKerja.tanggal kalender "+ - "left join jadwalKerja.shift shift "+ - "where to_char(kalender.tanggal,'yyyy-MM-dd') between :startDate and :endDate "+ - "and shift.id not in (:listKomponenIndexId) "+ - "and pegawai.id = :pegawaiId") - Integer getDayHadir(@Param("pegawaiId") Integer pegawaiId,@Param("listKomponenIndexId") List listKomponenIndexId,@Param("startDate") String startDate,@Param("endDate") String endDate); - - @Query("select new map (list.noRec as noRec, list.tgl as tgl) from ListTanggalCuti list where list.planningPegawaiStatusId = :noRec and list.statusEnabled is true order by list.tgl asc") - List> getListTanggalCuti(@Param("noRec") String noRec); - - @Query("select new map (list.noRec as noRec, list.tgl as tgl) from ListTanggalCuti list where list.approvalStatus is true and list.planningPegawaiStatusId = :noRec and list.statusEnabled is true order by list.tgl") - List> getListTanggalCutiApproved(@Param("noRec") String noRec); - - @Query("select list.tgl as tgl " - + "from ListTanggalCuti list " - + "where list.planningPegawaiStatusId in (:listNorec) " - + "and list.statusEnabled is true " - + "and list.tgl in (:listTgl) " - + "and list.approvalStatus is true " - + "and list.planningPegawaiStatus.approvalStatus = 1") - List getListAllTanggalCutiApproved(@Param("listNorec") List listNorec, @Param("listTgl") List listTgl); - - @Query("select list.tgl as tgl " - + "from ListTanggalCuti list " - + "where list.planningPegawaiStatusId in (:listNorec) " - + "and list.statusEnabled is true " - + "and list.tgl in (:listTgl) " - + "and list.planningPegawaiStatus.approvalStatus = 0") - List getListAllTanggalCutiNotYetApprove(@Param("listNorec") List listNorec, @Param("listTgl") List listTgl); - - @Query("select distinct new Map (tglCuti.tgl as tglCuti) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, "+ - "PlanningPegawaiStatus planningCuti "+ - "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ - "left join planningCuti.listTanggal tglCuti "+ - "where mapPegawaiPelimpah.pegawaiId = planningCuti.pegawaiId "+ - "and planningCuti.pegawaiId = pegawaiPelimpah.id "+ - "and planningCuti.noRec = :noRecPlanning "+ - "and pegawaiPelimpah.id = :idPegawaiPelimpah "+ - "and mapPegawaiPelimpah.statusEnabled is true "+ - "and planningCuti.statusEnabled is true "+ - "and pegawaiPelimpah.statusEnabled is true "+ - "and tglCuti.statusEnabled is true "+ - "order by tglCuti.tgl asc") - public List> getListTglCutiPelimpah(@Param("noRecPlanning") String noRecPlanning, @Param("idPegawaiPelimpah") Integer idPegawaiPelimpah); - -// @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, "+ -// "pegawaiPelimpah.nipPns as nipPegawai, "+ -// "jabatanPelimpah.namaJabatan as jabatanPegawai, "+ -// "atasanLangsung.namaLengkap as namaAtasanLangsung, "+ -// "atasanLangsung.nipPns as nipAtasanLangsung) "+ -// "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, "+ -// "MappingPegawaiToAtasan mapAtasan "+ -// "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ -// "left join mapPegawaiPelimpah.jabatan jabatanPelimpah "+ -// "left join mapAtasan.atasanLangsung atasanLangsung "+ -// "where mapAtasan.pegawai = pegawaiPelimpah "+ -// "and mapPegawaiPelimpah.pegawai = mapAtasan.pegawai "+ -// "and pegawaiPelimpah.id = :idPegawaiPelimpah "+ -// "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah "+ -// "and mapPegawaiPelimpah.statusEnabled is true "+ -// "and mapAtasan.statusEnabled is true "+ -// "and pegawaiPelimpah.statusEnabled is true "+ -// "and jabatanPelimpah.statusEnabled is true "+ -// "and atasanLangsung.statusEnabled is true") - @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, "+ - "pegawaiPelimpah.nipPns as nipPegawai, "+ - "jabatanPelimpah.namaJabatan as jabatanPegawai, "+ - "atasanLangsung.namaLengkap as namaAtasanLangsung, "+ - "atasanLangsung.nipPns as nipAtasanLangsung) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah "+ - "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ - "left join mapPegawaiPelimpah.jabatan jabatanPelimpah "+ - "left join mapPegawaiPelimpah.atasanLangsung atasanLangsung "+ - "where pegawaiPelimpah.id = :idPegawaiPelimpah "+ - "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah "+ - "and mapPegawaiPelimpah.statusEnabled is true "+ - "and pegawaiPelimpah.statusEnabled is true "+ - "and jabatanPelimpah.statusEnabled is true "+ - "and atasanLangsung.statusEnabled is true") - public Map getDataPelimpah(@Param("idPegawaiPelimpah") Integer idPegawaiPelimpah, @Param("idJabatanPelimpah") Integer idJabatanPelimpah); - - @Query("select new Map(pegawaiDilimpah.namaLengkap as namaPegawai, "+ - "pegawaiDilimpah.nipPns as nipPegawai, "+ - "coalesce(pangkatPegawaiDilimpah.namaPangkat, '-') as pangkatPegawai, "+ - "coalesce(golonganPegawaiDilimpah.name, '-') as golonganPegawai, "+ - "jabatanPegawaiDilimpah.namaJabatan as jabatanPegawai) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiDilimpah "+ - "left join mapPegawaiDilimpah.pegawai pegawaiDilimpah "+ - "left join mapPegawaiDilimpah.jabatan jabatanPegawaiDilimpah "+ - "left join pegawaiDilimpah.pangkat pangkatPegawaiDilimpah "+ - "left join pegawaiDilimpah.Golongan golonganPegawaiDilimpah "+ - "where pegawaiDilimpah.id = :idPegawaiDilimpah "+ - "and mapPegawaiDilimpah.statusEnabled is true "+ - "and pegawaiDilimpah.statusEnabled is true "+ - "and jabatanPegawaiDilimpah.statusEnabled is true "+ -// "and pangkatPegawaiDilimpah.statusEnabled is true "+ -// "and golonganPegawaiDilimpah.statusEnabled is true "+ - "and mapPegawaiDilimpah.isPrimary is true") - public Map getDataDilimpah(@Param("idPegawaiDilimpah") Integer idPegawaiDilimpah); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + + @Query("select NEW Map (" + "b.id as id) " + "from Pegawai a " + "left join a.shiftKerja b " + "where a.id=:id") + Map getKelompokShift(@Param("id") Integer id); + + @Query("select NEW Map (" + "a.id as id," + "a.factorRate as factorRate," + + "a.operatorFactorRate as operatorFactorRate," + "a.komponenIndex as komponenIndex) " + + "from KomponenIndex a " + "where a.id=:id") + Map getKomponenIndex(@Param("id") Integer id); + + @Query("select new map (list.noRec as noRec, list.tgl as tgl) " + "from ListTanggalCuti list " + + "where list.planningPegawaiStatusId = :noRec " + "and list.statusEnabled is true " + + "order by list.tgl asc") + List> getListTanggalCuti(@Param("noRec") String noRec); + + @Query("select new map (list.noRec as noRec, list.tgl as tgl) " + "from ListTanggalCuti list " + + "where list.approvalStatus is true " + "and list.planningPegawaiStatusId = :noRec" + + " and list.statusEnabled is true " + "order by list.tgl") + List> getListTanggalCutiApproved(@Param("noRec") String noRec); + + @Query("select distinct new Map (tglCuti.tgl as tglCuti) " + + "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, " + "PlanningPegawaiStatus planningCuti " + + "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah " + "left join planningCuti.listTanggal tglCuti " + + "where mapPegawaiPelimpah.pegawaiId = planningCuti.pegawaiId " + + "and planningCuti.pegawaiId = pegawaiPelimpah.id " + "and planningCuti.noRec = :noRecPlanning " + + "and pegawaiPelimpah.id = :idPegawaiPelimpah " + "and mapPegawaiPelimpah.statusEnabled is true " + + "and planningCuti.statusEnabled is true " + "and pegawaiPelimpah.statusEnabled is true " + + "and tglCuti.statusEnabled is true " + "order by tglCuti.tgl asc") + List> getListTglCutiPelimpah(@Param("noRecPlanning") String noRecPlanning, + @Param("idPegawaiPelimpah") Integer idPegawaiPelimpah); + + @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, " + "pegawaiPelimpah.nipPns as nipPegawai, " + + "jabatanPelimpah.namaJabatan as jabatanPegawai, " + "atasanLangsung.namaLengkap as namaAtasanLangsung, " + + "atasanLangsung.nipPns as nipAtasanLangsung) " + "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah " + + "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah " + + "left join mapPegawaiPelimpah.jabatan jabatanPelimpah " + + "left join mapPegawaiPelimpah.atasanLangsung atasanLangsung " + + "where pegawaiPelimpah.id = :idPegawaiPelimpah " + + "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah " + "and mapPegawaiPelimpah.statusEnabled is true " + + "and pegawaiPelimpah.statusEnabled is true " + "and jabatanPelimpah.statusEnabled is true " + + "and atasanLangsung.statusEnabled is true") + Map getDataPelimpah(@Param("idPegawaiPelimpah") Integer idPegawaiPelimpah, + @Param("idJabatanPelimpah") Integer idJabatanPelimpah); + + @Query("select new Map(pegawaiDilimpah.namaLengkap as namaPegawai, " + "pegawaiDilimpah.nipPns as nipPegawai, " + + "coalesce(pangkatPegawaiDilimpah.namaPangkat, '-') as pangkatPegawai, " + + "coalesce(golonganPegawaiDilimpah.name, '-') as golonganPegawai, " + + "jabatanPegawaiDilimpah.namaJabatan as jabatanPegawai) " + + "from MapPegawaiJabatanToUnitKerja mapPegawaiDilimpah " + + "left join mapPegawaiDilimpah.pegawai pegawaiDilimpah " + + "left join mapPegawaiDilimpah.jabatan jabatanPegawaiDilimpah " + + "left join pegawaiDilimpah.pangkat pangkatPegawaiDilimpah " + + "left join pegawaiDilimpah.Golongan golonganPegawaiDilimpah " + + "where pegawaiDilimpah.id = :idPegawaiDilimpah " + "and mapPegawaiDilimpah.statusEnabled is true " + + "and pegawaiDilimpah.statusEnabled is true " + "and jabatanPegawaiDilimpah.statusEnabled is true " + + "and mapPegawaiDilimpah.isPrimary is true") + Map getDataDilimpah(@Param("idPegawaiDilimpah") Integer idPegawaiDilimpah); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan") -// + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') > to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan") -// + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan " + Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan") + Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, + @Param("noPlanning") String noPlanning); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan " + Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') > to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.statusEnabled as statusEnabled, " - + "a.noPlanning as noPlanning, " + Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); + + @Query("select NEW Map (a.noRec as noRec, " + "a.statusEnabled as statusEnabled, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jenisPerawatan as sakit, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "b.eselonId as eselonId, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.listTanggal listTgl " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled is true " - + "and listTgl.statusEnabled is true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jenisPerawatan as sakit, " + + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + "listTgl.noRec as norecTgl, " + + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "b.eselonId as eselonId, " + "c.id as statusPegawaiId, " + + "c.statusPegawai as statusPegawai, " + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + + "MapPegawaiJabatanToUnitKerja mp " + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + + "left join a.noSk e " + "left join a.listTanggal listTgl " + "left join a.jabatanPemberiNotaDinas fp " + + "left join mp.jabatan f " + "left join mp.subUnitKerjaPegawai subUnitKerja " + + "where mp.pegawaiId = b.id " + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled is true " + + "and listTgl.statusEnabled is true " + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + "and e.noRec is null " + "and ((to_char(listTgl.tgl, 'yyyy') = :currentYear and a.approvalStatus <> :approvalStatusId1) " + "or (to_char(listTgl.tgl, 'yyyy') <> :currentYear and a.approvalStatus = :approvalStatusId2)) " - + "and c.id in (:ketidakhadiranId) " - + "and b.id = :idPegawai " + + "and c.id in (:ketidakhadiranId) " + "and b.id = :idPegawai " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatus(@Param("idPegawai") Integer idPegawai, @Param("currentYear") String currentYear, - @Param("approvalStatusId1") Integer approvalStatusId1, @Param("approvalStatusId2") Integer approvalStatusId2, + List> getApprovalStatus(@Param("idPegawai") Integer idPegawai, + @Param("currentYear") String currentYear, @Param("approvalStatusId1") Integer approvalStatusId1, + @Param("approvalStatusId2") Integer approvalStatusId2, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.statusEnabled as statusEnabled, " - + "a.noPlanning as noPlanning, " + + @Query("select NEW Map (a.noRec as noRec, " + "a.statusEnabled as statusEnabled, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "b.eselonId as eselonId, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.listTanggal listTgl " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled is true " - + "and listTgl.statusEnabled is true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + + "listTgl.noRec as norecTgl, " + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "b.eselonId as eselonId, " + "c.id as statusPegawaiId, " + + "c.statusPegawai as statusPegawai, " + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + + "MapPegawaiJabatanToUnitKerja mp " + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + + "left join a.noSk e " + "left join a.listTanggal listTgl " + "left join a.jabatanPemberiNotaDinas fp " + + "left join mp.jabatan f " + "left join mp.subUnitKerjaPegawai subUnitKerja " + + "where mp.pegawaiId = b.id " + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled is true " + + "and listTgl.statusEnabled is true " + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + "and ((to_char(listTgl.tgl, 'yyyy') = :currentYear and a.approvalStatus <> :approvalStatusId1) " + "or (to_char(listTgl.tgl, 'yyyy') <> :currentYear and a.approvalStatus = :approvalStatusId2)) " - + "and e.noRec is null " - + "and c.id in (:ketidakhadiranId) " + + "and e.noRec is null " + "and c.id in (:ketidakhadiranId) " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatus(@Param("currentYear") String currentYear, @Param("approvalStatusId1") Integer approvalStatusId1, - @Param("approvalStatusId2") Integer approvalStatusId2, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.noPlanning as noPlanning, " + List> getApprovalStatus(@Param("currentYear") String currentYear, + @Param("approvalStatusId1") Integer approvalStatusId1, + @Param("approvalStatusId2") Integer approvalStatusId2, + @Param("ketidakhadiranId") List ketidakhadiranId); + + @Query("select NEW Map (a.noRec as noRec, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jenisPerawatan as sakit, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join a.listTanggal listTgl " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled = true " - + "and listTgl.statusEnabled = true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " - + "and a.approvalStatus = :approvalStatusId " - + "and e.noRec is null " - + "and c.id in (:ketidakhadiranId) " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jenisPerawatan as sakit, " + + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + "listTgl.noRec as norecTgl, " + + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "c.id as statusPegawaiId, " + "c.statusPegawai as statusPegawai, " + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + "MapPegawaiJabatanToUnitKerja mp " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join a.noSk e " + + "left join a.jabatanPemberiNotaDinas fp " + "left join a.listTanggal listTgl " + "left join mp.jabatan f " + + "left join mp.subUnitKerjaPegawai subUnitKerja " + "where mp.pegawaiId = b.id " + + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled = true " + "and listTgl.statusEnabled = true " + + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + + "and a.approvalStatus = :approvalStatusId " + "and e.noRec is null " + "and c.id in (:ketidakhadiranId) " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatusSdm(@Param("approvalStatusId") Integer approvalStatusId, + List> getApprovalStatusSdm(@Param("approvalStatusId") Integer approvalStatusId, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select new Map(pegawai.namaLengkap as namaLengkap, " - + "coalesce(pegawai.nipPns, pegawai.nip) as nip, " + + @Query("select new Map(pegawai.namaLengkap as namaLengkap, " + "coalesce(pegawai.nipPns, pegawai.nip) as nip, " + "pangkat.namaPangkat || ' / ' || golongan.golonganPegawai as pangkatGol, " - + "jabatan.namaJabatan as namaJabatan, " - + "transaksiCuti.statusPegawaiPlanId as idPlanning, " - + "statusPegawai.statusPegawai as statusPegawai, " - + "tglCuti.tgl as tglCuti) " + + "jabatan.namaJabatan as namaJabatan, " + "transaksiCuti.statusPegawaiPlanId as idPlanning, " + + "statusPegawai.statusPegawai as statusPegawai, " + "tglCuti.tgl as tglCuti) " + "from MapPegawaiJabatanToUnitKerja mappingJabatan, PlanningPegawaiStatus transaksiCuti " - + "left join mappingJabatan.pegawai pegawai " - + "left join mappingJabatan.jabatan jabatan " + + "left join mappingJabatan.pegawai pegawai " + "left join mappingJabatan.jabatan jabatan " + "left join transaksiCuti.listTanggal tglCuti " - + "left join transaksiCuti.statusPegawaiPlan statusPegawai " - + "left join pegawai.pangkat pangkat " - + "left join pangkat.kdGolonganPegawai golongan " - + "where transaksiCuti.pegawaiId = pegawai.id " - + "and mappingJabatan.pegawaiId = transaksiCuti.pegawaiId " - + "and mappingJabatan.statusEnabled is true " - + "and pegawai.statusEnabled is true " - + "and mappingJabatan.isPrimary is true " - + "and tglCuti.statusEnabled is true " - + "and transaksiCuti.noRec = :norec") - public List> getCetakCutiLuarNegeri(@Param("norec") String norec); - + + "left join transaksiCuti.statusPegawaiPlan statusPegawai " + "left join pegawai.pangkat pangkat " + + "left join pangkat.kdGolonganPegawai golongan " + "where transaksiCuti.pegawaiId = pegawai.id " + + "and mappingJabatan.pegawaiId = transaksiCuti.pegawaiId " + "and mappingJabatan.statusEnabled is true " + + "and pegawai.statusEnabled is true " + "and mappingJabatan.isPrimary is true " + + "and tglCuti.statusEnabled is true " + "and transaksiCuti.noRec = :norec") + List> getCetakCutiLuarNegeri(@Param("norec") String norec); + } 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 0bca5cf3..06e6a9f6 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 @@ -5,6 +5,7 @@ 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.entities.ListTanggalCuti; import com.jasamedika.medifirst2000.entities.MapKalenderToHariLibur; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; @@ -18,6 +19,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.jasamedika.medifirst2000.constants.Master.HariLibur.LIBUR_CB; +import static com.jasamedika.medifirst2000.constants.Master.StatusPegawai.CUTI_TAHUNAN; /** * @author Salman @@ -48,6 +50,9 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { @Autowired private HabsenDao habsenDao; + @Autowired + private ListTanggalCutiDao tanggalCutiDao; + @Override public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) { DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId); @@ -207,7 +212,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } else { // cuti tahunan di tanggal cuti bersama List tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao - .getCutiTahunanDiTglCutiBersama(Master.StatusPegawai.CUTI_TAHUNAN, pegawaiId, tglStr); + .getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr); if (CommonUtil.isNotNullOrEmpty(tglCutiTahunanDiTglCutiBersama)) { if (listMap.size() == 2) { if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT) @@ -548,32 +553,37 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { - Date previousYear = DateUtil.getInstanceCalendar(-1); - Date janFirstPrevYear = DateUtil.startYear(previousYear); - Date decEndPrevYear = DateUtil.endYear(previousYear); - List listCBPrevYear = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, janFirstPrevYear, - decEndPrevYear); - int countCBPrevYear = listCBPrevYear.size(); - List listCBPrevYearSuspended = listCBPrevYear.stream() + Date tahunLalu = DateUtil.getInstanceCalendar(-1); + Date awalTahunLalu = DateUtil.startYear(tahunLalu); + Date akhirTahunLalu = DateUtil.endYear(tahunLalu); + List listKalenderCutiBersama = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, + awalTahunLalu, akhirTahunLalu); + List listKalenderCutiBersamaBisaDitangguhkan = listKalenderCutiBersama.stream() .filter(MapKalenderToHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); - int countCBAllocated = 0; - List listPresensiPrevYear = mapKalenderToHariLiburDao - .getPresensiByTahun(request.getPegawaiId(), janFirstPrevYear, decEndPrevYear); - for (PresensiHariLibur presensiPrevYear : listPresensiPrevYear) { - for (MapKalenderToHariLibur cbPrevYearSuspended : listCBPrevYearSuspended) { - if (presensiPrevYear.getTanggal().equals(cbPrevYearSuspended.getTanggal().getTanggal())) { - countCBAllocated++; - break; - } - } - } - if (dto.getCutiTerpakaiB1() < countCBPrevYear) { - if (countCBPrevYear - dto.getCutiTerpakaiB1() > countCBAllocated) { - dto.setDataCutiB(dto.getDataCutiB() + countCBAllocated); - dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); - } + List listCutiTahunLaluBelumDisetujui = tanggalCutiDao + .notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu); + List listPresensiTahunLalu = mapKalenderToHariLiburDao + .getPresensiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu); + int presensiCutiBersama = countValidPresensi(listPresensiTahunLalu, listKalenderCutiBersama); + int jatahDitangguhkan = countValidPresensi(listPresensiTahunLalu, listKalenderCutiBersamaBisaDitangguhkan); + if (presensiCutiBersama - dto.getCutiTerpakaiB1() + + listCutiTahunLaluBelumDisetujui.size() > jatahDitangguhkan) { + dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); + dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); } return dto; } + private int countValidPresensi(List listPresensiDiCutiBersama, + List listKalenderCutiBersama) { + int result = 0; + for (PresensiHariLibur presensiDiCutiBersama : listPresensiDiCutiBersama) { + Optional any = listKalenderCutiBersama.stream() + .filter(k -> presensiDiCutiBersama.getTanggal().equals(k.getTanggal().getTanggal())).findAny(); + if (any.isPresent()) + result++; + } + return result; + } + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java index f3b5f6cb..83de45f3 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java @@ -24,4 +24,6 @@ public class PresensiHariLibur { private Date tanggal; + private Boolean isCutiBersamaDitangguhkan; + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java index fd307233..a99bd462 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java @@ -12,59 +12,30 @@ import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter @Entity -@Table(name="ListTanggalCuti_T") -@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) -public class ListTanggalCuti extends BaseTransaction{ - - @Caption(value="tgl") - @Column(name="tgl", nullable=true) +@Table(name = "ListTanggalCuti_T") +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class ListTanggalCuti extends BaseTransaction { + + @Caption(value = "tgl") + @Column(name = "tgl") private Date tgl; - - @Caption(value="Approval Status") - @Column(name="ApprovalStatus", nullable=true) + + @Caption(value = "Approval Status") + @Column(name = "ApprovalStatus") private Boolean approvalStatus; - - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name="ObjectPlanningPegawaiStatusFK") - @Caption(value="Object Planning Pegawai Status") + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ObjectPlanningPegawaiStatusFK") + @Caption(value = "Object Planning Pegawai Status") private PlanningPegawaiStatus planningPegawaiStatus; - - @Column(name="ObjectPlanningPegawaiStatusFK", insertable=false, updatable=false, nullable = true) + + @Column(name = "ObjectPlanningPegawaiStatusFK", insertable = false, updatable = false) private String planningPegawaiStatusId; - public Date getTgl() { - return tgl; - } - - public void setTgl(Date tgl) { - this.tgl = tgl; - } - - public Boolean getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Boolean approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public PlanningPegawaiStatus getPlanningPegawaiStatus() { - return planningPegawaiStatus; - } - - public void setPlanningPegawaiStatus(PlanningPegawaiStatus planningPegawaiStatus) { - this.planningPegawaiStatus = planningPegawaiStatus; - } - - public String getPlanningPegawaiStatusId() { - return planningPegawaiStatusId; - } - - public void setPlanningPegawaiStatusId(String planningPegawaiStatusId) { - this.planningPegawaiStatusId = planningPegawaiStatusId; - } - - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java index bfcd9f12..0daf867f 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java @@ -17,403 +17,142 @@ import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter @Entity -@Table(name="PlanningPegawaiStatus_T") +@Table(name = "PlanningPegawaiStatus_T") @JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) -public class PlanningPegawaiStatus extends BaseTransaction{ +public class PlanningPegawaiStatus extends BaseTransaction { - @Caption(value="No Planning") - @Column(name="NoPlanning", length=15, nullable=true) + @Caption(value = "No Planning") + @Column(name = "NoPlanning", length = 15) private String noPlanning; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Pegawai") - @JoinColumn(name="ObjectPegawaiFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Pegawai") + @JoinColumn(name = "ObjectPegawaiFk") private Pegawai pegawai; - - @Column(name="ObjectPegawaiFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectPegawaiFk", insertable = false, updatable = false) private Integer pegawaiId; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Plan") - @JoinColumn(name="ObjectStatusPegawaiPlanFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Status Pegawai Plan") + @JoinColumn(name = "ObjectStatusPegawaiPlanFk") private StatusPegawai statusPegawaiPlan; - - @Column(name="ObjectStatusPegawaiPlanFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectStatusPegawaiPlanFk", insertable = false, updatable = false) private Integer statusPegawaiPlanId; - + @JsonBackReference @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "planningPegawaiStatus", orphanRemoval = true) private Set listTanggal = new HashSet<>(); - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Departemen") - @JoinColumn(name="ObjectDepartemenFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Departemen") + @JoinColumn(name = "ObjectDepartemenFk") private Departemen departemen; - - @Column(name="ObjectDepartemenFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectDepartemenFk", insertable = false, updatable = false) private Integer departemenId; - - @Caption(value="Deskripsi Status Pegawai Plan") - @Column(name="DeskripsiStatusPegawaiPlan", length=1000, nullable=true) + + @Caption(value = "Deskripsi Status Pegawai Plan") + @Column(name = "DeskripsiStatusPegawaiPlan", length = 1000) private String deskripsiStatusPegawaiPlan; - - @Caption(value="Keterangan Lainya Plan") - @Column(name="KeteranganLainyaPlan", length=1000, nullable=true) + + @Caption(value = "Keterangan Lainya Plan") + @Column(name = "KeteranganLainyaPlan", length = 1000) private String keteranganLainyaPlan; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object No SK") - @JoinColumn(name="ObjectNoSkFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object No SK") + @JoinColumn(name = "ObjectNoSkFk") private SuratKeputusan noSk; - - @Column(name="ObjectNoSkFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectNoSkFk", insertable = false, updatable = false) private Integer noSkId; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Exec") - @JoinColumn(name="ObjectStatusPegawaiExecFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Status Pegawai Exec") + @JoinColumn(name = "ObjectStatusPegawaiExecFk") private StatusPegawai statusPegawaiExec; - - @Column(name="ObjectStatusPegawaiExecFk", nullable=true, insertable=false, updatable=false) - private Integer statusPegawaiExecId; - - @Caption(value="Deskripsi Status Pegawai Exec") - @Column(name="DeskripsiStatusPegawaiExec", length=1000, nullable=true) + + @Column(name = "ObjectStatusPegawaiExecFk", insertable = false, updatable = false) + private Integer statusPegawaiExecId; + + @Caption(value = "Deskripsi Status Pegawai Exec") + @Column(name = "DeskripsiStatusPegawaiExec", length = 1000) private String deskripsiStatusPegawaiExec; - - @Caption(value="Keterangan Lainya Exec") - @Column(name="KeteranganLainyaExec", length=1000, nullable=true) + + @Caption(value = "Keterangan Lainya Exec") + @Column(name = "KeteranganLainyaExec", length = 1000) private String keteranganLainyaExec; - @Caption(value="Tgl Pengajuan") - @Column(name="TglPengajuan", nullable=true) + @Caption(value = "Tgl Pengajuan") + @Column(name = "TglPengajuan") private Date tglPengajuan; - - @Caption(value="Tgl Keputusan") - @Column(name="TglKeputusan", nullable=true) + + @Caption(value = "Tgl Keputusan") + @Column(name = "TglKeputusan") private Date tglKeputusan; - - @Caption(value="Approval Status") - @Column(name="ApprovalStatus", nullable=true) + + @Caption(value = "Approval Status") + @Column(name = "ApprovalStatus") private Integer approvalStatus; - - @Caption(value="jumlahHari") - @Column(name="jumlahHari", nullable=true) + + @Caption(value = "jumlahHari") + @Column(name = "jumlahHari") private Integer jumlahHari; - - @Caption(value="keterangan") - @Column(name="keterangan", nullable=true) + + @Caption(value = "keterangan") + @Column(name = "keterangan") private String keterangan; - - @Caption(value="Jenis Perawatan") - @Column(name="jenisPerawatan", nullable=true) - private Integer jenisPerawatan; //Add field untuk permohonan perubahan kehadiran karena sakit - - @Caption(value="Alamat Selama Cuti") - @Column(name="alamatCuti", nullable=true) - private String alamatCuti; //Add field untuk input alamat selama cuti di menu pengajuan Cuti - - @Caption(value="Nomor Telepon") - @Column(name="nomorTelepon", nullable=true) + + @Caption(value = "Jenis Perawatan") + @Column(name = "jenisPerawatan") + private Integer jenisPerawatan; + + @Caption(value = "Alamat Selama Cuti") + @Column(name = "alamatCuti") + private String alamatCuti; + + @Caption(value = "Nomor Telepon") + @Column(name = "nomorTelepon") private String nomorTelepon; - - @Caption(value="Nomor Surat Tugas") - @Column(name="noSuratTugas", nullable=true) + + @Caption(value = "Nomor Surat Tugas") + @Column(name = "noSuratTugas") private String noSuratTugas; - - @Caption(value="Nomor Nota Dinas") - @Column(name="noNotaDinas", nullable=true) + + @Caption(value = "Nomor Nota Dinas") + @Column(name = "noNotaDinas") private String noNotaDinas; - - @Caption(value="Tgl Nota Dinas") - @Column(name="TglNotaDinas", nullable=true) + + @Caption(value = "Tgl Nota Dinas") + @Column(name = "TglNotaDinas") private Date tglNotaDinas; - - @Caption(value="Alamat Tugas Dinas") - @Column(name="alamatTugas", nullable=true) - private String alamatTugas; - - @ManyToOne(optional=true,fetch=FetchType.LAZY) - @Caption(value="Object Jabatan Pemberi Nota Dinas") - @JoinColumn(name="ObjectJabatanPemberiNotaDinasFk", nullable=true) + + @Caption(value = "Alamat Tugas Dinas") + @Column(name = "alamatTugas") + private String alamatTugas; + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Jabatan Pemberi Nota Dinas") + @JoinColumn(name = "ObjectJabatanPemberiNotaDinasFk") private Jabatan jabatanPemberiNotaDinas; - - @Column(name="ObjectJabatanPemberiNotaDinasFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectJabatanPemberiNotaDinasFk", insertable = false, updatable = false) private Integer jabatanIdPemberiNotaDinas; - - @Caption(value="is Cuti Luar Negeri") - @Column(name="isCutiLuarNegeri", nullable=true) + + @Caption(value = "is Cuti Luar Negeri") + @Column(name = "isCutiLuarNegeri") private Boolean isCutiLuarNegeri; - - @Caption(value="is Cuti Luar Kota") - @Column(name="isCutiLuarKota", nullable=true) + + @Caption(value = "is Cuti Luar Kota") + @Column(name = "isCutiLuarKota") private Boolean isCutiLuarKota; - - public String getNoPlanning() { - return noPlanning; - } - public void setNoPlanning(String noPlanning) { - this.noPlanning = noPlanning; - } - - 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 StatusPegawai getStatusPegawaiPlan() { - return statusPegawaiPlan; - } - - public void setStatusPegawaiPlan(StatusPegawai statusPegawaiPlan) { - this.statusPegawaiPlan = statusPegawaiPlan; - } - - public Integer getStatusPegawaiPlanId() { - return statusPegawaiPlanId; - } - - public void setStatusPegawaiPlanId(Integer statusPegawaiPlanId) { - this.statusPegawaiPlanId = statusPegawaiPlanId; - } - - public Departemen getDepartemen() { - return departemen; - } - - public void setDepartemen(Departemen departemen) { - this.departemen = departemen; - } - - public Integer getDepartemenId() { - return departemenId; - } - - public void setDepartemenId(Integer departemenId) { - this.departemenId = departemenId; - } - - public String getDeskripsiStatusPegawaiPlan() { - return deskripsiStatusPegawaiPlan; - } - - public void setDeskripsiStatusPegawaiPlan(String deskripsiStatusPegawaiPlan) { - this.deskripsiStatusPegawaiPlan = deskripsiStatusPegawaiPlan; - } - - public String getKeteranganLainyaPlan() { - return keteranganLainyaPlan; - } - - public void setKeteranganLainyaPlan(String keteranganLainyaPlan) { - this.keteranganLainyaPlan = keteranganLainyaPlan; - } - - public SuratKeputusan getNoSk() { - return noSk; - } - - public void setNoSk(SuratKeputusan noSk) { - this.noSk = noSk; - } - - public Integer getNoSkId() { - return noSkId; - } - - public void setNoSkId(Integer noSkId) { - this.noSkId = noSkId; - } - - public StatusPegawai getStatusPegawaiExec() { - return statusPegawaiExec; - } - - public void setStatusPegawaiExec(StatusPegawai statusPegawaiExec) { - this.statusPegawaiExec = statusPegawaiExec; - } - - public Integer getStatusPegawaiExecId() { - return statusPegawaiExecId; - } - - public void setStatusPegawaiExecId(Integer statusPegawaiExecId) { - this.statusPegawaiExecId = statusPegawaiExecId; - } - public String getDeskripsiStatusPegawaiExec() { - return deskripsiStatusPegawaiExec; - } - - public void setDeskripsiStatusPegawaiExec(String deskripsiStatusPegawaiExec) { - this.deskripsiStatusPegawaiExec = deskripsiStatusPegawaiExec; - } - - public String getKeteranganLainyaExec() { - return keteranganLainyaExec; - } - - public void setKeteranganLainyaExec(String keteranganLainyaExec) { - this.keteranganLainyaExec = keteranganLainyaExec; - } - - public Date getTglPengajuan() { - return tglPengajuan; - } - - public void setTglPengajuan(Date tglPengajuan) { - this.tglPengajuan = tglPengajuan; - } - - public Date getTglKeputusan() { - return tglKeputusan; - } - - public void setTglKeputusan(Date tglKeputusan) { - this.tglKeputusan = tglKeputusan; - } - - public Integer getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Integer approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public Integer getJumlahHari() { - return jumlahHari; - } - - public void setJumlahHari(Integer jumlahHari) { - this.jumlahHari = jumlahHari; - } - - public Set getListTanggal() { - return listTanggal; - } - - public void setListTanggal(Set listTanggal) { - this.listTanggal = listTanggal; - } - - public String getKeterangan() { - return keterangan; - } - - public void setKeterangan(String keterangan) { - this.keterangan = keterangan; - } - - public Integer getJenisPerawatan() { - return jenisPerawatan; - } - - public void setJenisPerawatan(Integer jenisPerawatan) { - this.jenisPerawatan = jenisPerawatan; - } - - public String getAlamatCuti() { - return alamatCuti; - } - - public void setAlamatCuti(String alamatCuti) { - this.alamatCuti = alamatCuti; - } - - public String getNomorTelepon() { - return nomorTelepon; - } - - public void setNomorTelepon(String nomorTelepon) { - this.nomorTelepon = nomorTelepon; - } - - public String getNoSuratTugas() { - return noSuratTugas; - } - - public void setNoSuratTugas(String noSuratTugas) { - this.noSuratTugas = noSuratTugas; - } - - public String getNoNotaDinas() { - return noNotaDinas; - } - - public void setNoNotaDinas(String noNotaDinas) { - this.noNotaDinas = noNotaDinas; - } - - public Date getTglNotaDinas() { - return tglNotaDinas; - } - - public void setTglNotaDinas(Date tglNotaDinas) { - this.tglNotaDinas = tglNotaDinas; - } - - public String getAlamatTugas() { - return alamatTugas; - } - - public void setAlamatTugas(String alamatTugas) { - this.alamatTugas = alamatTugas; - } - - public Jabatan getJabatanPemberiNotaDinas() { - return jabatanPemberiNotaDinas; - } - - public void setJabatanPemberiNotaDinas(Jabatan jabatanPemberiNotaDinas) { - this.jabatanPemberiNotaDinas = jabatanPemberiNotaDinas; - } - - public Integer getJabatanIdPemberiNotaDinas() { - return jabatanIdPemberiNotaDinas; - } - - public void setJabatanIdPemberiNotaDinas(Integer jabatanIdPemberiNotaDinas) { - this.jabatanIdPemberiNotaDinas = jabatanIdPemberiNotaDinas; - } - - public Boolean getIsCutiLuarNegeri() { - return isCutiLuarNegeri; - } - - public void setIsCutiLuarNegeri(Boolean isCutiLuarNegeri) { - this.isCutiLuarNegeri = isCutiLuarNegeri; - } - - public void addListTanggal(ListTanggalCuti listTgl) { - listTanggal.add(listTgl); - listTgl.setPlanningPegawaiStatus(this); - } - - public void removeListTanggal(ListTanggalCuti listTgl) { - listTanggal.remove(listTgl); - listTgl.setPlanningPegawaiStatus(null); - } - - public Boolean getIsCutiLuarKota() { - return isCutiLuarKota; - } - - public void setIsCutiLuarKota(Boolean isCutiLuarKota) { - this.isCutiLuarKota = isCutiLuarKota; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java index 22c2d87d..7cdebaf7 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java @@ -2,49 +2,20 @@ package com.jasamedika.medifirst2000.vo; import java.util.Date; - import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class ListTanggalCutiVO extends BaseTransactionVO { - + private Date tgl; - + private Boolean approvalStatus; - + private PlanningPegawaiStatusVO planningPegawaiStatus; - - private Integer planningPegawaiStatusId; - public Date getTgl() { - return tgl; - } - - public void setTgl(Date tgl) { - this.tgl = tgl; - } - - public Boolean getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Boolean approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public PlanningPegawaiStatusVO getPlanningPegawaiStatus() { - return planningPegawaiStatus; - } - - public void setPlanningPegawaiStatus(PlanningPegawaiStatusVO planningPegawaiStatus) { - this.planningPegawaiStatus = planningPegawaiStatus; - } - - public Integer getPlanningPegawaiStatusId() { - return planningPegawaiStatusId; - } - - public void setPlanningPegawaiStatusId(Integer planningPegawaiStatusId) { - this.planningPegawaiStatusId = planningPegawaiStatusId; - } + private String planningPegawaiStatusId; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java index 96930c1a..c64fa087 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java @@ -4,374 +4,107 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.FetchType; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; - import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; -public class PlanningPegawaiStatusVO extends BaseTransactionVO{ - - @Caption(value="No Planning") +@Getter +@Setter +public class PlanningPegawaiStatusVO extends BaseTransactionVO { + + @Caption(value = "No Planning") private String noPlanning; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Pegawai") + + @Caption(value = "Object Pegawai") private PegawaiVO pegawai; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Plan") + + @Caption(value = "Object Status Pegawai Plan") private StatusPegawaiVO statusPegawaiPlan; - - @OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "planningPegawaiStatus") - private Set listTanggal = new HashSet(); - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Departemen") + + private Set listTanggal = new HashSet<>(); + + @Caption(value = "Object Departemen") private DepartemenVO departemen; - - @Caption(value="Deskripsi Status Pegawai Plan") + + @Caption(value = "Deskripsi Status Pegawai Plan") private String deskripsiStatusPegawaiPlan; - - @Caption(value="Keterangan Lainya Plan") + + @Caption(value = "Keterangan Lainya Plan") private String keteranganLainyaPlan; - + private Integer jumlahHari; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object No SK") + + @Caption(value = "Object No SK") private SuratKeputusanVO noSk; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Exec") + + @Caption(value = "Object Status Pegawai Exec") private StatusPegawaiVO statusPegawaiExec; - - @Caption(value="Deskripsi Status Pegawai Exec") + + @Caption(value = "Deskripsi Status Pegawai Exec") private String deskripsiStatusPegawaiExec; - - @Caption(value="Keterangan Lainya Exec") + + @Caption(value = "Keterangan Lainya Exec") private String keteranganLainyaExec; - - @Caption(value="Tgl Pengajuan") + + @Caption(value = "Tgl Pengajuan") private Date tglPengajuan; - - @Caption(value="Approval Status") + + @Caption(value = "Approval Status") private Integer approvalStatus; - - @Caption(value="Jenis Perawatan") - private Integer jenisPerawatan; //Add field untuk permohonan perubahan kehadiran karena sakit - - @Caption(value="Alamat Selama Cuti") - private String alamatCuti; //Add field untuk input di menu pengajuan cuti - - @Caption(value="Nomor Telepon") + + @Caption(value = "Jenis Perawatan") + private Integer jenisPerawatan; + + @Caption(value = "Alamat Selama Cuti") + private String alamatCuti; + + @Caption(value = "Nomor Telepon") private String nomorTelepon; - - @Caption(value="Nomor Surat Tugas") + + @Caption(value = "Nomor Surat Tugas") private String noSuratTugas; - - @Caption(value="Nomor Nota Dinas") + + @Caption(value = "Nomor Nota Dinas") private String noNotaDinas; - - @Caption(value="Tgl Nota Dinas") + + @Caption(value = "Tgl Nota Dinas") private Date tglNotaDinas; - - @Caption(value="Alamat Tugas Dinas") - private String alamatTugas; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Jabatan Pemberi Nota Dinas") + + @Caption(value = "Alamat Tugas Dinas") + private String alamatTugas; + + @Caption(value = "Object Jabatan Pemberi Nota Dinas") private JabatanVO jabatanPemberiNotaDinas; - - @Caption(value="is Cuti Luar Negeri") + + @Caption(value = "is Cuti Luar Negeri") private Boolean isCutiLuarNegeri; - - @Caption(value="is Cuti Luar Kota") + + @Caption(value = "is Cuti Luar Kota") private Boolean isCutiLuarKota; - - //---------------------------------------- SURAT KEPUTUSAN ------------------------------------------ - - @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Keputusan") private JenisKeputusanVO jenisKeputusan; - - @Caption(value="Tgl SK/SPMT") + + @Caption(value = "Tgl SK/SPMT") private Date tglSkSpmt; - - @Caption(value="No SK Temp") + + @Caption(value = "No SK Temp") private String noSkTemp; - - @Caption(value="Uraian") + + @Caption(value = "Uraian") private String uraian; - - @Caption(value="SK Dari") + + @Caption(value = "SK Dari") private String skDari; - - @Caption(value="Tgl TMT/SPMT") + + @Caption(value = "Tgl TMT/SPMT") private Date tglTmtSpmt; - - @Caption(value="Tgl Berlaku Akhir") + + @Caption(value = "Tgl Berlaku Akhir") private Date tglBerlakuAkhir; - - @Caption(value="Tgl Keputusan") + + @Caption(value = "Tgl Keputusan") private Date tglKeputusan; - - public Integer getJumlahHari() { - return jumlahHari; - } - - public void setJumlahHari(Integer jumlahHari) { - this.jumlahHari = jumlahHari; - } - - public String getNoPlanning() { - return noPlanning; - } - - public void setNoPlanning(String noPlanning) { - this.noPlanning = noPlanning; - } - - public PegawaiVO getPegawai() { - return pegawai; - } - - public void setPegawai(PegawaiVO pegawai) { - this.pegawai = pegawai; - } - - public StatusPegawaiVO getStatusPegawaiPlan() { - return statusPegawaiPlan; - } - - public void setStatusPegawaiPlan(StatusPegawaiVO statusPegawaiPlan) { - this.statusPegawaiPlan = statusPegawaiPlan; - } - - public DepartemenVO getDepartemen() { - return departemen; - } - - public void setDepartemen(DepartemenVO departemen) { - this.departemen = departemen; - } - - public String getDeskripsiStatusPegawaiPlan() { - return deskripsiStatusPegawaiPlan; - } - - public void setDeskripsiStatusPegawaiPlan(String deskripsiStatusPegawaiPlan) { - this.deskripsiStatusPegawaiPlan = deskripsiStatusPegawaiPlan; - } - - public String getKeteranganLainyaPlan() { - return keteranganLainyaPlan; - } - - public void setKeteranganLainyaPlan(String keteranganLainyaPlan) { - this.keteranganLainyaPlan = keteranganLainyaPlan; - } - - public SuratKeputusanVO getNoSk() { - return noSk; - } - - public void setNoSk(SuratKeputusanVO noSk) { - this.noSk = noSk; - } - - public StatusPegawaiVO getStatusPegawaiExec() { - return statusPegawaiExec; - } - - public void setStatusPegawaiExec(StatusPegawaiVO statusPegawaiExec) { - this.statusPegawaiExec = statusPegawaiExec; - } - - public String getDeskripsiStatusPegawaiExec() { - return deskripsiStatusPegawaiExec; - } - - public void setDeskripsiStatusPegawaiExec(String deskripsiStatusPegawaiExec) { - this.deskripsiStatusPegawaiExec = deskripsiStatusPegawaiExec; - } - - public String getKeteranganLainyaExec() { - return keteranganLainyaExec; - } - - public void setKeteranganLainyaExec(String keteranganLainyaExec) { - this.keteranganLainyaExec = keteranganLainyaExec; - } - - public JenisKeputusanVO getJenisKeputusan() { - return jenisKeputusan; - } - - public void setJenisKeputusan(JenisKeputusanVO jenisKeputusan) { - this.jenisKeputusan = jenisKeputusan; - } - - public Date getTglSkSpmt() { - return tglSkSpmt; - } - - public void setTglSkSpmt(Date tglSkSpmt) { - this.tglSkSpmt = tglSkSpmt; - } - - public String getNoSkTemp() { - return noSkTemp; - } - - public void setNoSkTemp(String noSkTemp) { - this.noSkTemp = noSkTemp; - } - - public String getUraian() { - return uraian; - } - - public void setUraian(String uraian) { - this.uraian = uraian; - } - - public String getSkDari() { - return skDari; - } - - public void setSkDari(String skDari) { - this.skDari = skDari; - } - - public Date getTglTmtSpmt() { - return tglTmtSpmt; - } - - public void setTglTmtSpmt(Date tglTmtSpmt) { - this.tglTmtSpmt = tglTmtSpmt; - } - - public Date getTglBerlakuAkhir() { - return tglBerlakuAkhir; - } - - public void setTglBerlakuAkhir(Date tglBerlakuAkhir) { - this.tglBerlakuAkhir = tglBerlakuAkhir; - } - - public Date getTglKeputusan() { - return tglKeputusan; - } - - public void setTglKeputusan(Date tglKeputusan) { - this.tglKeputusan = tglKeputusan; - } - - public Date getTglPengajuan() { - return tglPengajuan; - } - - public void setTglPengajuan(Date tglPengajuan) { - this.tglPengajuan = tglPengajuan; - } - - public Integer getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Integer approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public Set getListTanggal() { - return listTanggal; - } - - public void setListTanggal(Set listTanggal) { - this.listTanggal = listTanggal; - } - - public Integer getJenisPerawatan() { - return jenisPerawatan; - } - - public void setJenisPerawatan(Integer jenisPerawatan) { - this.jenisPerawatan = jenisPerawatan; - } - - public String getAlamatCuti() { - return alamatCuti; - } - - public void setAlamatCuti(String alamatCuti) { - this.alamatCuti = alamatCuti; - } - - public String getNomorTelepon() { - return nomorTelepon; - } - - public void setNomorTelepon(String nomorTelepon) { - this.nomorTelepon = nomorTelepon; - } - - public String getNoSuratTugas() { - return noSuratTugas; - } - - public void setNoSuratTugas(String noSuratTugas) { - this.noSuratTugas = noSuratTugas; - } - - public String getNoNotaDinas() { - return noNotaDinas; - } - - public void setNoNotaDinas(String noNotaDinas) { - this.noNotaDinas = noNotaDinas; - } - - public Date getTglNotaDinas() { - return tglNotaDinas; - } - - public void setTglNotaDinas(Date tglNotaDinas) { - this.tglNotaDinas = tglNotaDinas; - } - - public String getAlamatTugas() { - return alamatTugas; - } - - public void setAlamatTugas(String alamatTugas) { - this.alamatTugas = alamatTugas; - } - - public JabatanVO getJabatanPemberiNotaDinas() { - return jabatanPemberiNotaDinas; - } - - public void setJabatanPemberiNotaDinas(JabatanVO jabatanPemberiNotaDinas) { - this.jabatanPemberiNotaDinas = jabatanPemberiNotaDinas; - } - - public Boolean getIsCutiLuarNegeri() { - return isCutiLuarNegeri; - } - - public void setIsCutiLuarNegeri(Boolean isCutiLuarNegeri) { - this.isCutiLuarNegeri = isCutiLuarNegeri; - } - - public Boolean getIsCutiLuarKota() { - return isCutiLuarKota; - } - - public void setIsCutiLuarKota(Boolean isCutiLuarKota) { - this.isCutiLuarKota = isCutiLuarKota; - } } From fd37577c0bdc88d500aaecf670757fec6bb800f1 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 14 Jan 2025 11:02:16 +0700 Subject: [PATCH 07/16] Update service jatah cuti Penerapan validasi presensi dan cuti belum disetujui saat hitung jatah cuti bersama yang ditangguhkan --- .../medifirst2000/dao/ListTanggalCutiDao.java | 75 +- .../dao/MapKalenderToHariLiburDao.java | 21 +- .../dao/PlanningPegawaiStatusDao.java | 863 ++++++------------ .../impl/JatahCutiDanIzinServiceImpl.java | 49 +- .../medifirst2000/dto/PresensiHariLibur.java | 2 + .../entities/ListTanggalCuti.java | 67 +- .../entities/PlanningPegawaiStatus.java | 465 +++------- .../medifirst2000/vo/ListTanggalCutiVO.java | 45 +- .../vo/PlanningPegawaiStatusVO.java | 407 ++------- 9 files changed, 525 insertions(+), 1469 deletions(-) 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 b534f13e..637de75f 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,6 +1,5 @@ package com.jasamedika.medifirst2000.dao; - import java.util.Date; import java.util.List; import java.util.Map; @@ -14,52 +13,52 @@ import org.springframework.stereotype.Repository; import com.jasamedika.medifirst2000.entities.ListTanggalCuti; @Repository("ListTanggalCutiDao") -public interface ListTanggalCutiDao extends PagingAndSortingRepository{ +public interface ListTanggalCutiDao extends PagingAndSortingRepository { @Modifying @Query("update ListTanggalCuti m set m.statusEnabled=false where m.planningPegawaiStatusId =:id") void deleteDatas(@Param("id") String id); - - @Query("select distinct new Map(to_char(listTglCuti.tgl, 'yyyy') as tahun, "+ - "to_char(listTglCuti.tgl, 'MM') as bulan) "+ - "from ListTanggalCuti listTglCuti "+ - "where listTglCuti.statusEnabled is true "+ - "and listTglCuti.noRec in (:listNorec)") + + @Query("select distinct new Map(to_char(listTglCuti.tgl, 'yyyy') as tahun, " + + "to_char(listTglCuti.tgl, 'MM') as bulan) " + "from ListTanggalCuti listTglCuti " + + "where listTglCuti.statusEnabled is true " + "and listTglCuti.noRec in (:listNorec)") List> getListTglCutiByNorec(@Param("listNorec") List listNorec); - - @Query("select distinct new Map(to_char(kalender.tanggal, 'yyyy') as tahun,"+ - "to_char(kalender.tanggal, 'MM') as bulan) "+ - "from Kalender kalender "+ - "where kalender.statusEnabled is true "+ - "and kalender.id between :idKalAwal and :idKalAkhir "+ - "order by to_char(kalender.tanggal, 'yyyy'), to_char(kalender.tanggal, 'MM')") - List> getListTglCutiByNorec(@Param("idKalAwal") Integer idKalAwal, @Param("idKalAkhir") Integer idKalAkhir); - - @Query("select to_char(listTglCuti.tgl, 'yyyy-MM-dd') "+ - "from ListTanggalCuti listTglCuti "+ - "where listTglCuti.statusEnabled is true "+ - "and listTglCuti.noRec in (:listNorec)") + + @Query("select distinct new Map(to_char(kalender.tanggal, 'yyyy') as tahun," + + "to_char(kalender.tanggal, 'MM') as bulan) " + "from Kalender kalender " + + "where kalender.statusEnabled is true " + "and kalender.id between :idKalAwal and :idKalAkhir " + + "order by to_char(kalender.tanggal, 'yyyy'), to_char(kalender.tanggal, 'MM')") + List> getListTglCutiByNorec(@Param("idKalAwal") Integer idKalAwal, + @Param("idKalAkhir") Integer idKalAkhir); + + @Query("select to_char(listTglCuti.tgl, 'yyyy-MM-dd') " + "from ListTanggalCuti listTglCuti " + + "where listTglCuti.statusEnabled is true " + "and listTglCuti.noRec in (:listNorec)") List getListTglCutiByNorecDetail(@Param("listNorec") List listNorec); - - @Query("select kalender.id from Kalender kalender where kalender.statusEnabled is true and to_char(kalender.tanggal, 'yyyy-MM-dd') = :tglCuti") + + @Query("select kalender.id " + "from Kalender kalender " + "where kalender.statusEnabled is true " + + "and to_char(kalender.tanggal, 'yyyy-MM-dd') = :tglCuti") Integer getIdKalenderByTglCuti(@Param("tglCuti") String tglCuti); - - @Query("select mapStatus.shiftKerjaId "+ - "from MapStatusPegawaiToShiftKerja mapStatus "+ - "where mapStatus.statusEnabled is true "+ - "and mapStatus.statusPegawaiId = :idStatusExec "+ - "and mapStatus.kelompokShiftId = :idKelShift") + + @Query("select mapStatus.shiftKerjaId " + "from MapStatusPegawaiToShiftKerja mapStatus " + + "where mapStatus.statusEnabled is true " + "and mapStatus.statusPegawaiId = :idStatusExec " + + "and mapStatus.kelompokShiftId = :idKelShift") Integer getMappingShiftKerja(@Param("idStatusExec") Integer idStatusExec, @Param("idKelShift") Integer idKelShift); - - @Query("select pegawai.shiftKerjaId from Pegawai pegawai where pegawai.statusEnabled is true and pegawai.id = :idPegawai") + + @Query("select pegawai.shiftKerjaId " + "from Pegawai pegawai " + "where pegawai.statusEnabled is true " + + "and pegawai.id = :idPegawai") Integer getKelShift(@Param("idPegawai") Integer idPegawai); - - @Query("select listTgl.tgl " - + "from ListTanggalCuti listTgl " - + "left join listTgl.planningPegawaiStatus planning " - + "where planning.noRec = :noRec " - + "and planning.statusEnabled is true " + + @Query("select listTgl.tgl " + "from ListTanggalCuti listTgl " + "left join listTgl.planningPegawaiStatus planning " + + "where planning.noRec = :noRec " + "and planning.statusEnabled is true " + "and planning.approvalStatus <> 3") List getTglCuti(@Param("noRec") String noRec); - + + @Query("select tc from ListTanggalCuti tc " + "inner join tc.planningPegawaiStatus ps " + + "where tc.statusEnabled is true " + "and ps.statusEnabled is true " + "and ps.noSkId is null " + + "and ps.approvalStatus not in (1, 3) " + "and ps.pegawaiId = :idPegawai " + + "and ps.statusPegawaiPlanId = :idJenisPermohonan " + "and tc.tgl between :tglAwal and :tglAkhir") + List notApprovedByPermohonan(@Param("idPegawai") Integer idPegawai, + @Param("idJenisPermohonan") Integer idJenisPermohonan, @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 b8031150..c5472f5e 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 @@ -39,19 +39,14 @@ public interface MapKalenderToHariLiburDao extends PagingAndSortingRepository> getMappingHariLibur(@Param("tahun") String tahun); @Query("select distinct new com.jasamedika.medifirst2000.dto.PresensiHariLibur(" - + "pg.id as idPegawai, pg.namaLengkap as namaLengkap, kld.tanggal as tanggal) " + + "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.isCutiBersamaDitangguhkan is true " + "and kld.tanggal between :tglAwal and :tglAkhir") - List getPresensiByTahun(@Param("idPegawai") Integer idPegawai, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); - - @Query("select mkl from MapKalenderToHariLibur mkl " + - "inner join mkl.tanggal kld " + - "where mkl.statusEnabled is true " + - "and kld.tanggal between :tglAwal and :tglAkhir " + - "and mkl.hariLiburId = :idHariLibur") - List getByTahun(@Param("idHariLibur") Integer idHariLibur, - @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); + + "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, + @Param("idHariLibur") Integer idHariLibur, @Param("tglAwal") Date tglAwal, + @Param("tglAkhir") Date tglAkhir); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java index 3955c7c7..258c3128 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/PlanningPegawaiStatusDao.java @@ -1,673 +1,322 @@ package com.jasamedika.medifirst2000.dao; -import java.util.Date; import java.util.List; import java.util.Map; +import org.springframework.data.jpa.repository.JpaRepository; 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.PlanningPegawaiStatus; @Repository("PlanningPegawaiStatusDao") -public interface PlanningPegawaiStatusDao extends PagingAndSortingRepository{ - - @Query("select a.noPlanning " - + "from PlanningPegawaiStatus a " - + "where a.noPlanning LIKE %:kode% " +public interface PlanningPegawaiStatusDao extends JpaRepository { + + @Query("select a.noPlanning " + "from PlanningPegawaiStatus a " + "where a.noPlanning LIKE %:kode% " + "order by a.noPlanning asc") List noPlanning(@Param("kode") String kode); - @Query("select count(a.noPlanning) " - + "from PlanningPegawaiStatus a " - + "where a.noPlanning LIKE %:kode% ") - Long countNoPlanning(@Param("kode") String kode) ; - - @Query("select NEW Map (" - + "a.id as id, " - + "a.namaLengkap as namaLengkap," - + "c.id as kategoriPegawaiId) " - + "from MapPegawaiJabatanToUnitKerja m " - + "left join m.pegawai a " - + "left join m.subUnitKerjaPegawai b " - + "left join m.unitKerjaPegawai e " - + "left join a.kategoryPegawai c " - + "left join a.statusPegawai d " - + "where m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.id=:id " - + "and c.id!=11 " + @Query("select NEW Map (" + "a.id as id, " + "a.namaLengkap as namaLengkap," + "c.id as kategoriPegawaiId) " + + "from MapPegawaiJabatanToUnitKerja m " + "left join m.pegawai a " + "left join m.subUnitKerjaPegawai b " + + "left join m.unitKerjaPegawai e " + "left join a.kategoryPegawai c " + "left join a.statusPegawai d " + + "where m.isPrimary is true " + "and m.statusEnabled is true " + "and e.id=:id " + "and c.id!=11 " + "and d.id=2") - List> getListPegawai( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.id as id," - + "a.statusPegawai as statusPegawai) " - + "from StatusPegawai a " - + "where a.id=1 or " - + "a.id=24 or " - + "a.id=25 or " - + "a.id=26 or " - + "a.id=27 or " - + "a.id=28 or " + List> getListPegawai(@Param("id") Integer id); + + @Query("select NEW Map (" + "a.id as id," + "a.statusPegawai as statusPegawai) " + "from StatusPegawai a " + + "where a.id=1 or " + "a.id=24 or " + "a.id=25 or " + "a.id=26 or " + "a.id=27 or " + "a.id=28 or " + "a.id=29") List> getListStatusPegawai(); - - @Query("select NEW Map (" - + "a.nipPns as nip," - + "a.id as idPegawai," - + "b.id as jabatanId," - + "b.namaJabatan as jabatan," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "c.id as subUnitKerjaId," - + "c.name as subUnitKerja," - + "a.tglMasuk as tglMasuk," - + "a.alamat as alamat," - + "a.noHandphone as noHandphone," - + "kategori.id as kategoriPegawaiId ) " - + "from MapPegawaiJabatanToUnitKerja m " - + "left join m.pegawai a " - + "left join m.jabatan b " - + "left join a.kategoryPegawai kategori " - + "left join m.subUnitKerjaPegawai c " - + "left join m.unitKerjaPegawai d " - + "where m.isPrimary is true " - + "and m.statusEnabled is true " + + @Query("select NEW Map (" + "a.nipPns as nip," + "a.id as idPegawai," + "b.id as jabatanId," + + "b.namaJabatan as jabatan," + "d.id as unitKerjaId," + "d.name as unitKerja," + "c.id as subUnitKerjaId," + + "c.name as subUnitKerja," + "a.tglMasuk as tglMasuk," + "a.alamat as alamat," + + "a.noHandphone as noHandphone," + "kategori.id as kategoriPegawaiId ) " + + "from MapPegawaiJabatanToUnitKerja m " + "left join m.pegawai a " + "left join m.jabatan b " + + "left join a.kategoryPegawai kategori " + "left join m.subUnitKerjaPegawai c " + + "left join m.unitKerjaPegawai d " + "where m.isPrimary is true " + "and m.statusEnabled is true " + "and a.id=:id") - Map getDataPermohonanStatus( - @Param("id") Integer id); - - @Query("select NEW Map(a.nipPns as nip,a.id as idPegawai,a.tglMasuk as tglMasuk,a.alamat as alamat,a.noHandphone as noHandphone,b.id as kategoriPegawaiId) " + Map getDataPermohonanStatus(@Param("id") Integer id); + + @Query("select NEW Map(a.nipPns as nip," + "a.id as idPegawai" + ",a.tglMasuk as tglMasuk" + ",a.alamat as alamat," + + "a.noHandphone as noHandphone," + "b.id as kategoriPegawaiId) " + "from Pegawai a left join a.kategoryPegawai b where a.id=:id") Map getDataMapPermohonanStatus(@Param("id") Integer id); - //--------------------------CUTI TAHUNAN---------------------- - @Query("select Count(a.id) " - + "from MapKalenderToHariLibur a " - + "left join a.hariLibur b " - + "left join a.tanggal c " - + "where b.id=:id and year(c.tanggal)=:thisYear") - Long getCutiBersama( - @Param("id") Integer id, - @Param("thisYear") Integer thisYear); - - //--------------------------CUTI MELAHIRKAN----------------------// - - @Query("select NEW Map (" - + "a.id as id," - + "a.kuotaTotalHari as kuotaTotalHari," - + "a.kuotaMinHariTake as kuotaMinHariTake," - + "a.qtyMaxTake as qtyMaxTake," - + "a.isAkumulasi as isAkumulasi) " - + "from PegawaiSKCuti a " - + "left join a.statusPegawai b " + @Query("select NEW Map (" + "a.id as id," + "a.kuotaTotalHari as kuotaTotalHari," + + "a.kuotaMinHariTake as kuotaMinHariTake," + "a.qtyMaxTake as qtyMaxTake," + + "a.isAkumulasi as isAkumulasi) " + "from PegawaiSKCuti a " + "left join a.statusPegawai b " + "where b.id=:statusPegawaiId") - Map getJatahCutiMelahirkan( - @Param("statusPegawaiId") Integer statusPegawaiId); - - //---------------------APPROVAL--------------------------------- - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.approvalStatus as approvalStatus," - + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "d.id as unitKerjaId," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and d.id=:id " + Map getJatahCutiMelahirkan(@Param("statusPegawaiId") Integer statusPegawaiId); + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + + "a.approvalStatus as approvalStatus," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "b.namaLengkap as namaPegawai," + "c.id as statusPegawaiId," + + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + "d.name as unitKerja," + + "d.id as unitKerjaId," + "f.namaJabatan as namaJabatan) " + + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + "left join a.pegawai b " + + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and d.id=:id " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") - List> getListPermohonanStatus( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.approvalStatus as approvalStatus," + List> getListPermohonanStatus(@Param("id") Integer id); + + String planningStatusPegawai = "select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and b.id=:id ") - List> getListPermohonanStatusByPegawai2( - @Param("id") Integer id); - - String planningStatusPegawai = "select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," - + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "a.approvalStatus as approvalStatus, " - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "g.id as subUnitKerjaId," - + "g.name as subUnitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and a.approvalStatus =1 " - + "and b.id=:id "; - - @Query( planningStatusPegawai - + "and " - + "(c.id=1 or " - + "c.id=24 or " - + "c.id=25 or " - + "c.id=26 or " - + "c.id=27 or " - + "c.id=28 or " - + "c.id=29)") - List> getListPermohonanStatusByPegawai( - @Param("id") Integer id); - - @Query(planningStatusPegawai - + "and " - + "c.statusPegawai=:statusPegawai and " + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "a.approvalStatus as approvalStatus, " + "b.namaLengkap as namaPegawai," + + "c.id as statusPegawaiId," + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + + "d.name as unitKerja," + "g.id as subUnitKerjaId," + "g.name as subUnitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and a.approvalStatus =1 " + "and b.id=:id "; + + @Query(planningStatusPegawai + "and " + "(c.id=1 or " + "c.id=24 or " + "c.id=25 or " + "c.id=26 or " + + "c.id=27 or " + "c.id=28 or " + "c.id=29)") + List> getListPermohonanStatusByPegawai(@Param("id") Integer id); + + @Query(planningStatusPegawai + "and " + "c.statusPegawai=:statusPegawai and " + "to_char(a.tglKeputusan,'yyyy')=to_char(current_timestamp,'yyyy') ") - List> getListPermohonanStatusByPegawai(@Param("id") Integer id, @Param("statusPegawai") String statusPegawai); - - @Query(planningStatusPegawai - + "and " - + "c.statusPegawai=:statusPegawai") - List> getListPermohonanStatusByPegawaiAll(@Param("id") Integer id, @Param("statusPegawai") String statusPegawai); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," + List> getListPermohonanStatusByPegawai(@Param("id") Integer id, + @Param("statusPegawai") String statusPegawai); + + @Query(planningStatusPegawai + "and " + "c.statusPegawai=:statusPegawai") + List> getListPermohonanStatusByPegawaiAll(@Param("id") Integer id, + @Param("statusPegawai") String statusPegawai); + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," - + "a.keteranganLainyaPlan as keteranganLainyaPlan," - + "a.tglPengajuan as tglPengajuan," - + "b.id as pegwaiId," - + "a.approvalStatus as approvalStatus, " - + "b.namaLengkap as namaPegawai," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "g.id as subUnitKerjaId," - + "g.name as subUnitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join m.jabatan f " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and a.statusEnabled is true " - + "and a.approvalStatus =1 " + + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.tglPengajuan as tglPengajuan," + + "b.id as pegwaiId," + "a.approvalStatus as approvalStatus, " + "b.namaLengkap as namaPegawai," + + "c.id as statusPegawaiId," + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + + "d.name as unitKerja," + "g.id as subUnitKerjaId," + "g.name as subUnitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join a.noSk e " + + "left join m.jabatan f " + "left join m.subUnitKerjaPegawai g " + "left join m.unitKerjaPegawai d " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and a.statusEnabled is true " + "and a.approvalStatus =1 " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") List> getListPermohonanStatusAll(); - - @Query("select NEW Map (" - + "a.noRec as noRec," - + "a.noPlanning as noPlanning," + + @Query("select NEW Map (" + "a.noRec as noRec," + "a.noPlanning as noPlanning," + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan," + "a.keteranganLainyaPlan as keteranganLainyaPlan," + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec," - + "a.keteranganLainyaExec as keteranganLainyaExec," - + "a.tglPengajuan as tglPengajuan," - + "a.tglKeputusan as tglKeputusan," - + "a.approvalStatus as approvalStatus," - + "b.id as pegwaiId," - + "b.namaLengkap as namaPegawai," - + "b.nipPns as nip," - + "c.id as statusPegawaiId," - + "c.statusPegawai as statusPegawai," - + "d.id as unitKerjaId," - + "d.name as unitKerja," - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join m.subUnitKerjaPegawai g " - + "left join m.unitKerjaPegawai d " - + "left join a.noSk e " - + "left join m.jabatan f " - + "where m.pegawaiId = b.id " - + "and m.isPrimary is true " - + "and m.statusEnabled is true " - + "and e.noRec is null " - + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") + + "a.keteranganLainyaExec as keteranganLainyaExec," + "a.tglPengajuan as tglPengajuan," + + "a.tglKeputusan as tglKeputusan," + "a.approvalStatus as approvalStatus," + "b.id as pegwaiId," + + "b.namaLengkap as namaPegawai," + "b.nipPns as nip," + "c.id as statusPegawaiId," + + "c.statusPegawai as statusPegawai," + "d.id as unitKerjaId," + "d.name as unitKerja," + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, MapPegawaiJabatanToUnitKerja m " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join m.subUnitKerjaPegawai g " + + "left join m.unitKerjaPegawai d " + "left join a.noSk e " + "left join m.jabatan f " + + "where m.pegawaiId = b.id " + "and m.isPrimary is true " + "and m.statusEnabled is true " + + "and e.noRec is null " + "and (c.id=1 or c.id=24 or c.id=25 or c.id=26 or c.id=27 or c.id=28 or c.id=29)") List> getApprovalStatus(); - - @Query("select NEW Map (" - + "b.id as id) " - + "from Pegawai a " - + "left join a.shiftKerja b " - + "where a.id=:id") - Map getKelompokShift( - @Param("id") Integer id); - - @Query("select NEW Map (" - + "a.id as id," - + "a.factorRate as factorRate," - + "a.operatorFactorRate as operatorFactorRate," - + "a.komponenIndex as komponenIndex) " - + "from KomponenIndex a " - + "where a.id=:id") - Map getKomponenIndex( - @Param("id") Integer id); - - - @Query("select pegawai.id "+ - "from PegawaiSisaCuti psc "+ - "left join psc.pegawai pegawai "+ - "where psc.sisaCuti=:sisaCuti") - List getIdPegawai( - @Param("sisaCuti") Integer sisaCuti); - - @Query("select count(jadwalKerja.id) "+ - "from PegawaiJadwalKerja jadwalKerja "+ - "left join jadwalKerja.pegawai pegawai "+ - "left join jadwalKerja.tanggal kalender "+ - "left join jadwalKerja.shift shift "+ - "where to_char(kalender.tanggal,'yyyy-MM-dd') between :startDate and :endDate "+ - "and shift.id not in (:listKomponenIndexId) "+ - "and pegawai.id = :pegawaiId") - Integer getDayHadir(@Param("pegawaiId") Integer pegawaiId,@Param("listKomponenIndexId") List listKomponenIndexId,@Param("startDate") String startDate,@Param("endDate") String endDate); - - @Query("select new map (list.noRec as noRec, list.tgl as tgl) from ListTanggalCuti list where list.planningPegawaiStatusId = :noRec and list.statusEnabled is true order by list.tgl asc") - List> getListTanggalCuti(@Param("noRec") String noRec); - - @Query("select new map (list.noRec as noRec, list.tgl as tgl) from ListTanggalCuti list where list.approvalStatus is true and list.planningPegawaiStatusId = :noRec and list.statusEnabled is true order by list.tgl") - List> getListTanggalCutiApproved(@Param("noRec") String noRec); - - @Query("select list.tgl as tgl " - + "from ListTanggalCuti list " - + "where list.planningPegawaiStatusId in (:listNorec) " - + "and list.statusEnabled is true " - + "and list.tgl in (:listTgl) " - + "and list.approvalStatus is true " - + "and list.planningPegawaiStatus.approvalStatus = 1") - List getListAllTanggalCutiApproved(@Param("listNorec") List listNorec, @Param("listTgl") List listTgl); - - @Query("select list.tgl as tgl " - + "from ListTanggalCuti list " - + "where list.planningPegawaiStatusId in (:listNorec) " - + "and list.statusEnabled is true " - + "and list.tgl in (:listTgl) " - + "and list.planningPegawaiStatus.approvalStatus = 0") - List getListAllTanggalCutiNotYetApprove(@Param("listNorec") List listNorec, @Param("listTgl") List listTgl); - - @Query("select distinct new Map (tglCuti.tgl as tglCuti) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, "+ - "PlanningPegawaiStatus planningCuti "+ - "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ - "left join planningCuti.listTanggal tglCuti "+ - "where mapPegawaiPelimpah.pegawaiId = planningCuti.pegawaiId "+ - "and planningCuti.pegawaiId = pegawaiPelimpah.id "+ - "and planningCuti.noRec = :noRecPlanning "+ - "and pegawaiPelimpah.id = :idPegawaiPelimpah "+ - "and mapPegawaiPelimpah.statusEnabled is true "+ - "and planningCuti.statusEnabled is true "+ - "and pegawaiPelimpah.statusEnabled is true "+ - "and tglCuti.statusEnabled is true "+ - "order by tglCuti.tgl asc") - public List> getListTglCutiPelimpah(@Param("noRecPlanning") String noRecPlanning, @Param("idPegawaiPelimpah") Integer idPegawaiPelimpah); - -// @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, "+ -// "pegawaiPelimpah.nipPns as nipPegawai, "+ -// "jabatanPelimpah.namaJabatan as jabatanPegawai, "+ -// "atasanLangsung.namaLengkap as namaAtasanLangsung, "+ -// "atasanLangsung.nipPns as nipAtasanLangsung) "+ -// "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, "+ -// "MappingPegawaiToAtasan mapAtasan "+ -// "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ -// "left join mapPegawaiPelimpah.jabatan jabatanPelimpah "+ -// "left join mapAtasan.atasanLangsung atasanLangsung "+ -// "where mapAtasan.pegawai = pegawaiPelimpah "+ -// "and mapPegawaiPelimpah.pegawai = mapAtasan.pegawai "+ -// "and pegawaiPelimpah.id = :idPegawaiPelimpah "+ -// "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah "+ -// "and mapPegawaiPelimpah.statusEnabled is true "+ -// "and mapAtasan.statusEnabled is true "+ -// "and pegawaiPelimpah.statusEnabled is true "+ -// "and jabatanPelimpah.statusEnabled is true "+ -// "and atasanLangsung.statusEnabled is true") - @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, "+ - "pegawaiPelimpah.nipPns as nipPegawai, "+ - "jabatanPelimpah.namaJabatan as jabatanPegawai, "+ - "atasanLangsung.namaLengkap as namaAtasanLangsung, "+ - "atasanLangsung.nipPns as nipAtasanLangsung) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah "+ - "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah "+ - "left join mapPegawaiPelimpah.jabatan jabatanPelimpah "+ - "left join mapPegawaiPelimpah.atasanLangsung atasanLangsung "+ - "where pegawaiPelimpah.id = :idPegawaiPelimpah "+ - "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah "+ - "and mapPegawaiPelimpah.statusEnabled is true "+ - "and pegawaiPelimpah.statusEnabled is true "+ - "and jabatanPelimpah.statusEnabled is true "+ - "and atasanLangsung.statusEnabled is true") - public Map getDataPelimpah(@Param("idPegawaiPelimpah") Integer idPegawaiPelimpah, @Param("idJabatanPelimpah") Integer idJabatanPelimpah); - - @Query("select new Map(pegawaiDilimpah.namaLengkap as namaPegawai, "+ - "pegawaiDilimpah.nipPns as nipPegawai, "+ - "coalesce(pangkatPegawaiDilimpah.namaPangkat, '-') as pangkatPegawai, "+ - "coalesce(golonganPegawaiDilimpah.name, '-') as golonganPegawai, "+ - "jabatanPegawaiDilimpah.namaJabatan as jabatanPegawai) "+ - "from MapPegawaiJabatanToUnitKerja mapPegawaiDilimpah "+ - "left join mapPegawaiDilimpah.pegawai pegawaiDilimpah "+ - "left join mapPegawaiDilimpah.jabatan jabatanPegawaiDilimpah "+ - "left join pegawaiDilimpah.pangkat pangkatPegawaiDilimpah "+ - "left join pegawaiDilimpah.Golongan golonganPegawaiDilimpah "+ - "where pegawaiDilimpah.id = :idPegawaiDilimpah "+ - "and mapPegawaiDilimpah.statusEnabled is true "+ - "and pegawaiDilimpah.statusEnabled is true "+ - "and jabatanPegawaiDilimpah.statusEnabled is true "+ -// "and pangkatPegawaiDilimpah.statusEnabled is true "+ -// "and golonganPegawaiDilimpah.statusEnabled is true "+ - "and mapPegawaiDilimpah.isPrimary is true") - public Map getDataDilimpah(@Param("idPegawaiDilimpah") Integer idPegawaiDilimpah); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + + @Query("select NEW Map (" + "b.id as id) " + "from Pegawai a " + "left join a.shiftKerja b " + "where a.id=:id") + Map getKelompokShift(@Param("id") Integer id); + + @Query("select NEW Map (" + "a.id as id," + "a.factorRate as factorRate," + + "a.operatorFactorRate as operatorFactorRate," + "a.komponenIndex as komponenIndex) " + + "from KomponenIndex a " + "where a.id=:id") + Map getKomponenIndex(@Param("id") Integer id); + + @Query("select new map (list.noRec as noRec, list.tgl as tgl) " + "from ListTanggalCuti list " + + "where list.planningPegawaiStatusId = :noRec " + "and list.statusEnabled is true " + + "order by list.tgl asc") + List> getListTanggalCuti(@Param("noRec") String noRec); + + @Query("select new map (list.noRec as noRec, list.tgl as tgl) " + "from ListTanggalCuti list " + + "where list.approvalStatus is true " + "and list.planningPegawaiStatusId = :noRec" + + " and list.statusEnabled is true " + "order by list.tgl") + List> getListTanggalCutiApproved(@Param("noRec") String noRec); + + @Query("select distinct new Map (tglCuti.tgl as tglCuti) " + + "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah, " + "PlanningPegawaiStatus planningCuti " + + "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah " + "left join planningCuti.listTanggal tglCuti " + + "where mapPegawaiPelimpah.pegawaiId = planningCuti.pegawaiId " + + "and planningCuti.pegawaiId = pegawaiPelimpah.id " + "and planningCuti.noRec = :noRecPlanning " + + "and pegawaiPelimpah.id = :idPegawaiPelimpah " + "and mapPegawaiPelimpah.statusEnabled is true " + + "and planningCuti.statusEnabled is true " + "and pegawaiPelimpah.statusEnabled is true " + + "and tglCuti.statusEnabled is true " + "order by tglCuti.tgl asc") + List> getListTglCutiPelimpah(@Param("noRecPlanning") String noRecPlanning, + @Param("idPegawaiPelimpah") Integer idPegawaiPelimpah); + + @Query("select new Map (pegawaiPelimpah.namaLengkap as namaPegawai, " + "pegawaiPelimpah.nipPns as nipPegawai, " + + "jabatanPelimpah.namaJabatan as jabatanPegawai, " + "atasanLangsung.namaLengkap as namaAtasanLangsung, " + + "atasanLangsung.nipPns as nipAtasanLangsung) " + "from MapPegawaiJabatanToUnitKerja mapPegawaiPelimpah " + + "left join mapPegawaiPelimpah.pegawai pegawaiPelimpah " + + "left join mapPegawaiPelimpah.jabatan jabatanPelimpah " + + "left join mapPegawaiPelimpah.atasanLangsung atasanLangsung " + + "where pegawaiPelimpah.id = :idPegawaiPelimpah " + + "and mapPegawaiPelimpah.jabatanId = :idJabatanPelimpah " + "and mapPegawaiPelimpah.statusEnabled is true " + + "and pegawaiPelimpah.statusEnabled is true " + "and jabatanPelimpah.statusEnabled is true " + + "and atasanLangsung.statusEnabled is true") + Map getDataPelimpah(@Param("idPegawaiPelimpah") Integer idPegawaiPelimpah, + @Param("idJabatanPelimpah") Integer idJabatanPelimpah); + + @Query("select new Map(pegawaiDilimpah.namaLengkap as namaPegawai, " + "pegawaiDilimpah.nipPns as nipPegawai, " + + "coalesce(pangkatPegawaiDilimpah.namaPangkat, '-') as pangkatPegawai, " + + "coalesce(golonganPegawaiDilimpah.name, '-') as golonganPegawai, " + + "jabatanPegawaiDilimpah.namaJabatan as jabatanPegawai) " + + "from MapPegawaiJabatanToUnitKerja mapPegawaiDilimpah " + + "left join mapPegawaiDilimpah.pegawai pegawaiDilimpah " + + "left join mapPegawaiDilimpah.jabatan jabatanPegawaiDilimpah " + + "left join pegawaiDilimpah.pangkat pangkatPegawaiDilimpah " + + "left join pegawaiDilimpah.Golongan golonganPegawaiDilimpah " + + "where pegawaiDilimpah.id = :idPegawaiDilimpah " + "and mapPegawaiDilimpah.statusEnabled is true " + + "and pegawaiDilimpah.statusEnabled is true " + "and jabatanPegawaiDilimpah.statusEnabled is true " + + "and mapPegawaiDilimpah.isPrimary is true") + Map getDataDilimpah(@Param("idPegawaiDilimpah") Integer idPegawaiDilimpah); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan") -// + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " + Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') > to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan") -// + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan " + Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan") + Integer getJumlahPengajuanDiprosesByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, + @Param("noPlanning") String noPlanning); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') = to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select count(l.tgl) from PlanningPegawaiStatus p " - + "left join p.listTanggal l " - + "where p.statusEnabled is true " - + "and l.statusEnabled is true " - + "and p.approvalStatus = 0 and l.approvalStatus is null " - + "and p.pegawaiId = :idPegawai " - + "and p.noPlanning <> :noPlanning " - + "and p.statusPegawaiPlanId = :idPlan " + Integer getJumlahPengajuanDiprosesTahunIniByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); + + @Query("select count(l.tgl) from PlanningPegawaiStatus p " + "left join p.listTanggal l " + + "where p.statusEnabled is true " + "and l.statusEnabled is true " + + "and p.approvalStatus = 0 and l.approvalStatus is null " + "and p.pegawaiId = :idPegawai " + + "and p.noPlanning <> :noPlanning " + "and p.statusPegawaiPlanId = :idPlan " + "and to_char(l.tgl,'yyyy') > to_char(current_date,'yyyy')") - public Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.statusEnabled as statusEnabled, " - + "a.noPlanning as noPlanning, " + Integer getJumlahPengajuanDiprosesTahunDepanByPegawai(@Param("idPegawai") Integer idPegawai, + @Param("idPlan") Integer idPlan, @Param("noPlanning") String noPlanning); + + @Query("select NEW Map (a.noRec as noRec, " + "a.statusEnabled as statusEnabled, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jenisPerawatan as sakit, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "b.eselonId as eselonId, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.listTanggal listTgl " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled is true " - + "and listTgl.statusEnabled is true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jenisPerawatan as sakit, " + + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + "listTgl.noRec as norecTgl, " + + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "b.eselonId as eselonId, " + "c.id as statusPegawaiId, " + + "c.statusPegawai as statusPegawai, " + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + + "MapPegawaiJabatanToUnitKerja mp " + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + + "left join a.noSk e " + "left join a.listTanggal listTgl " + "left join a.jabatanPemberiNotaDinas fp " + + "left join mp.jabatan f " + "left join mp.subUnitKerjaPegawai subUnitKerja " + + "where mp.pegawaiId = b.id " + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled is true " + + "and listTgl.statusEnabled is true " + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + "and e.noRec is null " + "and ((to_char(listTgl.tgl, 'yyyy') = :currentYear and a.approvalStatus <> :approvalStatusId1) " + "or (to_char(listTgl.tgl, 'yyyy') <> :currentYear and a.approvalStatus = :approvalStatusId2)) " - + "and c.id in (:ketidakhadiranId) " - + "and b.id = :idPegawai " + + "and c.id in (:ketidakhadiranId) " + "and b.id = :idPegawai " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatus(@Param("idPegawai") Integer idPegawai, @Param("currentYear") String currentYear, - @Param("approvalStatusId1") Integer approvalStatusId1, @Param("approvalStatusId2") Integer approvalStatusId2, + List> getApprovalStatus(@Param("idPegawai") Integer idPegawai, + @Param("currentYear") String currentYear, @Param("approvalStatusId1") Integer approvalStatusId1, + @Param("approvalStatusId2") Integer approvalStatusId2, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.statusEnabled as statusEnabled, " - + "a.noPlanning as noPlanning, " + + @Query("select NEW Map (a.noRec as noRec, " + "a.statusEnabled as statusEnabled, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "b.eselonId as eselonId, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.listTanggal listTgl " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled is true " - + "and listTgl.statusEnabled is true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + + "listTgl.noRec as norecTgl, " + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "b.eselonId as eselonId, " + "c.id as statusPegawaiId, " + + "c.statusPegawai as statusPegawai, " + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + + "MapPegawaiJabatanToUnitKerja mp " + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + + "left join a.noSk e " + "left join a.listTanggal listTgl " + "left join a.jabatanPemberiNotaDinas fp " + + "left join mp.jabatan f " + "left join mp.subUnitKerjaPegawai subUnitKerja " + + "where mp.pegawaiId = b.id " + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled is true " + + "and listTgl.statusEnabled is true " + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + "and ((to_char(listTgl.tgl, 'yyyy') = :currentYear and a.approvalStatus <> :approvalStatusId1) " + "or (to_char(listTgl.tgl, 'yyyy') <> :currentYear and a.approvalStatus = :approvalStatusId2)) " - + "and e.noRec is null " - + "and c.id in (:ketidakhadiranId) " + + "and e.noRec is null " + "and c.id in (:ketidakhadiranId) " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatus(@Param("currentYear") String currentYear, @Param("approvalStatusId1") Integer approvalStatusId1, - @Param("approvalStatusId2") Integer approvalStatusId2, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select NEW Map (a.noRec as noRec, " - + "a.noPlanning as noPlanning, " + List> getApprovalStatus(@Param("currentYear") String currentYear, + @Param("approvalStatusId1") Integer approvalStatusId1, + @Param("approvalStatusId2") Integer approvalStatusId2, + @Param("ketidakhadiranId") List ketidakhadiranId); + + @Query("select NEW Map (a.noRec as noRec, " + "a.noPlanning as noPlanning, " + "a.deskripsiStatusPegawaiPlan as deskripsiStatusPegawaiPlan, " + "a.keteranganLainyaPlan as keteranganLainyaPlan, " + "a.deskripsiStatusPegawaiExec as deskripsiStatusPegawaiExec, " - + "a.keteranganLainyaExec as keteranganLainyaExec, " - + "a.tglPengajuan as tglPengajuan, " - + "a.tglKeputusan as tglKeputusan, " - + "a.approvalStatus as approvalStatus, " - + "a.alamatCuti as alamatCuti, " - + "a.nomorTelepon as nomorTelepon, " - + "a.isCutiLuarNegeri as isCutiLuarNegeri, " - + "a.isCutiLuarKota as isCutiLuarKota, " - + "a.noSuratTugas as noSuratTugas, " - + "a.noNotaDinas as noNotaDinas, " - + "a.tglNotaDinas as tglNotaDinas, " - + "a.alamatTugas as alamatTugas, " - + "a.jenisPerawatan as sakit, " - + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " - + "listTgl.noRec as norecTgl, " - + "listTgl.tgl as tgl, " - + "listTgl.approvalStatus as approvalStatusTgl, " - + "fp.namaJabatan as jabatanPemberiNotaDinas, " - + "subUnitKerja.id as idUnitKerja, " - + "subUnitKerja.name as unitKerja, " - + "b.id as pegwaiId, " - + "b.namaLengkap as namaPegawai, " - + "b.nipPns as nip, " - + "c.id as statusPegawaiId, " - + "c.statusPegawai as statusPegawai, " - + "f.namaJabatan as namaJabatan) " - + "from PlanningPegawaiStatus a, " - + "MapPegawaiJabatanToUnitKerja mp " - + "left join a.pegawai b " - + "left join a.statusPegawaiPlan c " - + "left join a.noSk e " - + "left join a.jabatanPemberiNotaDinas fp " - + "left join a.listTanggal listTgl " - + "left join mp.jabatan f " - + "left join mp.subUnitKerjaPegawai subUnitKerja " - + "where mp.pegawaiId = b.id " - + "and a.pegawaiId = mp.pegawaiId " - + "and a.statusEnabled = true " - + "and listTgl.statusEnabled = true " - + "and mp.statusEnabled is true " - + "and mp.isPrimary is true " - + "and a.approvalStatus = :approvalStatusId " - + "and e.noRec is null " - + "and c.id in (:ketidakhadiranId) " + + "a.keteranganLainyaExec as keteranganLainyaExec, " + "a.tglPengajuan as tglPengajuan, " + + "a.tglKeputusan as tglKeputusan, " + "a.approvalStatus as approvalStatus, " + + "a.alamatCuti as alamatCuti, " + "a.nomorTelepon as nomorTelepon, " + + "a.isCutiLuarNegeri as isCutiLuarNegeri, " + "a.isCutiLuarKota as isCutiLuarKota, " + + "a.noSuratTugas as noSuratTugas, " + "a.noNotaDinas as noNotaDinas, " + "a.tglNotaDinas as tglNotaDinas, " + + "a.alamatTugas as alamatTugas, " + "a.jenisPerawatan as sakit, " + + "a.jabatanIdPemberiNotaDinas as jabatanIdPemberiNotaDinas, " + "listTgl.noRec as norecTgl, " + + "listTgl.tgl as tgl, " + "listTgl.approvalStatus as approvalStatusTgl, " + + "fp.namaJabatan as jabatanPemberiNotaDinas, " + "subUnitKerja.id as idUnitKerja, " + + "subUnitKerja.name as unitKerja, " + "b.id as pegwaiId, " + "b.namaLengkap as namaPegawai, " + + "b.nipPns as nip, " + "c.id as statusPegawaiId, " + "c.statusPegawai as statusPegawai, " + + "f.namaJabatan as namaJabatan) " + "from PlanningPegawaiStatus a, " + "MapPegawaiJabatanToUnitKerja mp " + + "left join a.pegawai b " + "left join a.statusPegawaiPlan c " + "left join a.noSk e " + + "left join a.jabatanPemberiNotaDinas fp " + "left join a.listTanggal listTgl " + "left join mp.jabatan f " + + "left join mp.subUnitKerjaPegawai subUnitKerja " + "where mp.pegawaiId = b.id " + + "and a.pegawaiId = mp.pegawaiId " + "and a.statusEnabled = true " + "and listTgl.statusEnabled = true " + + "and mp.statusEnabled is true " + "and mp.isPrimary is true " + + "and a.approvalStatus = :approvalStatusId " + "and e.noRec is null " + "and c.id in (:ketidakhadiranId) " + "order by a.tglPengajuan desc, listTgl.tgl asc") - public List> getApprovalStatusSdm(@Param("approvalStatusId") Integer approvalStatusId, + List> getApprovalStatusSdm(@Param("approvalStatusId") Integer approvalStatusId, @Param("ketidakhadiranId") List ketidakhadiranId); - - @Query("select new Map(pegawai.namaLengkap as namaLengkap, " - + "coalesce(pegawai.nipPns, pegawai.nip) as nip, " + + @Query("select new Map(pegawai.namaLengkap as namaLengkap, " + "coalesce(pegawai.nipPns, pegawai.nip) as nip, " + "pangkat.namaPangkat || ' / ' || golongan.golonganPegawai as pangkatGol, " - + "jabatan.namaJabatan as namaJabatan, " - + "transaksiCuti.statusPegawaiPlanId as idPlanning, " - + "statusPegawai.statusPegawai as statusPegawai, " - + "tglCuti.tgl as tglCuti) " + + "jabatan.namaJabatan as namaJabatan, " + "transaksiCuti.statusPegawaiPlanId as idPlanning, " + + "statusPegawai.statusPegawai as statusPegawai, " + "tglCuti.tgl as tglCuti) " + "from MapPegawaiJabatanToUnitKerja mappingJabatan, PlanningPegawaiStatus transaksiCuti " - + "left join mappingJabatan.pegawai pegawai " - + "left join mappingJabatan.jabatan jabatan " + + "left join mappingJabatan.pegawai pegawai " + "left join mappingJabatan.jabatan jabatan " + "left join transaksiCuti.listTanggal tglCuti " - + "left join transaksiCuti.statusPegawaiPlan statusPegawai " - + "left join pegawai.pangkat pangkat " - + "left join pangkat.kdGolonganPegawai golongan " - + "where transaksiCuti.pegawaiId = pegawai.id " - + "and mappingJabatan.pegawaiId = transaksiCuti.pegawaiId " - + "and mappingJabatan.statusEnabled is true " - + "and pegawai.statusEnabled is true " - + "and mappingJabatan.isPrimary is true " - + "and tglCuti.statusEnabled is true " - + "and transaksiCuti.noRec = :norec") - public List> getCetakCutiLuarNegeri(@Param("norec") String norec); - + + "left join transaksiCuti.statusPegawaiPlan statusPegawai " + "left join pegawai.pangkat pangkat " + + "left join pangkat.kdGolonganPegawai golongan " + "where transaksiCuti.pegawaiId = pegawai.id " + + "and mappingJabatan.pegawaiId = transaksiCuti.pegawaiId " + "and mappingJabatan.statusEnabled is true " + + "and pegawai.statusEnabled is true " + "and mappingJabatan.isPrimary is true " + + "and tglCuti.statusEnabled is true " + "and transaksiCuti.noRec = :norec") + List> getCetakCutiLuarNegeri(@Param("norec") String norec); + } 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 0bca5cf3..73aa7f53 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 @@ -5,7 +5,7 @@ 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.entities.MapKalenderToHariLibur; +import com.jasamedika.medifirst2000.entities.ListTanggalCuti; import com.jasamedika.medifirst2000.service.JatahCutiDanIzinService; import com.jasamedika.medifirst2000.util.CommonUtil; import com.jasamedika.medifirst2000.util.DateUtil; @@ -18,6 +18,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.jasamedika.medifirst2000.constants.Master.HariLibur.LIBUR_CB; +import static com.jasamedika.medifirst2000.constants.Master.StatusPegawai.CUTI_TAHUNAN; /** * @author Salman @@ -48,6 +49,9 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { @Autowired private HabsenDao habsenDao; + @Autowired + private ListTanggalCutiDao tanggalCutiDao; + @Override public DataCutiDto getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId) { DataCutiDto dto = calculateCutiIzin(pegawaiId, year, statusPegawaiId); @@ -207,7 +211,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } else { // cuti tahunan di tanggal cuti bersama List tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao - .getCutiTahunanDiTglCutiBersama(Master.StatusPegawai.CUTI_TAHUNAN, pegawaiId, tglStr); + .getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr); if (CommonUtil.isNotNullOrEmpty(tglCutiTahunanDiTglCutiBersama)) { if (listMap.size() == 2) { if (Arrays.asList(Master.ShiftKerja.TUJUH_BELAS_JAM_SHIFT) @@ -548,30 +552,23 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { - Date previousYear = DateUtil.getInstanceCalendar(-1); - Date janFirstPrevYear = DateUtil.startYear(previousYear); - Date decEndPrevYear = DateUtil.endYear(previousYear); - List listCBPrevYear = mapKalenderToHariLiburDao.getByTahun(LIBUR_CB, janFirstPrevYear, - decEndPrevYear); - int countCBPrevYear = listCBPrevYear.size(); - List listCBPrevYearSuspended = listCBPrevYear.stream() - .filter(MapKalenderToHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); - int countCBAllocated = 0; - List listPresensiPrevYear = mapKalenderToHariLiburDao - .getPresensiByTahun(request.getPegawaiId(), janFirstPrevYear, decEndPrevYear); - for (PresensiHariLibur presensiPrevYear : listPresensiPrevYear) { - for (MapKalenderToHariLibur cbPrevYearSuspended : listCBPrevYearSuspended) { - if (presensiPrevYear.getTanggal().equals(cbPrevYearSuspended.getTanggal().getTanggal())) { - countCBAllocated++; - break; - } - } - } - if (dto.getCutiTerpakaiB1() < countCBPrevYear) { - if (countCBPrevYear - dto.getCutiTerpakaiB1() > countCBAllocated) { - dto.setDataCutiB(dto.getDataCutiB() + countCBAllocated); - dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); - } + Date tahunLalu = DateUtil.getInstanceCalendar(-1); + Date awalTahunLalu = DateUtil.startYear(tahunLalu); + Date akhirTahunLalu = DateUtil.endYear(tahunLalu); + List listPresensiTahunLalu = mapKalenderToHariLiburDao + .getPresensiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu); + List listPresensiCutiBersamaBisaDitangguhkan = listPresensiTahunLalu.stream() + .filter(PresensiHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); + if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty()) + return dto; + 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) { + dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); + dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); } return dto; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java index f3b5f6cb..83de45f3 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/PresensiHariLibur.java @@ -24,4 +24,6 @@ public class PresensiHariLibur { private Date tanggal; + private Boolean isCutiBersamaDitangguhkan; + } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java index fd307233..a99bd462 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ListTanggalCuti.java @@ -12,59 +12,30 @@ import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter @Entity -@Table(name="ListTanggalCuti_T") -@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) -public class ListTanggalCuti extends BaseTransaction{ - - @Caption(value="tgl") - @Column(name="tgl", nullable=true) +@Table(name = "ListTanggalCuti_T") +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class ListTanggalCuti extends BaseTransaction { + + @Caption(value = "tgl") + @Column(name = "tgl") private Date tgl; - - @Caption(value="Approval Status") - @Column(name="ApprovalStatus", nullable=true) + + @Caption(value = "Approval Status") + @Column(name = "ApprovalStatus") private Boolean approvalStatus; - - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name="ObjectPlanningPegawaiStatusFK") - @Caption(value="Object Planning Pegawai Status") + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ObjectPlanningPegawaiStatusFK") + @Caption(value = "Object Planning Pegawai Status") private PlanningPegawaiStatus planningPegawaiStatus; - - @Column(name="ObjectPlanningPegawaiStatusFK", insertable=false, updatable=false, nullable = true) + + @Column(name = "ObjectPlanningPegawaiStatusFK", insertable = false, updatable = false) private String planningPegawaiStatusId; - public Date getTgl() { - return tgl; - } - - public void setTgl(Date tgl) { - this.tgl = tgl; - } - - public Boolean getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Boolean approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public PlanningPegawaiStatus getPlanningPegawaiStatus() { - return planningPegawaiStatus; - } - - public void setPlanningPegawaiStatus(PlanningPegawaiStatus planningPegawaiStatus) { - this.planningPegawaiStatus = planningPegawaiStatus; - } - - public String getPlanningPegawaiStatusId() { - return planningPegawaiStatusId; - } - - public void setPlanningPegawaiStatusId(String planningPegawaiStatusId) { - this.planningPegawaiStatusId = planningPegawaiStatusId; - } - - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java index bfcd9f12..0daf867f 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/PlanningPegawaiStatus.java @@ -17,403 +17,142 @@ import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.jasamedika.medifirst2000.base.BaseTransaction; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter @Entity -@Table(name="PlanningPegawaiStatus_T") +@Table(name = "PlanningPegawaiStatus_T") @JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) -public class PlanningPegawaiStatus extends BaseTransaction{ +public class PlanningPegawaiStatus extends BaseTransaction { - @Caption(value="No Planning") - @Column(name="NoPlanning", length=15, nullable=true) + @Caption(value = "No Planning") + @Column(name = "NoPlanning", length = 15) private String noPlanning; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Pegawai") - @JoinColumn(name="ObjectPegawaiFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Pegawai") + @JoinColumn(name = "ObjectPegawaiFk") private Pegawai pegawai; - - @Column(name="ObjectPegawaiFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectPegawaiFk", insertable = false, updatable = false) private Integer pegawaiId; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Plan") - @JoinColumn(name="ObjectStatusPegawaiPlanFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Status Pegawai Plan") + @JoinColumn(name = "ObjectStatusPegawaiPlanFk") private StatusPegawai statusPegawaiPlan; - - @Column(name="ObjectStatusPegawaiPlanFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectStatusPegawaiPlanFk", insertable = false, updatable = false) private Integer statusPegawaiPlanId; - + @JsonBackReference @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "planningPegawaiStatus", orphanRemoval = true) private Set listTanggal = new HashSet<>(); - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Departemen") - @JoinColumn(name="ObjectDepartemenFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Departemen") + @JoinColumn(name = "ObjectDepartemenFk") private Departemen departemen; - - @Column(name="ObjectDepartemenFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectDepartemenFk", insertable = false, updatable = false) private Integer departemenId; - - @Caption(value="Deskripsi Status Pegawai Plan") - @Column(name="DeskripsiStatusPegawaiPlan", length=1000, nullable=true) + + @Caption(value = "Deskripsi Status Pegawai Plan") + @Column(name = "DeskripsiStatusPegawaiPlan", length = 1000) private String deskripsiStatusPegawaiPlan; - - @Caption(value="Keterangan Lainya Plan") - @Column(name="KeteranganLainyaPlan", length=1000, nullable=true) + + @Caption(value = "Keterangan Lainya Plan") + @Column(name = "KeteranganLainyaPlan", length = 1000) private String keteranganLainyaPlan; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object No SK") - @JoinColumn(name="ObjectNoSkFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object No SK") + @JoinColumn(name = "ObjectNoSkFk") private SuratKeputusan noSk; - - @Column(name="ObjectNoSkFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectNoSkFk", insertable = false, updatable = false) private Integer noSkId; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Exec") - @JoinColumn(name="ObjectStatusPegawaiExecFk") + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Status Pegawai Exec") + @JoinColumn(name = "ObjectStatusPegawaiExecFk") private StatusPegawai statusPegawaiExec; - - @Column(name="ObjectStatusPegawaiExecFk", nullable=true, insertable=false, updatable=false) - private Integer statusPegawaiExecId; - - @Caption(value="Deskripsi Status Pegawai Exec") - @Column(name="DeskripsiStatusPegawaiExec", length=1000, nullable=true) + + @Column(name = "ObjectStatusPegawaiExecFk", insertable = false, updatable = false) + private Integer statusPegawaiExecId; + + @Caption(value = "Deskripsi Status Pegawai Exec") + @Column(name = "DeskripsiStatusPegawaiExec", length = 1000) private String deskripsiStatusPegawaiExec; - - @Caption(value="Keterangan Lainya Exec") - @Column(name="KeteranganLainyaExec", length=1000, nullable=true) + + @Caption(value = "Keterangan Lainya Exec") + @Column(name = "KeteranganLainyaExec", length = 1000) private String keteranganLainyaExec; - @Caption(value="Tgl Pengajuan") - @Column(name="TglPengajuan", nullable=true) + @Caption(value = "Tgl Pengajuan") + @Column(name = "TglPengajuan") private Date tglPengajuan; - - @Caption(value="Tgl Keputusan") - @Column(name="TglKeputusan", nullable=true) + + @Caption(value = "Tgl Keputusan") + @Column(name = "TglKeputusan") private Date tglKeputusan; - - @Caption(value="Approval Status") - @Column(name="ApprovalStatus", nullable=true) + + @Caption(value = "Approval Status") + @Column(name = "ApprovalStatus") private Integer approvalStatus; - - @Caption(value="jumlahHari") - @Column(name="jumlahHari", nullable=true) + + @Caption(value = "jumlahHari") + @Column(name = "jumlahHari") private Integer jumlahHari; - - @Caption(value="keterangan") - @Column(name="keterangan", nullable=true) + + @Caption(value = "keterangan") + @Column(name = "keterangan") private String keterangan; - - @Caption(value="Jenis Perawatan") - @Column(name="jenisPerawatan", nullable=true) - private Integer jenisPerawatan; //Add field untuk permohonan perubahan kehadiran karena sakit - - @Caption(value="Alamat Selama Cuti") - @Column(name="alamatCuti", nullable=true) - private String alamatCuti; //Add field untuk input alamat selama cuti di menu pengajuan Cuti - - @Caption(value="Nomor Telepon") - @Column(name="nomorTelepon", nullable=true) + + @Caption(value = "Jenis Perawatan") + @Column(name = "jenisPerawatan") + private Integer jenisPerawatan; + + @Caption(value = "Alamat Selama Cuti") + @Column(name = "alamatCuti") + private String alamatCuti; + + @Caption(value = "Nomor Telepon") + @Column(name = "nomorTelepon") private String nomorTelepon; - - @Caption(value="Nomor Surat Tugas") - @Column(name="noSuratTugas", nullable=true) + + @Caption(value = "Nomor Surat Tugas") + @Column(name = "noSuratTugas") private String noSuratTugas; - - @Caption(value="Nomor Nota Dinas") - @Column(name="noNotaDinas", nullable=true) + + @Caption(value = "Nomor Nota Dinas") + @Column(name = "noNotaDinas") private String noNotaDinas; - - @Caption(value="Tgl Nota Dinas") - @Column(name="TglNotaDinas", nullable=true) + + @Caption(value = "Tgl Nota Dinas") + @Column(name = "TglNotaDinas") private Date tglNotaDinas; - - @Caption(value="Alamat Tugas Dinas") - @Column(name="alamatTugas", nullable=true) - private String alamatTugas; - - @ManyToOne(optional=true,fetch=FetchType.LAZY) - @Caption(value="Object Jabatan Pemberi Nota Dinas") - @JoinColumn(name="ObjectJabatanPemberiNotaDinasFk", nullable=true) + + @Caption(value = "Alamat Tugas Dinas") + @Column(name = "alamatTugas") + private String alamatTugas; + + @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Jabatan Pemberi Nota Dinas") + @JoinColumn(name = "ObjectJabatanPemberiNotaDinasFk") private Jabatan jabatanPemberiNotaDinas; - - @Column(name="ObjectJabatanPemberiNotaDinasFk", nullable=true, insertable=false, updatable=false) + + @Column(name = "ObjectJabatanPemberiNotaDinasFk", insertable = false, updatable = false) private Integer jabatanIdPemberiNotaDinas; - - @Caption(value="is Cuti Luar Negeri") - @Column(name="isCutiLuarNegeri", nullable=true) + + @Caption(value = "is Cuti Luar Negeri") + @Column(name = "isCutiLuarNegeri") private Boolean isCutiLuarNegeri; - - @Caption(value="is Cuti Luar Kota") - @Column(name="isCutiLuarKota", nullable=true) + + @Caption(value = "is Cuti Luar Kota") + @Column(name = "isCutiLuarKota") private Boolean isCutiLuarKota; - - public String getNoPlanning() { - return noPlanning; - } - public void setNoPlanning(String noPlanning) { - this.noPlanning = noPlanning; - } - - 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 StatusPegawai getStatusPegawaiPlan() { - return statusPegawaiPlan; - } - - public void setStatusPegawaiPlan(StatusPegawai statusPegawaiPlan) { - this.statusPegawaiPlan = statusPegawaiPlan; - } - - public Integer getStatusPegawaiPlanId() { - return statusPegawaiPlanId; - } - - public void setStatusPegawaiPlanId(Integer statusPegawaiPlanId) { - this.statusPegawaiPlanId = statusPegawaiPlanId; - } - - public Departemen getDepartemen() { - return departemen; - } - - public void setDepartemen(Departemen departemen) { - this.departemen = departemen; - } - - public Integer getDepartemenId() { - return departemenId; - } - - public void setDepartemenId(Integer departemenId) { - this.departemenId = departemenId; - } - - public String getDeskripsiStatusPegawaiPlan() { - return deskripsiStatusPegawaiPlan; - } - - public void setDeskripsiStatusPegawaiPlan(String deskripsiStatusPegawaiPlan) { - this.deskripsiStatusPegawaiPlan = deskripsiStatusPegawaiPlan; - } - - public String getKeteranganLainyaPlan() { - return keteranganLainyaPlan; - } - - public void setKeteranganLainyaPlan(String keteranganLainyaPlan) { - this.keteranganLainyaPlan = keteranganLainyaPlan; - } - - public SuratKeputusan getNoSk() { - return noSk; - } - - public void setNoSk(SuratKeputusan noSk) { - this.noSk = noSk; - } - - public Integer getNoSkId() { - return noSkId; - } - - public void setNoSkId(Integer noSkId) { - this.noSkId = noSkId; - } - - public StatusPegawai getStatusPegawaiExec() { - return statusPegawaiExec; - } - - public void setStatusPegawaiExec(StatusPegawai statusPegawaiExec) { - this.statusPegawaiExec = statusPegawaiExec; - } - - public Integer getStatusPegawaiExecId() { - return statusPegawaiExecId; - } - - public void setStatusPegawaiExecId(Integer statusPegawaiExecId) { - this.statusPegawaiExecId = statusPegawaiExecId; - } - public String getDeskripsiStatusPegawaiExec() { - return deskripsiStatusPegawaiExec; - } - - public void setDeskripsiStatusPegawaiExec(String deskripsiStatusPegawaiExec) { - this.deskripsiStatusPegawaiExec = deskripsiStatusPegawaiExec; - } - - public String getKeteranganLainyaExec() { - return keteranganLainyaExec; - } - - public void setKeteranganLainyaExec(String keteranganLainyaExec) { - this.keteranganLainyaExec = keteranganLainyaExec; - } - - public Date getTglPengajuan() { - return tglPengajuan; - } - - public void setTglPengajuan(Date tglPengajuan) { - this.tglPengajuan = tglPengajuan; - } - - public Date getTglKeputusan() { - return tglKeputusan; - } - - public void setTglKeputusan(Date tglKeputusan) { - this.tglKeputusan = tglKeputusan; - } - - public Integer getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Integer approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public Integer getJumlahHari() { - return jumlahHari; - } - - public void setJumlahHari(Integer jumlahHari) { - this.jumlahHari = jumlahHari; - } - - public Set getListTanggal() { - return listTanggal; - } - - public void setListTanggal(Set listTanggal) { - this.listTanggal = listTanggal; - } - - public String getKeterangan() { - return keterangan; - } - - public void setKeterangan(String keterangan) { - this.keterangan = keterangan; - } - - public Integer getJenisPerawatan() { - return jenisPerawatan; - } - - public void setJenisPerawatan(Integer jenisPerawatan) { - this.jenisPerawatan = jenisPerawatan; - } - - public String getAlamatCuti() { - return alamatCuti; - } - - public void setAlamatCuti(String alamatCuti) { - this.alamatCuti = alamatCuti; - } - - public String getNomorTelepon() { - return nomorTelepon; - } - - public void setNomorTelepon(String nomorTelepon) { - this.nomorTelepon = nomorTelepon; - } - - public String getNoSuratTugas() { - return noSuratTugas; - } - - public void setNoSuratTugas(String noSuratTugas) { - this.noSuratTugas = noSuratTugas; - } - - public String getNoNotaDinas() { - return noNotaDinas; - } - - public void setNoNotaDinas(String noNotaDinas) { - this.noNotaDinas = noNotaDinas; - } - - public Date getTglNotaDinas() { - return tglNotaDinas; - } - - public void setTglNotaDinas(Date tglNotaDinas) { - this.tglNotaDinas = tglNotaDinas; - } - - public String getAlamatTugas() { - return alamatTugas; - } - - public void setAlamatTugas(String alamatTugas) { - this.alamatTugas = alamatTugas; - } - - public Jabatan getJabatanPemberiNotaDinas() { - return jabatanPemberiNotaDinas; - } - - public void setJabatanPemberiNotaDinas(Jabatan jabatanPemberiNotaDinas) { - this.jabatanPemberiNotaDinas = jabatanPemberiNotaDinas; - } - - public Integer getJabatanIdPemberiNotaDinas() { - return jabatanIdPemberiNotaDinas; - } - - public void setJabatanIdPemberiNotaDinas(Integer jabatanIdPemberiNotaDinas) { - this.jabatanIdPemberiNotaDinas = jabatanIdPemberiNotaDinas; - } - - public Boolean getIsCutiLuarNegeri() { - return isCutiLuarNegeri; - } - - public void setIsCutiLuarNegeri(Boolean isCutiLuarNegeri) { - this.isCutiLuarNegeri = isCutiLuarNegeri; - } - - public void addListTanggal(ListTanggalCuti listTgl) { - listTanggal.add(listTgl); - listTgl.setPlanningPegawaiStatus(this); - } - - public void removeListTanggal(ListTanggalCuti listTgl) { - listTanggal.remove(listTgl); - listTgl.setPlanningPegawaiStatus(null); - } - - public Boolean getIsCutiLuarKota() { - return isCutiLuarKota; - } - - public void setIsCutiLuarKota(Boolean isCutiLuarKota) { - this.isCutiLuarKota = isCutiLuarKota; - } - } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java index 22c2d87d..7cdebaf7 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ListTanggalCutiVO.java @@ -2,49 +2,20 @@ package com.jasamedika.medifirst2000.vo; import java.util.Date; - import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class ListTanggalCutiVO extends BaseTransactionVO { - + private Date tgl; - + private Boolean approvalStatus; - + private PlanningPegawaiStatusVO planningPegawaiStatus; - - private Integer planningPegawaiStatusId; - public Date getTgl() { - return tgl; - } - - public void setTgl(Date tgl) { - this.tgl = tgl; - } - - public Boolean getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Boolean approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public PlanningPegawaiStatusVO getPlanningPegawaiStatus() { - return planningPegawaiStatus; - } - - public void setPlanningPegawaiStatus(PlanningPegawaiStatusVO planningPegawaiStatus) { - this.planningPegawaiStatus = planningPegawaiStatus; - } - - public Integer getPlanningPegawaiStatusId() { - return planningPegawaiStatusId; - } - - public void setPlanningPegawaiStatusId(Integer planningPegawaiStatusId) { - this.planningPegawaiStatusId = planningPegawaiStatusId; - } + private String planningPegawaiStatusId; } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java index 96930c1a..c64fa087 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/PlanningPegawaiStatusVO.java @@ -4,374 +4,107 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.FetchType; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; - import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO; import com.jasamedika.medifirst2000.helper.Caption; +import lombok.Getter; +import lombok.Setter; -public class PlanningPegawaiStatusVO extends BaseTransactionVO{ - - @Caption(value="No Planning") +@Getter +@Setter +public class PlanningPegawaiStatusVO extends BaseTransactionVO { + + @Caption(value = "No Planning") private String noPlanning; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Pegawai") + + @Caption(value = "Object Pegawai") private PegawaiVO pegawai; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Plan") + + @Caption(value = "Object Status Pegawai Plan") private StatusPegawaiVO statusPegawaiPlan; - - @OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "planningPegawaiStatus") - private Set listTanggal = new HashSet(); - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Departemen") + + private Set listTanggal = new HashSet<>(); + + @Caption(value = "Object Departemen") private DepartemenVO departemen; - - @Caption(value="Deskripsi Status Pegawai Plan") + + @Caption(value = "Deskripsi Status Pegawai Plan") private String deskripsiStatusPegawaiPlan; - - @Caption(value="Keterangan Lainya Plan") + + @Caption(value = "Keterangan Lainya Plan") private String keteranganLainyaPlan; - + private Integer jumlahHari; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object No SK") + + @Caption(value = "Object No SK") private SuratKeputusanVO noSk; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Status Pegawai Exec") + + @Caption(value = "Object Status Pegawai Exec") private StatusPegawaiVO statusPegawaiExec; - - @Caption(value="Deskripsi Status Pegawai Exec") + + @Caption(value = "Deskripsi Status Pegawai Exec") private String deskripsiStatusPegawaiExec; - - @Caption(value="Keterangan Lainya Exec") + + @Caption(value = "Keterangan Lainya Exec") private String keteranganLainyaExec; - - @Caption(value="Tgl Pengajuan") + + @Caption(value = "Tgl Pengajuan") private Date tglPengajuan; - - @Caption(value="Approval Status") + + @Caption(value = "Approval Status") private Integer approvalStatus; - - @Caption(value="Jenis Perawatan") - private Integer jenisPerawatan; //Add field untuk permohonan perubahan kehadiran karena sakit - - @Caption(value="Alamat Selama Cuti") - private String alamatCuti; //Add field untuk input di menu pengajuan cuti - - @Caption(value="Nomor Telepon") + + @Caption(value = "Jenis Perawatan") + private Integer jenisPerawatan; + + @Caption(value = "Alamat Selama Cuti") + private String alamatCuti; + + @Caption(value = "Nomor Telepon") private String nomorTelepon; - - @Caption(value="Nomor Surat Tugas") + + @Caption(value = "Nomor Surat Tugas") private String noSuratTugas; - - @Caption(value="Nomor Nota Dinas") + + @Caption(value = "Nomor Nota Dinas") private String noNotaDinas; - - @Caption(value="Tgl Nota Dinas") + + @Caption(value = "Tgl Nota Dinas") private Date tglNotaDinas; - - @Caption(value="Alamat Tugas Dinas") - private String alamatTugas; - - @ManyToOne(fetch=FetchType.LAZY) - @Caption(value="Object Jabatan Pemberi Nota Dinas") + + @Caption(value = "Alamat Tugas Dinas") + private String alamatTugas; + + @Caption(value = "Object Jabatan Pemberi Nota Dinas") private JabatanVO jabatanPemberiNotaDinas; - - @Caption(value="is Cuti Luar Negeri") + + @Caption(value = "is Cuti Luar Negeri") private Boolean isCutiLuarNegeri; - - @Caption(value="is Cuti Luar Kota") + + @Caption(value = "is Cuti Luar Kota") private Boolean isCutiLuarKota; - - //---------------------------------------- SURAT KEPUTUSAN ------------------------------------------ - - @ManyToOne(fetch = FetchType.LAZY) + @Caption(value = "Object Keputusan") private JenisKeputusanVO jenisKeputusan; - - @Caption(value="Tgl SK/SPMT") + + @Caption(value = "Tgl SK/SPMT") private Date tglSkSpmt; - - @Caption(value="No SK Temp") + + @Caption(value = "No SK Temp") private String noSkTemp; - - @Caption(value="Uraian") + + @Caption(value = "Uraian") private String uraian; - - @Caption(value="SK Dari") + + @Caption(value = "SK Dari") private String skDari; - - @Caption(value="Tgl TMT/SPMT") + + @Caption(value = "Tgl TMT/SPMT") private Date tglTmtSpmt; - - @Caption(value="Tgl Berlaku Akhir") + + @Caption(value = "Tgl Berlaku Akhir") private Date tglBerlakuAkhir; - - @Caption(value="Tgl Keputusan") + + @Caption(value = "Tgl Keputusan") private Date tglKeputusan; - - public Integer getJumlahHari() { - return jumlahHari; - } - - public void setJumlahHari(Integer jumlahHari) { - this.jumlahHari = jumlahHari; - } - - public String getNoPlanning() { - return noPlanning; - } - - public void setNoPlanning(String noPlanning) { - this.noPlanning = noPlanning; - } - - public PegawaiVO getPegawai() { - return pegawai; - } - - public void setPegawai(PegawaiVO pegawai) { - this.pegawai = pegawai; - } - - public StatusPegawaiVO getStatusPegawaiPlan() { - return statusPegawaiPlan; - } - - public void setStatusPegawaiPlan(StatusPegawaiVO statusPegawaiPlan) { - this.statusPegawaiPlan = statusPegawaiPlan; - } - - public DepartemenVO getDepartemen() { - return departemen; - } - - public void setDepartemen(DepartemenVO departemen) { - this.departemen = departemen; - } - - public String getDeskripsiStatusPegawaiPlan() { - return deskripsiStatusPegawaiPlan; - } - - public void setDeskripsiStatusPegawaiPlan(String deskripsiStatusPegawaiPlan) { - this.deskripsiStatusPegawaiPlan = deskripsiStatusPegawaiPlan; - } - - public String getKeteranganLainyaPlan() { - return keteranganLainyaPlan; - } - - public void setKeteranganLainyaPlan(String keteranganLainyaPlan) { - this.keteranganLainyaPlan = keteranganLainyaPlan; - } - - public SuratKeputusanVO getNoSk() { - return noSk; - } - - public void setNoSk(SuratKeputusanVO noSk) { - this.noSk = noSk; - } - - public StatusPegawaiVO getStatusPegawaiExec() { - return statusPegawaiExec; - } - - public void setStatusPegawaiExec(StatusPegawaiVO statusPegawaiExec) { - this.statusPegawaiExec = statusPegawaiExec; - } - - public String getDeskripsiStatusPegawaiExec() { - return deskripsiStatusPegawaiExec; - } - - public void setDeskripsiStatusPegawaiExec(String deskripsiStatusPegawaiExec) { - this.deskripsiStatusPegawaiExec = deskripsiStatusPegawaiExec; - } - - public String getKeteranganLainyaExec() { - return keteranganLainyaExec; - } - - public void setKeteranganLainyaExec(String keteranganLainyaExec) { - this.keteranganLainyaExec = keteranganLainyaExec; - } - - public JenisKeputusanVO getJenisKeputusan() { - return jenisKeputusan; - } - - public void setJenisKeputusan(JenisKeputusanVO jenisKeputusan) { - this.jenisKeputusan = jenisKeputusan; - } - - public Date getTglSkSpmt() { - return tglSkSpmt; - } - - public void setTglSkSpmt(Date tglSkSpmt) { - this.tglSkSpmt = tglSkSpmt; - } - - public String getNoSkTemp() { - return noSkTemp; - } - - public void setNoSkTemp(String noSkTemp) { - this.noSkTemp = noSkTemp; - } - - public String getUraian() { - return uraian; - } - - public void setUraian(String uraian) { - this.uraian = uraian; - } - - public String getSkDari() { - return skDari; - } - - public void setSkDari(String skDari) { - this.skDari = skDari; - } - - public Date getTglTmtSpmt() { - return tglTmtSpmt; - } - - public void setTglTmtSpmt(Date tglTmtSpmt) { - this.tglTmtSpmt = tglTmtSpmt; - } - - public Date getTglBerlakuAkhir() { - return tglBerlakuAkhir; - } - - public void setTglBerlakuAkhir(Date tglBerlakuAkhir) { - this.tglBerlakuAkhir = tglBerlakuAkhir; - } - - public Date getTglKeputusan() { - return tglKeputusan; - } - - public void setTglKeputusan(Date tglKeputusan) { - this.tglKeputusan = tglKeputusan; - } - - public Date getTglPengajuan() { - return tglPengajuan; - } - - public void setTglPengajuan(Date tglPengajuan) { - this.tglPengajuan = tglPengajuan; - } - - public Integer getApprovalStatus() { - return approvalStatus; - } - - public void setApprovalStatus(Integer approvalStatus) { - this.approvalStatus = approvalStatus; - } - - public Set getListTanggal() { - return listTanggal; - } - - public void setListTanggal(Set listTanggal) { - this.listTanggal = listTanggal; - } - - public Integer getJenisPerawatan() { - return jenisPerawatan; - } - - public void setJenisPerawatan(Integer jenisPerawatan) { - this.jenisPerawatan = jenisPerawatan; - } - - public String getAlamatCuti() { - return alamatCuti; - } - - public void setAlamatCuti(String alamatCuti) { - this.alamatCuti = alamatCuti; - } - - public String getNomorTelepon() { - return nomorTelepon; - } - - public void setNomorTelepon(String nomorTelepon) { - this.nomorTelepon = nomorTelepon; - } - - public String getNoSuratTugas() { - return noSuratTugas; - } - - public void setNoSuratTugas(String noSuratTugas) { - this.noSuratTugas = noSuratTugas; - } - - public String getNoNotaDinas() { - return noNotaDinas; - } - - public void setNoNotaDinas(String noNotaDinas) { - this.noNotaDinas = noNotaDinas; - } - - public Date getTglNotaDinas() { - return tglNotaDinas; - } - - public void setTglNotaDinas(Date tglNotaDinas) { - this.tglNotaDinas = tglNotaDinas; - } - - public String getAlamatTugas() { - return alamatTugas; - } - - public void setAlamatTugas(String alamatTugas) { - this.alamatTugas = alamatTugas; - } - - public JabatanVO getJabatanPemberiNotaDinas() { - return jabatanPemberiNotaDinas; - } - - public void setJabatanPemberiNotaDinas(JabatanVO jabatanPemberiNotaDinas) { - this.jabatanPemberiNotaDinas = jabatanPemberiNotaDinas; - } - - public Boolean getIsCutiLuarNegeri() { - return isCutiLuarNegeri; - } - - public void setIsCutiLuarNegeri(Boolean isCutiLuarNegeri) { - this.isCutiLuarNegeri = isCutiLuarNegeri; - } - - public Boolean getIsCutiLuarKota() { - return isCutiLuarKota; - } - - public void setIsCutiLuarKota(Boolean isCutiLuarKota) { - this.isCutiLuarKota = isCutiLuarKota; - } } From df5ae6f11825e2836f492890f2b86d6e9aa6e848 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 16 Jan 2025 15:29:05 +0700 Subject: [PATCH 08/16] Update service jatah cuti dan izin Perbaikan perhitungan cuti terpakai dua tahun sebelumnya --- .../service/impl/JatahCutiDanIzinServiceImpl.java | 7 ++++--- .../src/main/resources/jdbc.development.properties | 4 ++-- 2 files changed, 6 insertions(+), 5 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 73aa7f53..22593f02 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 @@ -287,7 +287,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { if (dataCutiN2 > 0) { if (allCutiTerpakai >= dataCutiN2) { if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) - + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < dataCutiN2) { jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); } else { @@ -295,14 +295,15 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } } else { if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) - + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < dataCutiN2) { jatahCutiTerpakaiN2 = difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1); } else { jatahCutiTerpakaiN2 = allCutiTerpakai; } } - if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < 12) { + if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) + + difCutiTerpakai(cutiTerpakaiN1, dataCutiB1) < dataCutiN2) { if (difCutiTerpakai(cutiTerpakaiN2, dataCutiB2) > 0) { sisaCutiN2 = 0; // hangus } else { diff --git a/jasamedika-config/src/main/resources/jdbc.development.properties b/jasamedika-config/src/main/resources/jdbc.development.properties index 5db229ff..57bb2f0b 100644 --- a/jasamedika-config/src/main/resources/jdbc.development.properties +++ b/jasamedika-config/src/main/resources/jdbc.development.properties @@ -8,11 +8,11 @@ hibernate.show_sql = true hikari.config.maximum.pool.size = 5 # DB Development -jdbc.url = jdbc:postgresql://192.168.12.3:5432/rsab_hk_24_08_20 +jdbc.url = jdbc:postgresql://192.168.12.3:5432/rsab_hk_25_01_14 jdbc.username = smart_user jdbc.password = 1miwhir3yr jdbc.serverName = 192.168.12.3 -jdbc.databaseName = rsab_hk_24_08_20 +jdbc.databaseName = rsab_hk_25_01_14 jdbc.portNumber = 5432 corePoolSizeAsyncConfigurer = 5 From aad140b2cadb8ae7f506f682cf42952251fe5811 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 17 Jan 2025 10:47:33 +0700 Subject: [PATCH 09/16] Update ListTanggalCutiDao.java Penambahan validasi cuti belum disetujui hanya untuk pengajuan tahun sebelumnya --- .../com/jasamedika/medifirst2000/dao/ListTanggalCutiDao.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 637de75f..ec07e90e 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 @@ -56,7 +56,8 @@ public interface ListTanggalCutiDao extends PagingAndSortingRepository notApprovedByPermohonan(@Param("idPegawai") Integer idPegawai, @Param("idJenisPermohonan") Integer idJenisPermohonan, @Param("tglAwal") Date tglAwal, @Param("tglAkhir") Date tglAkhir); From 307b0d098828a1cec3b19f2b810dc7c8f5cefae8 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Fri, 17 Jan 2025 16:56:42 +0700 Subject: [PATCH 10/16] Update service jatah cuti dan izin Perbaikan hitung jatah cuti tahun lalu setelah dapat penangguhan cuti bersama --- .../impl/JatahCutiDanIzinServiceImpl.java | 18 ++++++++++-------- .../impl/PermohonanStatusPegawaiImpl.java | 3 +++ 2 files changed, 13 insertions(+), 8 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 22593f02..8ce603e4 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 @@ -562,14 +562,16 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { .filter(PresensiHariLibur::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty()) return dto; - 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) { - dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); - dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); + 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) { + dto.setDataCutiB(dto.getDataCutiB() + jatahDitangguhkan); + dto.setSisaCutiB(dto.getDataCutiB() - dto.getCutiTerpakaiB()); + } } return dto; } 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 dda2938a..b7ec02c0 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 @@ -2052,6 +2052,9 @@ public class PermohonanStatusPegawaiImpl implements PermohonanStatusPegawaiServi if (vo.getKomponenIndex().getId().equals(mapDataCuti.get("komponenIndex")) && vo.getTahun().equals(mapDataCuti.get("tahun").toString())) { jatahCutiDanIzin.setValue(vo.getValue()); + } else if (todaysYear == Integer.parseInt(vo.getTahun()) + && todaysYear1 == Integer.parseInt(mapDataCuti.get("tahun").toString())) { + jatahCutiDanIzin.setValue(cutiIzin.getDataCutiB1()); } else { jatahCutiDanIzin.setValue(currentData.getValue()); } From d9b22ad720da4e9ed1f00579545a72ff72b119d5 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Mon, 20 Jan 2025 16:28:11 +0700 Subject: [PATCH 11/16] Update JatahCutiDanIzinServiceImpl.java Perbaikan validasi tahun request hitung jatah cuti tidak dikirimkan --- .../medifirst2000/service/impl/JatahCutiDanIzinServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) 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 8ce603e4..f34ae5c8 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 @@ -553,6 +553,8 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private DataCutiDto tangguhkanCutiBersama(DataCutiDto dto, JatahCutiRequest request) { + if (CommonUtil.isNullOrEmpty(request.getYear())) + request.setYear(String.valueOf(DateUtil.getYear(new Date()))); Date tahunLalu = DateUtil.getInstanceCalendar(-1); Date awalTahunLalu = DateUtil.startYear(tahunLalu); Date akhirTahunLalu = DateUtil.endYear(tahunLalu); From 02c5f250f399ce68025913d255eb878f9bfd94cd Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Tue, 21 Jan 2025 11:33:41 +0700 Subject: [PATCH 12/16] 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 13/16] 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 532e1fe0ab0fed672364654bcfabda6629e5e6f3 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 22 Jan 2025 13:18:33 +0700 Subject: [PATCH 14/16] Update JatahCutiDanIzinServiceImpl.java Penerapan TMT SK cuti 2024 menghapus jatah cuti bersama untuk cuti tahunan di tanggal cuti bersama --- .../impl/JatahCutiDanIzinServiceImpl.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 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 3aa9f92b..8dc875f8 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); @@ -554,6 +562,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } private int tangguhkanCutiBersama(Integer cutiBersamaTerpakaiTahunLalu, JatahCutiRequest request) { + Date awal2024 = new Date(1704042000000L); if (CommonUtil.isNullOrEmpty(request.getYear())) request.setYear(String.valueOf(DateUtil.getYear(new Date()))); Date tahunLalu = DateUtil.getInstanceCalendar(-1); @@ -565,13 +574,16 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { .filter(HariLiburTerpakai::getIsCutiBersamaDitangguhkan).collect(Collectors.toList()); if (listPresensiCutiBersamaBisaDitangguhkan.isEmpty()) return 0; - List listCutiDiCutiBersamaTahunLalu = tanggalCutiDao.getCutiByTahun(request.getPegawaiId(), - LIBUR_CB, awalTahunLalu, akhirTahunLalu); + int cutiDiCutiBersama = 0; + if (tahunLalu.before(awal2024)) { + List listCutiDiCutiBersamaTahunLalu = tanggalCutiDao + .getCutiByTahun(request.getPegawaiId(), LIBUR_CB, awalTahunLalu, akhirTahunLalu); + cutiDiCutiBersama = listCutiDiCutiBersamaTahunLalu.size(); + } if (DateUtil.getYear(new Date()) == Integer.parseInt(request.getYear())) { List listCutiTahunLaluBelumDisetujui = tanggalCutiDao .notApprovedByPermohonan(request.getPegawaiId(), CUTI_TAHUNAN, awalTahunLalu, akhirTahunLalu); int presensiCutiBersama = listPresensiTahunLalu.size(); - int cutiDiCutiBersama = listCutiDiCutiBersamaTahunLalu.size(); int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - cutiBersamaTerpakaiTahunLalu; int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size() - listCutiTahunLaluBelumDisetujui.size(); From 4b7101a1f12abbe9627b93ccbaedb71c1c76b8f8 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 22 Jan 2025 21:03:41 +0700 Subject: [PATCH 15/16] Update JatahCutiDanIzinServiceImpl.java Perbaikan validasi jatah cuti bersama ditangguhkan melibatkan sisa jatah cuti bersama --- .../service/impl/JatahCutiDanIzinServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 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 8dc875f8..ccc8e46c 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 @@ -587,11 +587,8 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { int sisaJatah = presensiCutiBersama + cutiDiCutiBersama - cutiBersamaTerpakaiTahunLalu; int jatahDitangguhkan = listPresensiCutiBersamaBisaDitangguhkan.size() - listCutiTahunLaluBelumDisetujui.size(); - if (jatahDitangguhkan >= sisaJatah) { - if (jatahDitangguhkan < 0) - jatahDitangguhkan = 0; + if (sisaJatah >= jatahDitangguhkan && jatahDitangguhkan > 0) return jatahDitangguhkan; - } } return 0; } From cd2a2c1952d3cacda29677f5094872f69b4e5f9a Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 30 Jan 2025 11:50:25 +0700 Subject: [PATCH 16/16] Update JatahCutiDanIzinServiceImpl.java Perubahan TMT SK Cuti 2025 berlaku pada cuti tahunan di tanggal cuti bersama sudah tidak berlaku --- .../service/impl/JatahCutiDanIzinServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 ccc8e46c..24f64ceb 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 @@ -174,7 +174,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { // Hitung Absen di tanggal cuti bersama List listTglCutiBersama = mapKalenderToHariLiburDao.getTglCutiBersama(year); int countDataHabsen = 0; - Date awal2024 = new Date(1704042000000L); + Date awal2025 = new Date(1735664400000L); for (String tglStr : listTglCutiBersama) { Date tglCheck; try { @@ -214,7 +214,7 @@ public class JatahCutiDanIzinServiceImpl implements JatahCutiDanIzinService { } else { countDataHabsen += 1; } - } else if (tglCheck.before(awal2024)) { + } else if (tglCheck.before(awal2025)) { // cuti tahunan di tanggal cuti bersama List tglCutiTahunanDiTglCutiBersama = jatahCutiDanIzinDao .getCutiTahunanDiTglCutiBersama(CUTI_TAHUNAN, pegawaiId, tglStr);