Update service slip gaji
Cicilan perbaikan performance saat unggah slip gaji
This commit is contained in:
parent
f2b3461dd1
commit
1b73527d22
@ -35,8 +35,6 @@ public interface SlipGajiKomponenDao extends JpaRepository<SlipGajiKomponen, Str
|
||||
SlipGajiKomponen findBySlipGajiAndKomponen(@Param("idSlipGaji") String idSlipGaji,
|
||||
@Param("idKomponen") Integer idKomponen);
|
||||
|
||||
@Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id in (:listIdSlipGaji) "
|
||||
+ "and sgk.komponen.id = :idKomponen")
|
||||
List<SlipGajiKomponen> findAllByKomponen(@Param("listIdSlipGaji") List<String> listIdSlipGaji,
|
||||
@Param("idKomponen") Integer idKomponen);
|
||||
@Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id in (:listIdSlipGaji)")
|
||||
List<SlipGajiKomponen> findAllBySlipGaji(@Param("listIdSlipGaji") List<String> listIdSlipGaji);
|
||||
}
|
||||
|
||||
@ -180,9 +180,93 @@ public class SlipGajiServiceImpl implements SlipGajiService {
|
||||
|
||||
@Override
|
||||
public void save(List<SlipGajiDto> dtoList) {
|
||||
dtoList.forEach(dto -> {
|
||||
this.save(dto);
|
||||
});
|
||||
List<SlipGaji> listSlip = new ArrayList<>();
|
||||
List<SlipGajiDetail> listDetail = new ArrayList<>();
|
||||
List<SlipGajiKomponen> listKomponen = new ArrayList<>();
|
||||
Optional<SlipGajiDto> first = dtoList.stream().findFirst();
|
||||
if (first.isPresent()) {
|
||||
Date month = new Date(first.get().getBulan());
|
||||
Date start = DateUtil.startMonth(month);
|
||||
Date end = DateUtil.endMonth(month);
|
||||
List<SlipGaji> slipByBulan = slipGajiDao.findByBulan(start, end);
|
||||
List<MapPegawaiJabatanToUnitKerja> allJabatan = mappingJabatanDao.findAllEnabled();
|
||||
List<String> listExistIdSlip = slipByBulan.stream().map(SlipGaji::getId).collect(Collectors.toList());
|
||||
{
|
||||
List<SlipGajiDto> collectNew = dtoList.stream().filter(d -> !listExistIdSlip.contains(d.getId()))
|
||||
.collect(Collectors.toList());
|
||||
collectNew.forEach(s -> {
|
||||
SlipGaji.SlipGajiBuilder slipGajiBuilder = SlipGaji.builder();
|
||||
slipGajiBuilder.id(s.getId());
|
||||
Pegawai pegawai = new Pegawai();
|
||||
pegawai.setId(s.getIdPegawai());
|
||||
slipGajiBuilder.pegawai(pegawai);
|
||||
slipGajiBuilder.bulan(month);
|
||||
SlipGaji slipGaji = slipGajiBuilder.build();
|
||||
listSlip.add(slipGaji);
|
||||
List<MapPegawaiJabatanToUnitKerja> collectJabatan = allJabatan.stream()
|
||||
.filter(j -> j.getPegawaiId().equals(s.getIdPegawai())).collect(Collectors.toList());
|
||||
collectJabatan.forEach(j -> {
|
||||
SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder();
|
||||
detail.slipGaji(slipGaji);
|
||||
if (CommonUtil.isNotNullOrEmpty(j.getJabatanId())) {
|
||||
Jabatan jabatan = new Jabatan();
|
||||
jabatan.setId(j.getJabatanId());
|
||||
detail.jabatan(jabatan);
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(j.getUnitKerjaPegawaiId())) {
|
||||
UnitKerjaPegawai unitKerja = new UnitKerjaPegawai();
|
||||
unitKerja.setId(j.getUnitKerjaPegawaiId());
|
||||
detail.unitKerja(unitKerja);
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(j.getSubUnitKerjaPegawaiId())) {
|
||||
SubUnitKerjaPegawai subUnit = new SubUnitKerjaPegawai();
|
||||
subUnit.setId(j.getSubUnitKerjaPegawaiId());
|
||||
detail.subUnitKerja(subUnit);
|
||||
}
|
||||
if (CommonUtil.isNotNullOrEmpty(j.getGradeId())) {
|
||||
NilaiKelompokJabatan grade = new NilaiKelompokJabatan();
|
||||
grade.setId(j.getGradeId());
|
||||
detail.grade(grade);
|
||||
}
|
||||
listDetail.add(detail.build());
|
||||
});
|
||||
List<SlipGajiKomponenDto> komponen = s.getKomponen();
|
||||
komponen.stream().filter(k -> CommonUtil.isNotNullOrEmpty(k.getNominal())).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(slipGaji);
|
||||
listKomponen.add(kBuilder.build());
|
||||
});
|
||||
});
|
||||
}
|
||||
{
|
||||
List<SlipGajiDto> collectEdit = dtoList.stream().filter(d -> listExistIdSlip.contains(d.getId()))
|
||||
.collect(Collectors.toList());
|
||||
List<SlipGajiKomponen> allKomponen = slipGajiKomponenDao.findAllBySlipGaji(listExistIdSlip);
|
||||
collectEdit.forEach(e -> {
|
||||
SlipGaji.SlipGajiBuilder slipGajiBuilder = SlipGaji.builder();
|
||||
slipGajiBuilder.id(e.getId());
|
||||
Pegawai pegawai = new Pegawai();
|
||||
pegawai.setId(e.getIdPegawai());
|
||||
slipGajiBuilder.pegawai(pegawai);
|
||||
slipGajiBuilder.bulan(month);
|
||||
SlipGaji slipGaji = slipGajiBuilder.build();
|
||||
listSlip.add(slipGaji);
|
||||
List<SlipGajiKomponenDto> komponen = e.getKomponen();
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
});
|
||||
}
|
||||
slipGajiDao.save(listSlip);
|
||||
slipGajiDetailDao.save(listDetail);
|
||||
slipGajiKomponenDao.save(listKomponen);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user