Update SlipGajiService

Pembuatan service initialisasi data untuk download template slip gaji
This commit is contained in:
salmanoe 2023-01-27 08:26:00 +07:00
parent e4e5e0dabb
commit b2210f374c
5 changed files with 92 additions and 24 deletions

View File

@ -352,6 +352,10 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
+ "and model.pegawaiId = :pegawaiId")
List<MapPegawaiJabatanToUnitKerja> findByPegawaiId(@Param("pegawaiId") Integer pegawaiId);
@Query("select model from MapPegawaiJabatanToUnitKerja model " + "inner join model.pegawai pg "
+ "where model.statusEnabled is true " + "and pg.statusEnabled is true")
List<MapPegawaiJabatanToUnitKerja> findAll();
@Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) "
+ "from MapPegawaiJabatanToUnitKerja mapp "
+ "where mapp.statusEnabled is true and mapp.jabatanId is not null and mapp.unitKerjaPegawaiId is not null and mapp.subUnitKerjaPegawaiId is not null "

View File

@ -1,7 +1,8 @@
package com.jasamedika.medifirst2000.dao;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
@ -12,4 +13,7 @@ import com.jasamedika.medifirst2000.entities.SlipGaji;
public interface SlipGajiDao extends JpaRepository<SlipGaji, String> {
@Query("select sg from SlipGaji sg where sg.pegawai.id = :pegawaiId")
Optional<SlipGaji> findByPegawai(@Param("pegawaiId") Integer pegawaiId);
@Query("select pg.id from SlipGaji sg inner join sg.pegawai pg where sg.bulan between :start and :end")
List<Integer> findPegawaiByBulan(@Param("start") Date start, @Param("end") Date end);
}

View File

@ -7,6 +7,8 @@ import com.jasamedika.medifirst2000.dto.SlipGajiDto;
* @since Jan 20, 2023
*/
public interface SlipGajiService {
void init();
void save(SlipGajiDto dto);
SlipGajiDto get(Integer pegawaiId);

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.service.impl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@ -10,24 +11,26 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jasamedika.medifirst2000.dao.JabatanDao;
import com.jasamedika.medifirst2000.dao.MapPegawaiJabatanToUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.NilaiKelompokJabatanDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.PenerimaanGajiDao;
import com.jasamedika.medifirst2000.dao.PenguranganGajiDao;
import com.jasamedika.medifirst2000.dao.SlipGajiDao;
import com.jasamedika.medifirst2000.dao.SlipGajiDetailDao;
import com.jasamedika.medifirst2000.dao.SubUnitKerjaDao;
import com.jasamedika.medifirst2000.dao.UnitKerjaDao;
import com.jasamedika.medifirst2000.dto.SlipGajiDto;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.MapPegawaiJabatanToUnitKerja;
import com.jasamedika.medifirst2000.entities.NilaiKelompokJabatan;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.PenerimaanGaji;
import com.jasamedika.medifirst2000.entities.PenguranganGaji;
import com.jasamedika.medifirst2000.entities.SlipGaji;
import com.jasamedika.medifirst2000.entities.SlipGajiDetail;
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;
/**
* @author salmanoe
@ -54,17 +57,69 @@ public class SlipGajiServiceImpl implements SlipGajiService {
@Autowired
private MapPegawaiJabatanToUnitKerjaDao mappingJabatanDao;
@Autowired
private JabatanDao jabatanDao;
@Autowired
private UnitKerjaDao unitKerjaDao;
@Autowired
private SubUnitKerjaDao subUnitKerjaDao;
@Autowired
private NilaiKelompokJabatanDao gradeDao;
@Override
public void init() {
Date now = new Date();
Date startMonth = DateUtil.startMonth(now);
Date endMonth = DateUtil.endMonth(now);
List<Integer> listIdPegawaiSlip = slipGajiDao.findPegawaiByBulan(startMonth, endMonth);
List<MapPegawaiJabatanToUnitKerja> listJabatan = mappingJabatanDao.findAll();
listJabatan = listJabatan.stream().filter(j -> !listIdPegawaiSlip.contains(j.getPegawaiId()))
.sorted(Comparator.comparingInt(MapPegawaiJabatanToUnitKerja::getPegawaiId))
.collect(Collectors.toList());
List<Integer> listIdPegawai = new ArrayList<>();
listJabatan.forEach(j -> {
if (!listIdPegawai.contains(j.getPegawaiId()))
listIdPegawai.add(j.getPegawaiId());
});
List<SlipGaji> listSlipGaji = new ArrayList<>();
List<SlipGajiDetail> listSlipGajiDetail = new ArrayList<>();
for (Integer idPegawai : listIdPegawai) {
SlipGaji.SlipGajiBuilder b = SlipGaji.builder();
for (MapPegawaiJabatanToUnitKerja j : listJabatan) {
if (idPegawai.equals(j.getPegawaiId())) {
Pegawai pegawai = new Pegawai();
pegawai.setId(j.getPegawaiId());
b.pegawai(pegawai);
b.bulan(now);
break;
}
}
SlipGaji slipGaji = b.build();
listSlipGaji.add(slipGaji);
if (CommonUtil.isNotNullOrEmpty(slipGaji)) {
for (MapPegawaiJabatanToUnitKerja j : listJabatan) {
if (idPegawai.equals(j.getPegawaiId())) {
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 subunitKerja = new SubUnitKerjaPegawai();
subunitKerja.setId(j.getSubUnitKerjaPegawaiId());
detail.subUnitKerja(subunitKerja);
}
if (CommonUtil.isNotNullOrEmpty(j.getGradeId())) {
NilaiKelompokJabatan grade = new NilaiKelompokJabatan();
grade.setId(j.getGradeId());
detail.grade(grade);
}
listSlipGajiDetail.add(detail.build());
}
}
}
slipGajiDao.save(listSlipGaji);
slipGajiDetailDao.save(listSlipGajiDetail);
}
}
@Override
public void save(SlipGajiDto dto) {
@ -79,14 +134,6 @@ public class SlipGajiServiceImpl implements SlipGajiService {
listMapping.forEach(j -> {
SlipGajiDetail.SlipGajiDetailBuilder detail = SlipGajiDetail.builder();
detail.slipGaji(savedSlip);
// if (CommonUtil.isNotNullOrEmpty(j.getJabatanId()))
// detail.jabatan(jabatanDao.findOne(j.getJabatanId()));
// if (CommonUtil.isNotNullOrEmpty(j.getUnitKerjaPegawaiId()))
// detail.unitKerja(unitKerjaDao.findOne(j.getUnitKerjaPegawaiId()));
// if (CommonUtil.isNotNullOrEmpty(j.getSubUnitKerjaPegawaiId()))
// detail.subUnitKerja(subUnitKerjaDao.findOne(j.getSubUnitKerjaPegawaiId()));
// if (CommonUtil.isNotNullOrEmpty(j.getGradeId()))
// detail.grade(gradeDao.findOne(j.getGradeId()));
if (CommonUtil.isNotNullOrEmpty(j.getJabatan()))
detail.jabatan(j.getJabatan());
if (CommonUtil.isNotNullOrEmpty(j.getUnitKerjaPegawai()))

View File

@ -21,6 +21,17 @@ public class SlipGajiController {
@Autowired
private SlipGajiService slipGajiService;
@RequestMapping(value = "/init", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> init() {
try {
slipGajiService.init();
return new ResponseEntity<>(true, HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> save(@RequestBody @Valid SlipGajiDto dto) {
try {