Update SlipGajiService

Pembuatan service update detail slip gaji karena perubahan data pegawai
This commit is contained in:
salmanoe 2023-01-27 14:20:01 +07:00
parent b2210f374c
commit 81341e9fa0
8 changed files with 111 additions and 26 deletions

View File

@ -1,7 +1,6 @@
package com.jasamedika.medifirst2000.dao; package com.jasamedika.medifirst2000.dao;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;

View File

@ -8,8 +8,10 @@ import com.jasamedika.medifirst2000.dto.SlipGajiDto;
*/ */
public interface SlipGajiService { public interface SlipGajiService {
void init(); void init();
void save(SlipGajiDto dto); void save(SlipGajiDto dto);
void updateDetail(SlipGajiDto dto);
SlipGajiDto get(Integer pegawaiId); SlipGajiDto get(Integer pegawaiId);
} }

View File

@ -124,13 +124,15 @@ public class SlipGajiServiceImpl implements SlipGajiService {
@Override @Override
public void save(SlipGajiDto dto) { public void save(SlipGajiDto dto) {
SlipGaji.SlipGajiBuilder slipGaji = SlipGaji.builder(); SlipGaji.SlipGajiBuilder slipGaji = SlipGaji.builder();
if (CommonUtil.isNotNullOrEmpty(dto.getId()))
slipGaji.id(dto.getId());
slipGaji.pegawai(pegawaiDao.findById(dto.getIdPegawai())); slipGaji.pegawai(pegawaiDao.findById(dto.getIdPegawai()));
slipGaji.bulan(new Date(dto.getBulan())); slipGaji.bulan(new Date(dto.getBulan()));
SlipGaji savedSlip = slipGajiDao.save(slipGaji.build()); SlipGaji savedSlip = slipGajiDao.save(slipGaji.build());
if (CommonUtil.isNotNullOrEmpty(savedSlip)) { if (CommonUtil.isNotNullOrEmpty(savedSlip)) {
{ if (CommonUtil.isNullOrEmpty(dto.getId())) {
List<SlipGajiDetail> listDetail = new ArrayList<>();
List<MapPegawaiJabatanToUnitKerja> listMapping = mappingJabatanDao.findByPegawaiId(dto.getIdPegawai()); List<MapPegawaiJabatanToUnitKerja> listMapping = mappingJabatanDao.findByPegawaiId(dto.getIdPegawai());
List<SlipGajiDetail> listDetail = new ArrayList<>();
listMapping.forEach(j -> { listMapping.forEach(j -> {
SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder(); SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder();
detail.slipGaji(savedSlip); detail.slipGaji(savedSlip);
@ -148,6 +150,8 @@ public class SlipGajiServiceImpl implements SlipGajiService {
} }
{ {
PenerimaanGaji.PenerimaanGajiBuilder penerimaan = PenerimaanGaji.builder(); PenerimaanGaji.PenerimaanGajiBuilder penerimaan = PenerimaanGaji.builder();
if (CommonUtil.isNotNullOrEmpty(dto.getId()))
penerimaan.id(savedSlip.getId());
penerimaan.gaji(dto.getGaji()); penerimaan.gaji(dto.getGaji());
penerimaan.remunerasiKinerja(dto.getRemunerasiKinerja()); penerimaan.remunerasiKinerja(dto.getRemunerasiKinerja());
penerimaan.remunerasiTambahan(dto.getRemunerasiTambahan()); penerimaan.remunerasiTambahan(dto.getRemunerasiTambahan());
@ -160,6 +164,8 @@ public class SlipGajiServiceImpl implements SlipGajiService {
} }
{ {
PenguranganGaji.PenguranganGajiBuilder pengurangan = PenguranganGaji.builder(); PenguranganGaji.PenguranganGajiBuilder pengurangan = PenguranganGaji.builder();
if (CommonUtil.isNotNullOrEmpty(dto.getId()))
pengurangan.id(savedSlip.getId());
pengurangan.pphGaji(dto.getPphGaji()); pengurangan.pphGaji(dto.getPphGaji());
pengurangan.pphRemunerasi(dto.getPphRemunerasi()); pengurangan.pphRemunerasi(dto.getPphRemunerasi());
pengurangan.pphFeeForService(dto.getPphFeeForService()); pengurangan.pphFeeForService(dto.getPphFeeForService());
@ -177,6 +183,33 @@ public class SlipGajiServiceImpl implements SlipGajiService {
} }
} }
@Override
public void updateDetail(SlipGajiDto dto) {
{
List<SlipGajiDetail> listExistedDetail = slipGajiDetailDao.findBySlipGaji(dto.getId());
slipGajiDetailDao.delete(listExistedDetail);
}
SlipGaji existedSlipGaji = slipGajiDao.findOne(dto.getId());
if (CommonUtil.isNotNullOrEmpty(existedSlipGaji)) {
List<MapPegawaiJabatanToUnitKerja> listMapping = mappingJabatanDao.findByPegawaiId(dto.getIdPegawai());
List<SlipGajiDetail> listDetail = new ArrayList<>();
listMapping.forEach(j -> {
SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder();
detail.slipGaji(existedSlipGaji);
if (CommonUtil.isNotNullOrEmpty(j.getJabatan()))
detail.jabatan(j.getJabatan());
if (CommonUtil.isNotNullOrEmpty(j.getUnitKerjaPegawai()))
detail.unitKerja(j.getUnitKerjaPegawai());
if (CommonUtil.isNotNullOrEmpty(j.getSubUnitKerjaPegawai()))
detail.subUnitKerja(j.getSubUnitKerjaPegawai());
if (CommonUtil.isNotNullOrEmpty(j.getGrade()))
detail.grade(j.getGrade());
listDetail.add(detail.build());
});
slipGajiDetailDao.save(listDetail);
}
}
@Override @Override
public SlipGajiDto get(Integer pegawaiId) { public SlipGajiDto get(Integer pegawaiId) {
Optional<SlipGaji> slipGaji = slipGajiDao.findByPegawai(pegawaiId); Optional<SlipGaji> slipGaji = slipGajiDao.findByPegawai(pegawaiId);

View File

@ -11,6 +11,9 @@ import com.jasamedika.medifirst2000.helper.Caption;
* @since Jan 20, 2023 * @since Jan 20, 2023
*/ */
public class SlipGajiDto { public class SlipGajiDto {
@Caption(value = "ID Slip Gaji")
private String id;
@NotNull(message = "ID Pegawai must not be null") @NotNull(message = "ID Pegawai must not be null")
@Caption(value = "ID Pegawai") @Caption(value = "ID Pegawai")
private Integer idPegawai; private Integer idPegawai;
@ -90,13 +93,15 @@ public class SlipGajiDto {
public SlipGajiDto() { public SlipGajiDto() {
} }
public SlipGajiDto(Integer idPegawai, String namaPegawai, String jabatan, String unitKerja, String subUnitKerja, public SlipGajiDto(String id, Integer idPegawai, String namaPegawai, String jabatan, String unitKerja,
String grade, Long bulan, BigDecimal gaji, BigDecimal remunerasiKinerja, BigDecimal remunerasiTambahan, String subUnitKerja, String grade, Long bulan, BigDecimal gaji, BigDecimal remunerasiKinerja,
BigDecimal feeForService, BigDecimal feeForOnSite, BigDecimal uangMakan, BigDecimal uangLembur, BigDecimal remunerasiTambahan, BigDecimal feeForService, BigDecimal feeForOnSite, BigDecimal uangMakan,
BigDecimal pphGaji, BigDecimal pphRemunerasi, BigDecimal pphFeeForService, BigDecimal pphFeeForOnSite, BigDecimal uangLembur, BigDecimal pphGaji, BigDecimal pphRemunerasi, BigDecimal pphFeeForService,
BigDecimal pphUangMakan, BigDecimal pphUangLembur, BigDecimal iuranWajibKoperasi, BigDecimal pphFeeForOnSite, BigDecimal pphUangMakan, BigDecimal pphUangLembur,
BigDecimal potonganPinjamanKoperasi, BigDecimal potonganObat, BigDecimal biayaRawatInap, BigDecimal iuranWajibKoperasi, BigDecimal potonganPinjamanKoperasi, BigDecimal potonganObat,
BigDecimal biayaRawatJalan) { BigDecimal biayaRawatInap, BigDecimal biayaRawatJalan) {
super();
this.id = id;
this.idPegawai = idPegawai; this.idPegawai = idPegawai;
this.namaPegawai = namaPegawai; this.namaPegawai = namaPegawai;
this.jabatan = jabatan; this.jabatan = jabatan;
@ -124,6 +129,14 @@ public class SlipGajiDto {
this.biayaRawatJalan = biayaRawatJalan; this.biayaRawatJalan = biayaRawatJalan;
} }
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getIdPegawai() { public Integer getIdPegawai() {
return idPegawai; return idPegawai;
} }
@ -329,6 +342,7 @@ public class SlipGajiDto {
} }
public static class SlipGajiDtoBuilder { public static class SlipGajiDtoBuilder {
private String id;
private Integer idPegawai; private Integer idPegawai;
private String namaPegawai; private String namaPegawai;
private String jabatan; private String jabatan;
@ -358,6 +372,11 @@ public class SlipGajiDto {
public SlipGajiDtoBuilder() { public SlipGajiDtoBuilder() {
} }
public SlipGajiDtoBuilder id(final String id) {
this.id = id;
return this;
}
public SlipGajiDtoBuilder idPegawai(final Integer idPegawai) { public SlipGajiDtoBuilder idPegawai(final Integer idPegawai) {
this.idPegawai = idPegawai; this.idPegawai = idPegawai;
return this; return this;
@ -484,10 +503,10 @@ public class SlipGajiDto {
} }
public SlipGajiDto build() { public SlipGajiDto build() {
return new SlipGajiDto(this.idPegawai, this.namaPegawai, this.jabatan, this.unitKerja, this.subUnitKerja, return new SlipGajiDto(this.id, this.idPegawai, this.namaPegawai, this.jabatan, this.unitKerja,
this.grade, this.bulan, this.gaji, this.remunerasiKinerja, this.remunerasiTambahan, this.subUnitKerja, this.grade, this.bulan, this.gaji, this.remunerasiKinerja,
this.feeForService, this.feeForOnSite, this.uangMakan, this.uangLembur, this.pphGaji, this.remunerasiTambahan, this.feeForService, this.feeForOnSite, this.uangMakan, this.uangLembur,
this.pphRemunerasi, this.pphFeeForService, this.pphFeeForOnSite, this.pphUangMakan, this.pphGaji, this.pphRemunerasi, this.pphFeeForService, this.pphFeeForOnSite, this.pphUangMakan,
this.pphUangLembur, this.iuranWajibKoperasi, this.potonganPinjamanKoperasi, this.potonganObat, this.pphUangLembur, this.iuranWajibKoperasi, this.potonganPinjamanKoperasi, this.potonganObat,
this.biayaRawatInap, this.biayaRawatJalan); this.biayaRawatInap, this.biayaRawatJalan);
} }

View File

@ -69,9 +69,10 @@ public class PenerimaanGaji implements Serializable {
public PenerimaanGaji() { public PenerimaanGaji() {
} }
public PenerimaanGaji(SlipGaji slipGaji, BigDecimal gaji, BigDecimal remunerasiKinerja, public PenerimaanGaji(String id, SlipGaji slipGaji, BigDecimal gaji, BigDecimal remunerasiKinerja,
BigDecimal remunerasiTambahan, BigDecimal feeForService, BigDecimal feeForOnSite, BigDecimal uangMakan, BigDecimal remunerasiTambahan, BigDecimal feeForService, BigDecimal feeForOnSite, BigDecimal uangMakan,
BigDecimal uangLembur) { BigDecimal uangLembur) {
this.id = id;
this.slipGaji = slipGaji; this.slipGaji = slipGaji;
this.gaji = gaji; this.gaji = gaji;
this.remunerasiKinerja = remunerasiKinerja; this.remunerasiKinerja = remunerasiKinerja;
@ -163,6 +164,7 @@ public class PenerimaanGaji implements Serializable {
} }
public static class PenerimaanGajiBuilder { public static class PenerimaanGajiBuilder {
private String id;
private SlipGaji slipGaji; private SlipGaji slipGaji;
private BigDecimal gaji; private BigDecimal gaji;
private BigDecimal remunerasiKinerja; private BigDecimal remunerasiKinerja;
@ -175,6 +177,11 @@ public class PenerimaanGaji implements Serializable {
public PenerimaanGajiBuilder() { public PenerimaanGajiBuilder() {
} }
public PenerimaanGajiBuilder id(final String id) {
this.id = id;
return this;
}
public PenerimaanGajiBuilder slipGaji(final SlipGaji slipGaji) { public PenerimaanGajiBuilder slipGaji(final SlipGaji slipGaji) {
this.slipGaji = slipGaji; this.slipGaji = slipGaji;
return this; return this;
@ -216,8 +223,8 @@ public class PenerimaanGaji implements Serializable {
} }
public PenerimaanGaji build() { public PenerimaanGaji build() {
return new PenerimaanGaji(this.slipGaji, this.gaji, this.remunerasiKinerja, this.remunerasiTambahan, return new PenerimaanGaji(this.id, this.slipGaji, this.gaji, this.remunerasiKinerja,
this.feeForService, this.feeForOnSite, this.uangMakan, this.uangLembur); this.remunerasiTambahan, this.feeForService, this.feeForOnSite, this.uangMakan, this.uangLembur);
} }
} }
} }

View File

@ -85,10 +85,11 @@ public class PenguranganGaji implements Serializable {
public PenguranganGaji() { public PenguranganGaji() {
} }
public PenguranganGaji(SlipGaji slipGaji, BigDecimal pphGaji, BigDecimal pphRemunerasi, BigDecimal pphFeeForService, public PenguranganGaji(String id, SlipGaji slipGaji, BigDecimal pphGaji, BigDecimal pphRemunerasi,
BigDecimal pphFeeForOnSite, BigDecimal pphUangMakan, BigDecimal pphUangLembur, BigDecimal pphFeeForService, BigDecimal pphFeeForOnSite, BigDecimal pphUangMakan, BigDecimal pphUangLembur,
BigDecimal iuranWajibKoperasi, BigDecimal potonganPinjamanKoperasi, BigDecimal potonganObat, BigDecimal iuranWajibKoperasi, BigDecimal potonganPinjamanKoperasi, BigDecimal potonganObat,
BigDecimal biayaRawatInap, BigDecimal biayaRawatJalan) { BigDecimal biayaRawatInap, BigDecimal biayaRawatJalan) {
this.id = id;
this.slipGaji = slipGaji; this.slipGaji = slipGaji;
this.pphGaji = pphGaji; this.pphGaji = pphGaji;
this.pphRemunerasi = pphRemunerasi; this.pphRemunerasi = pphRemunerasi;
@ -216,6 +217,7 @@ public class PenguranganGaji implements Serializable {
} }
public static class PenguranganGajiBuilder { public static class PenguranganGajiBuilder {
private String id;
private SlipGaji slipGaji; private SlipGaji slipGaji;
private BigDecimal pphGaji; private BigDecimal pphGaji;
private BigDecimal pphRemunerasi; private BigDecimal pphRemunerasi;
@ -232,6 +234,11 @@ public class PenguranganGaji implements Serializable {
public PenguranganGajiBuilder() { public PenguranganGajiBuilder() {
} }
public PenguranganGajiBuilder id(final String id) {
this.id = id;
return this;
}
public PenguranganGajiBuilder slipGaji(final SlipGaji slipGaji) { public PenguranganGajiBuilder slipGaji(final SlipGaji slipGaji) {
this.slipGaji = slipGaji; this.slipGaji = slipGaji;
return this; return this;
@ -293,7 +300,7 @@ public class PenguranganGaji implements Serializable {
} }
public PenguranganGaji build() { public PenguranganGaji build() {
return new PenguranganGaji(this.slipGaji, this.pphGaji, this.pphRemunerasi, this.pphFeeForService, return new PenguranganGaji(this.id, this.slipGaji, this.pphGaji, this.pphRemunerasi, this.pphFeeForService,
this.pphFeeForOnSite, this.pphUangMakan, this.pphUangLembur, this.iuranWajibKoperasi, this.pphFeeForOnSite, this.pphUangMakan, this.pphUangLembur, this.iuranWajibKoperasi,
this.potonganPinjamanKoperasi, this.potonganObat, this.biayaRawatInap, this.biayaRawatJalan); this.potonganPinjamanKoperasi, this.potonganObat, this.biayaRawatInap, this.biayaRawatJalan);
} }

View File

@ -48,7 +48,8 @@ public class SlipGaji implements Serializable {
public SlipGaji() { public SlipGaji() {
} }
public SlipGaji(Pegawai pegawai, Date bulan) { public SlipGaji(String id, Pegawai pegawai, Date bulan) {
this.id = id;
this.pegawai = pegawai; this.pegawai = pegawai;
this.bulan = bulan; this.bulan = bulan;
} }
@ -86,12 +87,18 @@ public class SlipGaji implements Serializable {
} }
public static class SlipGajiBuilder { public static class SlipGajiBuilder {
private String id;
private Pegawai pegawai; private Pegawai pegawai;
private Date bulan; private Date bulan;
public SlipGajiBuilder() { public SlipGajiBuilder() {
} }
public SlipGajiBuilder id(final String id) {
this.id = id;
return this;
}
public SlipGajiBuilder pegawai(final Pegawai pegawai) { public SlipGajiBuilder pegawai(final Pegawai pegawai) {
this.pegawai = pegawai; this.pegawai = pegawai;
return this; return this;
@ -103,7 +110,7 @@ public class SlipGaji implements Serializable {
} }
public SlipGaji build() { public SlipGaji build() {
return new SlipGaji(this.pegawai, this.bulan); return new SlipGaji(this.id, this.pegawai, this.bulan);
} }
} }
} }

View File

@ -28,7 +28,7 @@ public class SlipGajiController {
return new ResponseEntity<>(true, HttpStatus.CREATED); return new ResponseEntity<>(true, HttpStatus.CREATED);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
} }
} }
@ -39,7 +39,18 @@ public class SlipGajiController {
return new ResponseEntity<>(true, HttpStatus.CREATED); return new ResponseEntity<>(true, HttpStatus.CREATED);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@RequestMapping(value = "/detail/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> updateDetail(@RequestBody @Valid SlipGajiDto dto) {
try {
slipGajiService.updateDetail(dto);
return new ResponseEntity<>(true, HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
} }
} }