From 13f28efbafb4848ba2b436882d905451bb13ec3e Mon Sep 17 00:00:00 2001 From: Salman Manoe Date: Thu, 27 Apr 2023 17:46:46 +0700 Subject: [PATCH] Update service slip gaji Penyesuaian generate excel untuk update --- .../dao/SlipGajiKomponenDao.java | 5 ++ .../service/SlipGajiService.java | 5 +- .../service/impl/SlipGajiServiceImpl.java | 48 ++++++++++++++++++- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java index 7a116a80..a7a04e5d 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiKomponenDao.java @@ -25,6 +25,11 @@ public interface SlipGajiKomponenDao extends JpaRepository> findAll(@Param("pegawaiId") Integer pegawaiId, @Param("start") Date start, @Param("end") Date end); + @Query("select new Map(sgk.id as id," + "pg.id as idPegawai," + "mk.id as idKomponen," + "sgk.nominal as nominal) " + + "from SlipGajiKomponen sgk " + "inner join sgk.slipGaji sg " + "inner join sgk.komponen mk " + + "inner join sg.pegawai pg " + "where sg.bulan between :start and :end " + "order by pg.id, mk.id") + List> findAll(@Param("start") Date start, @Param("end") Date end); + @Query("select sgk from SlipGajiKomponen sgk where sgk.slipGaji.id in (:listId)") List findBySlipId(@Param("listId") List listId); } diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java index 0eb31c3c..00f0cda1 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/SlipGajiService.java @@ -2,6 +2,7 @@ package com.jasamedika.medifirst2000.service; import java.io.IOException; import java.util.List; +import java.util.Map; import com.jasamedika.medifirst2000.dto.SlipGajiDto; @@ -15,7 +16,7 @@ public interface SlipGajiService { void save(SlipGajiDto dto); void save(List dtoList); - + void delete(List dtoList); void updateDetail(SlipGajiDto dto); @@ -23,4 +24,6 @@ public interface SlipGajiService { SlipGajiDto get(Integer pegawaiId, Long bulan); String writeExcel(Long bulan) throws IOException; + + Map previewPdf(Integer pegawaiId, Long bulan); } 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 83de711c..9f6f3985 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 @@ -23,6 +23,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -298,6 +299,22 @@ public class SlipGajiServiceImpl implements SlipGajiService { Date end = DateUtil.endMonth(month); List> listSlipPegawai = slipGajiDao.findAllByBulan(start, end); List> allKomponen = komponenGajiDao.getAll(); + List> listAllKomponen = new ArrayList<>(); + { + List> listSlipKomponen = slipGajiKomponenDao.findAll(start, end); + for (Map p : listSlipPegawai) { + for (Map k : allKomponen) { + p.put(k.get("id").toString(), null); + for (Map s : listSlipKomponen) { + if (p.get("idPegawai").equals(s.get("idPegawai")) && k.get("id").equals(s.get("idKomponen"))) { + p.put(k.get("id").toString(), s.get("nominal")); + break; + } + } + } + listAllKomponen.add(p); + } + } HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month)); List row1 = new ArrayList<>(); @@ -320,8 +337,12 @@ public class SlipGajiServiceImpl implements SlipGajiService { Map data = new HashMap<>(); data.put(i++, arrId); data.put(i++, arrkd); - for (Map pegawai : listSlipPegawai) { - data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("idPegawai"), pegawai.get("namaPegawai") }); + for (Map d : listAllKomponen) { + data.put(i++, + new Object[] { d.get("id"), d.get("idPegawai"), d.get("namaPegawai"), d.get("1"), d.get("2"), + d.get("3"), d.get("4"), d.get("5"), d.get("6"), d.get("7"), d.get("8"), d.get("9"), + d.get("10"), d.get("11"), d.get("12"), d.get("13"), d.get("14"), d.get("15"), d.get("16"), + d.get("17"), d.get("18") }); } TreeMap sorted = new TreeMap<>(); sorted.putAll(data); @@ -337,6 +358,8 @@ public class SlipGajiServiceImpl implements SlipGajiService { cell.setCellValue((String) obj); else if (obj instanceof Integer) cell.setCellValue((Integer) obj); + else if (obj instanceof BigDecimal) + cell.setCellValue(((BigDecimal) obj).doubleValue()); } } sheet.getRow(0).setZeroHeight(true); @@ -375,4 +398,25 @@ public class SlipGajiServiceImpl implements SlipGajiService { } return absoluteFilePath; } + + @Override + public Map previewPdf(Integer pegawaiId, Long bulan) { + SlipGajiDto dto = this.get(pegawaiId, bulan); + Map result = new HashMap<>(); + result.put("namaPegawai", dto.getNamaPegawai()); + result.put("nip", dto.getNip()); + result.put("jabatan", dto.getJabatan()); + result.put("unitKerja", dto.getUnitKerja()); + result.put("subUnitKerja", dto.getSubUnitKerja()); + List komponenDto = dto.getKomponen(); + List listMasterKomponen = komponenGajiDao.findAll(new Sort("id")); + for (KomponenGaji m : listMasterKomponen) { + for (SlipGajiKomponenDto k : komponenDto) { + if (m.getId().equals(k.getIdKomponen())) { + + } + } + } + return result; + } }