From 5691a5d22e813030641c5e792e347f82d7fc5867 Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Wed, 21 Jun 2023 14:49:31 +0700 Subject: [PATCH] Update SlipGajiServiceImpl.java Perbaikan tampilkan semua komponen untuk front-end saat edit pengaturan data penghasilan --- .../service/impl/SlipGajiServiceImpl.java | 98 +++++++++---------- 1 file changed, 45 insertions(+), 53 deletions(-) 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 93ac0ae0..91b2e82f 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,23 +1,13 @@ package com.jasamedika.medifirst2000.service.impl; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.TreeMap; -import java.util.stream.Collectors; - +import com.jasamedika.medifirst2000.dao.*; +import com.jasamedika.medifirst2000.dto.KomponenGajiDto; +import com.jasamedika.medifirst2000.dto.SlipGajiDto; +import com.jasamedika.medifirst2000.dto.SlipGajiKomponenDto; +import com.jasamedika.medifirst2000.entities.*; +import com.jasamedika.medifirst2000.service.SlipGajiService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.util.DateUtil; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; @@ -28,28 +18,14 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.jasamedika.medifirst2000.dao.KomponenGajiDao; -import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao; -import com.jasamedika.medifirst2000.dao.PegawaiDao; -import com.jasamedika.medifirst2000.dao.SlipGajiDao; -import com.jasamedika.medifirst2000.dao.SlipGajiDetailDao; -import com.jasamedika.medifirst2000.dao.SlipGajiKomponenDao; -import com.jasamedika.medifirst2000.dto.KomponenGajiDto; -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.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; -import com.jasamedika.medifirst2000.util.CommonUtil; -import com.jasamedika.medifirst2000.util.DateUtil; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** * @author salmanoe @@ -275,21 +251,37 @@ public class SlipGajiServiceImpl implements SlipGajiService { dto.grade(String.join("/", listNamaGrade)); } { - List> listKomponen = slipGajiKomponenDao.findAll(pegawaiId, start, end); List dtoList = new ArrayList<>(); - listKomponen.forEach(k -> { - SlipGajiKomponenDto.SlipGajiKomponenDtoBuilder kBuilder = SlipGajiKomponenDto.builder(); - kBuilder.id(k.get("id").toString()); - kBuilder.idJenisKomponen(Integer.valueOf(k.get("idJenisKomponen").toString())); - kBuilder.jenisKomponen(k.get("jenisKomponen").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()); + List komponenGajiList = komponenGajiDao.findAll(); + List> listKomponen = slipGajiKomponenDao.findAll(pegawaiId, start, end); + komponenGajiList.forEach(e -> { + Optional> first = listKomponen.stream() + .filter(k -> e.getId().equals(k.get("idKomponen"))).findFirst(); + if (first.isPresent()) { + SlipGajiKomponenDto.SlipGajiKomponenDtoBuilder kBuilder = SlipGajiKomponenDto.builder(); + kBuilder.id(first.get().get("id").toString()); + kBuilder.idJenisKomponen(Integer.valueOf(first.get().get("idJenisKomponen").toString())); + kBuilder.jenisKomponen(first.get().get("jenisKomponen").toString()); + kBuilder.idKomponen(Integer.valueOf(first.get().get("idKomponen").toString())); + kBuilder.namaKomponen(first.get().get("namaKomponen").toString()); + kBuilder.nominal(new BigDecimal(first.get().get("nominal").toString())); + dtoList.add(kBuilder.build()); + } else { + SlipGajiKomponenDto.SlipGajiKomponenDtoBuilder kBuilder = SlipGajiKomponenDto.builder(); + kBuilder.id(null); + kBuilder.idJenisKomponen(e.getJenisKomponen()); + kBuilder.jenisKomponen(e.getJenisKomponen() == 1 ? "Penerimaan" : "Pemotongan"); + kBuilder.idKomponen(e.getId()); + kBuilder.namaKomponen(e.getNamaKomponen()); + kBuilder.nominal(null); + dtoList.add(kBuilder.build()); + } }); - dtoList.stream().sorted(Comparator.comparing(o1 -> o1.getIdKomponen())) - .sorted(Comparator.comparing(o2 -> o2.getIdJenisKomponen())).collect(Collectors.toList()); - dto.komponen(dtoList); + List collectDto = dtoList.stream() + .sorted(Comparator.comparing(SlipGajiKomponenDto::getIdKomponen)) + .sorted(Comparator.comparing(SlipGajiKomponenDto::getIdJenisKomponen)) + .collect(Collectors.toList()); + dto.komponen(collectDto); } } return dto.build();