From c26b23a85acaf4f2bcbdc2b4231943a90af4aad0 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Tue, 31 Jan 2023 07:53:29 +0700 Subject: [PATCH] Update SlipGajiService Penerapan komponen gaji pada service simpan dan get slip gaji per bulan per pegawai --- .../medifirst2000/dao/SlipGajiDao.java | 10 +- .../dao/SlipGajiKomponenDao.java | 23 ++ .../service/SlipGajiService.java | 4 +- .../service/impl/SlipGajiServiceImpl.java | 139 +++---- .../medifirst2000/dto/SlipGajiDto.java | 341 +----------------- .../dto/SlipGajiKomponenDto.java | 99 +++++ .../entities/SlipGajiKomponen.java | 133 +++++++ .../controller/SlipGajiController.java | 6 +- 8 files changed, 360 insertions(+), 395 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiKomponenDto.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SlipGajiKomponen.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java index ffb37f66..124ac84c 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java @@ -2,6 +2,7 @@ package com.jasamedika.medifirst2000.dao; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -11,9 +12,14 @@ import org.springframework.data.repository.query.Param; import com.jasamedika.medifirst2000.entities.SlipGaji; public interface SlipGajiDao extends JpaRepository { - @Query("select sg from SlipGaji sg where sg.pegawai.id = :pegawaiId") - Optional findByPegawai(@Param("pegawaiId") Integer pegawaiId); + @Query("select sg from SlipGaji sg where sg.pegawai.id = :pegawaiId and sg.bulan between :start and :end") + Optional findByPegawaiAndBulan(@Param("pegawaiId") Integer pegawaiId, @Param("start") Date start, + @Param("end") Date end); @Query("select pg.id from SlipGaji sg inner join sg.pegawai pg where sg.bulan between :start and :end") List findPegawaiByBulan(@Param("start") Date start, @Param("end") Date end); + + @Query("select new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + "from SlipGaji sg " + + "inner join sg.pegawai pg " + "where sg.bulan between :start and :end " + "order by pg.namaLengkap") + List> findAllByBulan(@Param("start") Date start, @Param("end") Date end); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java new file mode 100644 index 00000000..636aadc6 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java @@ -0,0 +1,23 @@ +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.query.Param; + +import com.jasamedika.medifirst2000.entities.SlipGajiKomponen; + +/** + * @author salmanoe + * @since Jan 30, 2023 + */ +public interface SlipGajiKomponenDao extends JpaRepository { + @Query("select new Map(sgk.id as id," + "sgk.komponen.id as idKomponen," + + "sgk.komponen.namaKomponen as namaKomponen," + "sgk.nominal as nominal) " + "from SlipGajiKomponen sgk " + + "where sgk.slipGaji.pegawai.id = :pegawaiId " + "and sgk.slipGaji.bulan between :start and :end") + List> findAll(@Param("pegawaiId") Integer pegawaiId, @Param("start") Date start, + @Param("end") Date end); +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java index d8660921..db956019 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java @@ -13,5 +13,7 @@ public interface SlipGajiService { void updateDetail(SlipGajiDto dto); - SlipGajiDto get(Integer pegawaiId); + SlipGajiDto get(Integer pegawaiId, Long bulan); + + String writeExcel(Long bulan); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SlipGajiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SlipGajiServiceImpl.java index 7614989e..ec622dbd 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SlipGajiServiceImpl.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/SlipGajiServiceImpl.java @@ -1,31 +1,39 @@ package com.jasamedika.medifirst2000.service.impl; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; import com.jasamedika.medifirst2000.dao.PegawaiDao; -import com.jasamedika.medifirst2000.dao.PenerimaanGajiDao; -import com.jasamedika.medifirst2000.dao.PenguranganGajiDao; import com.jasamedika.medifirst2000.dao.SlipGajiDao; import com.jasamedika.medifirst2000.dao.SlipGajiDetailDao; +import com.jasamedika.medifirst2000.dao.SlipGajiKomponenDao; import com.jasamedika.medifirst2000.dto.SlipGajiDto; +import com.jasamedika.medifirst2000.dto.SlipGajiKomponenDto; import com.jasamedika.medifirst2000.entities.Jabatan; +import com.jasamedika.medifirst2000.entities.KomponenGaji; import com.jasamedika.medifirst2000.entities.MapPegawaiJabatanToUnitKerja; import com.jasamedika.medifirst2000.entities.NilaiKelompokJabatan; import com.jasamedika.medifirst2000.entities.Pegawai; -import com.jasamedika.medifirst2000.entities.PenerimaanGaji; -import com.jasamedika.medifirst2000.entities.PenguranganGaji; import com.jasamedika.medifirst2000.entities.SlipGaji; import com.jasamedika.medifirst2000.entities.SlipGajiDetail; +import com.jasamedika.medifirst2000.entities.SlipGajiKomponen; import com.jasamedika.medifirst2000.entities.SubUnitKerjaPegawai; import com.jasamedika.medifirst2000.entities.UnitKerjaPegawai; import com.jasamedika.medifirst2000.service.SlipGajiService; @@ -46,10 +54,7 @@ public class SlipGajiServiceImpl implements SlipGajiService { private SlipGajiDetailDao slipGajiDetailDao; @Autowired - private PenerimaanGajiDao penerimaanGajiDao; - - @Autowired - private PenguranganGajiDao penguranganGajiDao; + private SlipGajiKomponenDao slipGajiKomponenDao; @Autowired private PegawaiDao pegawaiDao; @@ -149,36 +154,20 @@ public class SlipGajiServiceImpl implements SlipGajiService { slipGajiDetailDao.save(listDetail); } { - PenerimaanGaji.PenerimaanGajiBuilder penerimaan = PenerimaanGaji.builder(); - if (CommonUtil.isNotNullOrEmpty(dto.getId())) - penerimaan.id(savedSlip.getId()); - penerimaan.gaji(dto.getGaji()); - penerimaan.remunerasiKinerja(dto.getRemunerasiKinerja()); - penerimaan.remunerasiTambahan(dto.getRemunerasiTambahan()); - penerimaan.feeForService(dto.getFeeForService()); - penerimaan.feeForOnSite(dto.getFeeForOnSite()); - penerimaan.uangMakan(dto.getUangMakan()); - penerimaan.uangLembur(dto.getUangLembur()); - penerimaan.slipGaji(savedSlip); - penerimaanGajiDao.save(penerimaan.build()); - } - { - PenguranganGaji.PenguranganGajiBuilder pengurangan = PenguranganGaji.builder(); - if (CommonUtil.isNotNullOrEmpty(dto.getId())) - pengurangan.id(savedSlip.getId()); - pengurangan.pphGaji(dto.getPphGaji()); - pengurangan.pphRemunerasi(dto.getPphRemunerasi()); - pengurangan.pphFeeForService(dto.getPphFeeForService()); - pengurangan.pphFeeForOnSite(dto.getFeeForOnSite()); - pengurangan.pphUangMakan(dto.getPphUangMakan()); - pengurangan.pphUangLembur(dto.getPphUangLembur()); - pengurangan.iuranWajibKoperasi(dto.getIuranWajibKoperasi()); - pengurangan.potonganPinjamanKoperasi(dto.getPotonganPinjamanKoperasi()); - pengurangan.potonganObat(dto.getPotonganObat()); - pengurangan.biayaRawatInap(dto.getBiayaRawatInap()); - pengurangan.biayaRawatJalan(dto.getBiayaRawatJalan()); - pengurangan.slipGaji(savedSlip); - penguranganGajiDao.save(pengurangan.build()); + List listKomponen = new ArrayList<>(); + Set dtos = dto.getKomponen(); + dtos.forEach(k -> { + SlipGajiKomponen.SlipGajiKomponenBuilder kBuilder = SlipGajiKomponen.builder(); + if (CommonUtil.isNotNullOrEmpty(k.getId())) + kBuilder.id(k.getId()); + KomponenGaji kGaji = new KomponenGaji(); + kGaji.setId(k.getIdKomponen()); + kBuilder.komponen(kGaji); + kBuilder.nominal(k.getNominal()); + kBuilder.slipGaji(savedSlip); + listKomponen.add(kBuilder.build()); + }); + slipGajiKomponenDao.save(listKomponen); } } } @@ -211,10 +200,14 @@ public class SlipGajiServiceImpl implements SlipGajiService { } @Override - public SlipGajiDto get(Integer pegawaiId) { - Optional slipGaji = slipGajiDao.findByPegawai(pegawaiId); + public SlipGajiDto get(Integer pegawaiId, Long bulan) { + Date month = new Date(bulan); + Date start = DateUtil.startMonth(month); + Date end = DateUtil.endMonth(month); + Optional slipGaji = slipGajiDao.findByPegawaiAndBulan(pegawaiId, start, end); SlipGajiDto.SlipGajiDtoBuilder dto = SlipGajiDto.builder(); if (slipGaji.isPresent()) { + dto.id(slipGaji.get().getId()); dto.idPegawai(slipGaji.get().getPegawai().getId()); dto.namaPegawai(slipGaji.get().getPegawai().getNamaLengkap()); dto.bulan(slipGaji.get().getBulan().getTime()); @@ -236,33 +229,53 @@ public class SlipGajiServiceImpl implements SlipGajiService { dto.unitKerja(String.join("/", listNamaUnitKerja)); dto.subUnitKerja(String.join("/", listNamaSubunitKerja)); dto.grade(String.join("/", listNamaGrade)); - } { - PenerimaanGaji penerimaan = penerimaanGajiDao.findBySlipGajiId(slipGaji.get().getId()); - dto.gaji(penerimaan.getGaji()); - dto.remunerasiKinerja(penerimaan.getRemunerasiKinerja()); - dto.remunerasiTambahan(penerimaan.getRemunerasiTambahan()); - dto.feeForService(penerimaan.getFeeForService()); - dto.feeForOnSite(penerimaan.getFeeForOnSite()); - dto.uangMakan(penerimaan.getUangMakan()); - dto.uangLembur(penerimaan.getUangLembur()); - } - { - PenguranganGaji pengurangan = penguranganGajiDao.findBySlipGajiId(slipGaji.get().getId()); - dto.pphGaji(pengurangan.getPphGaji()); - dto.pphRemunerasi(pengurangan.getPphRemunerasi()); - dto.pphFeeForService(pengurangan.getPphFeeForService()); - dto.pphFeeForOnSite(pengurangan.getPphFeeForOnSite()); - dto.pphUangMakan(pengurangan.getPphUangMakan()); - dto.pphUangLembur(pengurangan.getPphUangLembur()); - dto.iuranWajibKoperasi(pengurangan.getIuranWajibKoperasi()); - dto.potonganPinjamanKoperasi(pengurangan.getPotonganPinjamanKoperasi()); - dto.potonganObat(pengurangan.getPotonganObat()); - dto.biayaRawatInap(pengurangan.getBiayaRawatInap()); - dto.biayaRawatJalan(pengurangan.getBiayaRawatJalan()); + List> listKomponen = slipGajiKomponenDao.findAll(pegawaiId, start, end); + Set dtoList = new HashSet<>(); + listKomponen.forEach(k -> { + SlipGajiKomponenDto.SlipGajiKomponenDtoBuilder kBuilder = SlipGajiKomponenDto.builder(); + kBuilder.id(k.get("id").toString()); + kBuilder.idKomponen(Integer.valueOf(k.get("idKomponen").toString())); + kBuilder.namaKomponen(k.get("namaKomponen").toString()); + kBuilder.nominal(new BigDecimal(k.get("nominal").toString())); + dtoList.add(kBuilder.build()); + }); + dto.komponen(dtoList); } } return dto.build(); } + + @Override + public String writeExcel(Long bulan) { + Date month = new Date(bulan); + Date start = DateUtil.startMonth(month); + Date end = DateUtil.endMonth(month); + List> listPegawai = slipGajiDao.findAllByBulan(start, end); + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month)); + List listHeader = new ArrayList<>(); + listHeader.add("ID"); + listHeader.add("NAMA PEGAWAI"); + listHeader.add("GAJI"); + listHeader.add("REMUN KINERJA"); + listHeader.add("REMUN TAMBAHAN"); + listHeader.add("FEE FOR SERVICE"); + listHeader.add("FEE FOR ON SITE"); + listHeader.add("UANG MAKAN"); + listHeader.add("UANG LEMBUR"); + listHeader.add("PPH GAJI"); + listHeader.add("PPH REMUN"); + listHeader.add("PPH FEE FOR SERVICE"); + listHeader.add("PPH FEE FOR ON SITE"); + listHeader.add("PPH UANG MAKAN"); + listHeader.add("PPH UANG LEMBUR"); + listHeader.add("IURAN WAJIB KOPERASI"); + listHeader.add("POTONGAN PINJAMAN KOPERASI"); + listHeader.add("POTONGAN OBAT"); + listHeader.add("BIAYA RAWAT INAP"); + listHeader.add("BIAYA RAWAT JALAN"); + return null; + } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiDto.java index 3fd5d7e1..85499b07 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiDto.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiDto.java @@ -1,6 +1,6 @@ package com.jasamedika.medifirst2000.dto; -import java.math.BigDecimal; +import java.util.Set; import javax.validation.constraints.NotNull; @@ -36,70 +36,14 @@ public class SlipGajiDto { @Caption(value = "Bulan") private Long bulan; - @Caption(value = "Gaji") - private BigDecimal gaji; - - @Caption(value = "Remunerasi Kinerja") - private BigDecimal remunerasiKinerja; - - @Caption(value = "Remunerasi Tambahan") - private BigDecimal remunerasiTambahan; - - @Caption(value = "Fee For Service") - private BigDecimal feeForService; - - @Caption(value = "Fee for on Site") - private BigDecimal feeForOnSite; - - @Caption(value = "Uang Makan") - private BigDecimal uangMakan; - - @Caption(value = "Uang Lembur") - private BigDecimal uangLembur; - - @Caption(value = "PPH Gaji") - private BigDecimal pphGaji; - - @Caption(value = "PPH Remunerasi") - private BigDecimal pphRemunerasi; - - @Caption(value = "PPH Fee for Service") - private BigDecimal pphFeeForService; - - @Caption(value = "PPH Fee for On Site") - private BigDecimal pphFeeForOnSite; - - @Caption(value = "PPH Uang Makan") - private BigDecimal pphUangMakan; - - @Caption(value = "PPH Uang Lembur") - private BigDecimal pphUangLembur; - - @Caption(value = "Iuran Wajib Koperasi") - private BigDecimal iuranWajibKoperasi; - - @Caption(value = "Potongan Pinjaman Koperasi") - private BigDecimal potonganPinjamanKoperasi; - - @Caption(value = "Potongan Obat") - private BigDecimal potonganObat; - - @Caption(value = "Biaya Rawat Inap") - private BigDecimal biayaRawatInap; - - @Caption(value = "Biaya Rawat Jalan") - private BigDecimal biayaRawatJalan; + @Caption(value = "Komponen Gaji") + private Set komponen; public SlipGajiDto() { } public SlipGajiDto(String id, Integer idPegawai, String namaPegawai, String jabatan, String unitKerja, - String subUnitKerja, String grade, Long bulan, BigDecimal gaji, BigDecimal remunerasiKinerja, - BigDecimal remunerasiTambahan, BigDecimal feeForService, BigDecimal feeForOnSite, BigDecimal uangMakan, - BigDecimal uangLembur, BigDecimal pphGaji, BigDecimal pphRemunerasi, BigDecimal pphFeeForService, - BigDecimal pphFeeForOnSite, BigDecimal pphUangMakan, BigDecimal pphUangLembur, - BigDecimal iuranWajibKoperasi, BigDecimal potonganPinjamanKoperasi, BigDecimal potonganObat, - BigDecimal biayaRawatInap, BigDecimal biayaRawatJalan) { + String subUnitKerja, String grade, Long bulan, Set komponen) { super(); this.id = id; this.idPegawai = idPegawai; @@ -109,24 +53,7 @@ public class SlipGajiDto { this.subUnitKerja = subUnitKerja; this.grade = grade; this.bulan = bulan; - this.gaji = gaji; - this.remunerasiKinerja = remunerasiKinerja; - this.remunerasiTambahan = remunerasiTambahan; - this.feeForService = feeForService; - this.feeForOnSite = feeForOnSite; - this.uangMakan = uangMakan; - this.uangLembur = uangLembur; - this.pphGaji = pphGaji; - this.pphRemunerasi = pphRemunerasi; - this.pphFeeForService = pphFeeForService; - this.pphFeeForOnSite = pphFeeForOnSite; - this.pphUangMakan = pphUangMakan; - this.pphUangLembur = pphUangLembur; - this.iuranWajibKoperasi = iuranWajibKoperasi; - this.potonganPinjamanKoperasi = potonganPinjamanKoperasi; - this.potonganObat = potonganObat; - this.biayaRawatInap = biayaRawatInap; - this.biayaRawatJalan = biayaRawatJalan; + this.komponen = komponen; } public String getId() { @@ -193,148 +120,16 @@ public class SlipGajiDto { this.bulan = bulan; } - public BigDecimal getGaji() { - return gaji; + public Set getKomponen() { + return komponen; } - public void setGaji(BigDecimal gaji) { - this.gaji = gaji; + public void setKomponen(Set komponen) { + this.komponen = komponen; } - public BigDecimal getRemunerasiKinerja() { - return remunerasiKinerja; - } - - public void setRemunerasiKinerja(BigDecimal remunerasiKinerja) { - this.remunerasiKinerja = remunerasiKinerja; - } - - public BigDecimal getRemunerasiTambahan() { - return remunerasiTambahan; - } - - public void setRemunerasiTambahan(BigDecimal remunerasiTambahan) { - this.remunerasiTambahan = remunerasiTambahan; - } - - public BigDecimal getFeeForService() { - return feeForService; - } - - public void setFeeForService(BigDecimal feeForService) { - this.feeForService = feeForService; - } - - public BigDecimal getFeeForOnSite() { - return feeForOnSite; - } - - public void setFeeForOnSite(BigDecimal feeForOnSite) { - this.feeForOnSite = feeForOnSite; - } - - public BigDecimal getUangMakan() { - return uangMakan; - } - - public void setUangMakan(BigDecimal uangMakan) { - this.uangMakan = uangMakan; - } - - public BigDecimal getUangLembur() { - return uangLembur; - } - - public void setUangLembur(BigDecimal uangLembur) { - this.uangLembur = uangLembur; - } - - public BigDecimal getPphGaji() { - return pphGaji; - } - - public void setPphGaji(BigDecimal pphGaji) { - this.pphGaji = pphGaji; - } - - public BigDecimal getPphRemunerasi() { - return pphRemunerasi; - } - - public void setPphRemunerasi(BigDecimal pphRemunerasi) { - this.pphRemunerasi = pphRemunerasi; - } - - public BigDecimal getPphFeeForService() { - return pphFeeForService; - } - - public void setPphFeeForService(BigDecimal pphFeeForService) { - this.pphFeeForService = pphFeeForService; - } - - public BigDecimal getPphFeeForOnSite() { - return pphFeeForOnSite; - } - - public void setPphFeeForOnSite(BigDecimal pphFeeForOnSite) { - this.pphFeeForOnSite = pphFeeForOnSite; - } - - public BigDecimal getPphUangMakan() { - return pphUangMakan; - } - - public void setPphUangMakan(BigDecimal pphUangMakan) { - this.pphUangMakan = pphUangMakan; - } - - public BigDecimal getPphUangLembur() { - return pphUangLembur; - } - - public void setPphUangLembur(BigDecimal pphUangLembur) { - this.pphUangLembur = pphUangLembur; - } - - public BigDecimal getIuranWajibKoperasi() { - return iuranWajibKoperasi; - } - - public void setIuranWajibKoperasi(BigDecimal iuranWajibKoperasi) { - this.iuranWajibKoperasi = iuranWajibKoperasi; - } - - public BigDecimal getPotonganPinjamanKoperasi() { - return potonganPinjamanKoperasi; - } - - public void setPotonganPinjamanKoperasi(BigDecimal potonganPinjamanKoperasi) { - this.potonganPinjamanKoperasi = potonganPinjamanKoperasi; - } - - public BigDecimal getPotonganObat() { - return potonganObat; - } - - public void setPotonganObat(BigDecimal potonganObat) { - this.potonganObat = potonganObat; - } - - public BigDecimal getBiayaRawatInap() { - return biayaRawatInap; - } - - public void setBiayaRawatInap(BigDecimal biayaRawatInap) { - this.biayaRawatInap = biayaRawatInap; - } - - public BigDecimal getBiayaRawatJalan() { - return biayaRawatJalan; - } - - public void setBiayaRawatJalan(BigDecimal biayaRawatJalan) { - this.biayaRawatJalan = biayaRawatJalan; + public void addKomponen(SlipGajiKomponenDto komponen) { + this.komponen.add(komponen); } public static SlipGajiDtoBuilder builder() { @@ -350,24 +145,7 @@ public class SlipGajiDto { private String subUnitKerja; private String grade; private Long bulan; - private BigDecimal gaji; - private BigDecimal remunerasiKinerja; - private BigDecimal remunerasiTambahan; - private BigDecimal feeForService; - private BigDecimal feeForOnSite; - private BigDecimal uangMakan; - private BigDecimal uangLembur; - private BigDecimal pphGaji; - private BigDecimal pphRemunerasi; - private BigDecimal pphFeeForService; - private BigDecimal pphFeeForOnSite; - private BigDecimal pphUangMakan; - private BigDecimal pphUangLembur; - private BigDecimal iuranWajibKoperasi; - private BigDecimal potonganPinjamanKoperasi; - private BigDecimal potonganObat; - private BigDecimal biayaRawatInap; - private BigDecimal biayaRawatJalan; + private Set komponen; public SlipGajiDtoBuilder() { } @@ -412,103 +190,14 @@ public class SlipGajiDto { return this; } - public SlipGajiDtoBuilder gaji(final BigDecimal gaji) { - this.gaji = gaji; - return this; - } - - public SlipGajiDtoBuilder remunerasiKinerja(final BigDecimal remunerasiKinerja) { - this.remunerasiKinerja = remunerasiKinerja; - return this; - } - - public SlipGajiDtoBuilder remunerasiTambahan(final BigDecimal remunerasiTambahan) { - this.remunerasiTambahan = remunerasiTambahan; - return this; - } - - public SlipGajiDtoBuilder feeForService(final BigDecimal feeForService) { - this.feeForService = feeForService; - return this; - } - - public SlipGajiDtoBuilder feeForOnSite(final BigDecimal feeForOnSite) { - this.feeForOnSite = feeForOnSite; - return this; - } - - public SlipGajiDtoBuilder uangMakan(final BigDecimal uangMakan) { - this.uangMakan = uangMakan; - return this; - } - - public SlipGajiDtoBuilder uangLembur(final BigDecimal uangLembur) { - this.uangLembur = uangLembur; - return this; - } - - public SlipGajiDtoBuilder pphGaji(final BigDecimal pphGaji) { - this.pphGaji = pphGaji; - return this; - } - - public SlipGajiDtoBuilder pphRemunerasi(final BigDecimal pphRemunerasi) { - this.pphRemunerasi = pphRemunerasi; - return this; - } - - public SlipGajiDtoBuilder pphFeeForService(final BigDecimal pphFeeForService) { - this.pphFeeForService = pphFeeForService; - return this; - } - - public SlipGajiDtoBuilder pphFeeForOnSite(final BigDecimal pphFeeForOnSite) { - this.pphFeeForOnSite = pphFeeForOnSite; - return this; - } - - public SlipGajiDtoBuilder pphUangMakan(final BigDecimal pphUangMakan) { - this.pphUangMakan = pphUangMakan; - return this; - } - - public SlipGajiDtoBuilder pphUangLembur(final BigDecimal pphUangLembur) { - this.pphUangLembur = pphUangLembur; - return this; - } - - public SlipGajiDtoBuilder iuranWajibKoperasi(final BigDecimal iuranWajibKoperasi) { - this.iuranWajibKoperasi = iuranWajibKoperasi; - return this; - } - - public SlipGajiDtoBuilder potonganPinjamanKoperasi(final BigDecimal potonganPinjamanKoperasi) { - this.potonganPinjamanKoperasi = potonganPinjamanKoperasi; - return this; - } - - public SlipGajiDtoBuilder potonganObat(final BigDecimal potonganObat) { - this.potonganObat = potonganObat; - return this; - } - - public SlipGajiDtoBuilder biayaRawatInap(final BigDecimal biayaRawatInap) { - this.biayaRawatInap = biayaRawatInap; - return this; - } - - public SlipGajiDtoBuilder biayaRawatJalan(final BigDecimal biayaRawatJalan) { - this.biayaRawatJalan = biayaRawatJalan; + public SlipGajiDtoBuilder komponen(final Set komponen) { + this.komponen = komponen; return this; } public SlipGajiDto build() { return new SlipGajiDto(this.id, this.idPegawai, this.namaPegawai, this.jabatan, this.unitKerja, - this.subUnitKerja, this.grade, this.bulan, this.gaji, this.remunerasiKinerja, - this.remunerasiTambahan, this.feeForService, this.feeForOnSite, this.uangMakan, this.uangLembur, - this.pphGaji, this.pphRemunerasi, this.pphFeeForService, this.pphFeeForOnSite, this.pphUangMakan, - this.pphUangLembur, this.iuranWajibKoperasi, this.potonganPinjamanKoperasi, this.potonganObat, - this.biayaRawatInap, this.biayaRawatJalan); + this.subUnitKerja, this.grade, this.bulan, this.komponen); } } } diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiKomponenDto.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiKomponenDto.java new file mode 100644 index 00000000..b51d3231 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/dto/SlipGajiKomponenDto.java @@ -0,0 +1,99 @@ +package com.jasamedika.medifirst2000.dto; + +import java.math.BigDecimal; + +import com.jasamedika.medifirst2000.helper.Caption; + +public class SlipGajiKomponenDto { + @Caption(value = "ID") + private String id; + + @Caption(value = "ID Komponen Gaji") + private Integer idKomponen; + + @Caption(value = "Nama Komponen Gaji") + private String namaKomponen; + + @Caption(value = "Nominal") + private BigDecimal nominal; + + public SlipGajiKomponenDto() { + } + + public SlipGajiKomponenDto(String id, Integer idKomponen, String namaKomponen, BigDecimal nominal) { + this.id = id; + this.idKomponen = idKomponen; + this.namaKomponen = namaKomponen; + this.nominal = nominal; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Integer getIdKomponen() { + return idKomponen; + } + + public void setIdKomponen(Integer idKomponen) { + this.idKomponen = idKomponen; + } + + public String getNamaKomponen() { + return namaKomponen; + } + + public void setNamaKomponen(String namaKomponen) { + this.namaKomponen = namaKomponen; + } + + public BigDecimal getNominal() { + return nominal; + } + + public void setNominal(BigDecimal nominal) { + this.nominal = nominal; + } + + public static SlipGajiKomponenDtoBuilder builder() { + return new SlipGajiKomponenDtoBuilder(); + } + + public static class SlipGajiKomponenDtoBuilder { + private String id; + private Integer idKomponen; + private String namaKomponen; + private BigDecimal nominal; + + public SlipGajiKomponenDtoBuilder() { + } + + public SlipGajiKomponenDtoBuilder id(final String id) { + this.id = id; + return this; + } + + public SlipGajiKomponenDtoBuilder idKomponen(final Integer idKomponen) { + this.idKomponen = idKomponen; + return this; + } + + public SlipGajiKomponenDtoBuilder namaKomponen(final String namaKomponen) { + this.namaKomponen = namaKomponen; + return this; + } + + public SlipGajiKomponenDtoBuilder nominal(final BigDecimal nominal) { + this.nominal = nominal; + return this; + } + + public SlipGajiKomponenDto build() { + return new SlipGajiKomponenDto(this.id, this.idKomponen, this.namaKomponen, this.nominal); + } + } +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SlipGajiKomponen.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SlipGajiKomponen.java new file mode 100644 index 00000000..e5b0c75b --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/SlipGajiKomponen.java @@ -0,0 +1,133 @@ +package com.jasamedika.medifirst2000.entities; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import org.hibernate.annotations.GenericGenerator; + +import com.jasamedika.medifirst2000.helper.Caption; + +/** + * @author salmanoe + * @since Jan 30, 2023 + */ +@Entity +@Table(name = "sdm_slipgajikomponen_t") +public class SlipGajiKomponen implements Serializable { + private static final long serialVersionUID = -3932381437404780760L; + + @Id + @GenericGenerator(name = "uuid", strategy = "uuid") + @GeneratedValue(generator = "uuid") + @Column(columnDefinition = "CHAR(32)", unique = true) + @Caption(value = "ID") + protected String id; + + @ManyToOne + @JoinColumn(name = "komponengajifk") + @Caption(value = "Komponen Slip Gaji") + private KomponenGaji komponen; + + @Column(name = "nominal") + @Caption(value = "Nominal") + private BigDecimal nominal; + + @ManyToOne + @NotNull(message = "Slip Gaji tidak boleh kosong") + @JoinColumn(name = "slipgajifk", columnDefinition = "CHAR(32)", nullable = false) + @Caption(value = "Slip Gaji") + private SlipGaji slipGaji; + + public SlipGajiKomponen() { + } + + public SlipGajiKomponen(String id, KomponenGaji komponen, BigDecimal nominal, SlipGaji slipGaji) { + this.id = id; + this.komponen = komponen; + this.nominal = nominal; + this.slipGaji = slipGaji; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public KomponenGaji getKomponen() { + return komponen; + } + + public void setKomponen(KomponenGaji komponen) { + this.komponen = komponen; + } + + public BigDecimal getNominal() { + return nominal; + } + + public void setNominal(BigDecimal nominal) { + this.nominal = nominal; + } + + public SlipGaji getSlipGaji() { + return slipGaji; + } + + public void setSlipGaji(SlipGaji slipGaji) { + this.slipGaji = slipGaji; + } + + public static long getSerialversionuid() { + return serialVersionUID; + } + + public static SlipGajiKomponenBuilder builder() { + return new SlipGajiKomponenBuilder(); + } + + public static class SlipGajiKomponenBuilder { + private String id; + private KomponenGaji komponen; + private BigDecimal nominal; + private SlipGaji slipGaji; + + public SlipGajiKomponenBuilder() { + } + + public SlipGajiKomponenBuilder id(final String id) { + this.id = id; + return this; + } + + public SlipGajiKomponenBuilder komponen(final KomponenGaji komponen) { + this.komponen = komponen; + return this; + } + + public SlipGajiKomponenBuilder nominal(final BigDecimal nominal) { + this.nominal = nominal; + return this; + } + + public SlipGajiKomponenBuilder slipGaji(final SlipGaji slipGaji) { + this.slipGaji = slipGaji; + return this; + } + + public SlipGajiKomponen build() { + return new SlipGajiKomponen(this.id, this.komponen, this.nominal, this.slipGaji); + } + } +} diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java index a445c1df..a1e82576 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java @@ -54,9 +54,9 @@ public class SlipGajiController { } } - @RequestMapping(value = "/get/{pegawaiId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity get(@PathVariable Integer pegawaiId) { - SlipGajiDto entity = slipGajiService.get(pegawaiId); + @RequestMapping(value = "/get/{pegawaiId}/{bulan}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity get(@PathVariable Integer pegawaiId, @PathVariable Long bulan) { + SlipGajiDto entity = slipGajiService.get(pegawaiId, bulan); return new ResponseEntity<>(entity, HttpStatus.OK); } }