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,
|
SlipGajiKomponen findBySlipGajiAndKomponen(@Param("idSlipGaji") String idSlipGaji,
|
||||||
@Param("idKomponen") Integer idKomponen);
|
@Param("idKomponen") Integer idKomponen);
|
||||||
|
|
||||||
@Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id in (:listIdSlipGaji) "
|
@Query("select sgk from SlipGajiKomponen sgk " + "where sgk.slipGaji.id in (:listIdSlipGaji)")
|
||||||
+ "and sgk.komponen.id = :idKomponen")
|
List<SlipGajiKomponen> findAllBySlipGaji(@Param("listIdSlipGaji") List<String> listIdSlipGaji);
|
||||||
List<SlipGajiKomponen> findAllByKomponen(@Param("listIdSlipGaji") List<String> listIdSlipGaji,
|
|
||||||
@Param("idKomponen") Integer idKomponen);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -180,9 +180,93 @@ public class SlipGajiServiceImpl implements SlipGajiService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save(List<SlipGajiDto> dtoList) {
|
public void save(List<SlipGajiDto> dtoList) {
|
||||||
dtoList.forEach(dto -> {
|
List<SlipGaji> listSlip = new ArrayList<>();
|
||||||
this.save(dto);
|
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
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user