Update SlipGajiServiceImpl.java

Perbaikan tampilkan semua komponen untuk front-end saat edit pengaturan data penghasilan
This commit is contained in:
Salman Manoe 2023-06-21 14:49:31 +07:00
parent 7ba7884986
commit 5691a5d22e

View File

@ -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<Map<String, Object>> listKomponen = slipGajiKomponenDao.findAll(pegawaiId, start, end);
List<SlipGajiKomponenDto> 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<KomponenGaji> komponenGajiList = komponenGajiDao.findAll();
List<Map<String, Object>> listKomponen = slipGajiKomponenDao.findAll(pegawaiId, start, end);
komponenGajiList.forEach(e -> {
Optional<Map<String, Object>> 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<SlipGajiKomponenDto> collectDto = dtoList.stream()
.sorted(Comparator.comparing(SlipGajiKomponenDto::getIdKomponen))
.sorted(Comparator.comparing(SlipGajiKomponenDto::getIdJenisKomponen))
.collect(Collectors.toList());
dto.komponen(collectDto);
}
}
return dto.build();