From 3c4643135255db5f07caac5a0410c027cbe544be Mon Sep 17 00:00:00 2001 From: salmanoe Date: Wed, 1 Feb 2023 17:47:12 +0700 Subject: [PATCH] Update SlipGajiService Pembuatan service unggah daftar slip gaji pegawai dari excel template --- .../dao/MapPegawaiJabatanToUnitKerjaDao.java | 3 +- .../medifirst2000/dao/SlipGajiDao.java | 2 +- .../service/SlipGajiService.java | 3 ++ .../service/impl/SlipGajiServiceImpl.java | 42 ++++++++++++------- .../controller/SlipGajiController.java | 12 ++++++ 5 files changed, 44 insertions(+), 18 deletions(-) diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java index 2a95b329..14e65e70 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/MapPegawaiJabatanToUnitKerjaDao.java @@ -353,7 +353,8 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository 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 " + "and pg.namaLengkap <> '-'") + + "where model.statusEnabled is true " + "and pg.statusEnabled is true " + "and pg.namaLengkap <> '-' " + + "and lower(pg.namaLengkap) not like '%administrator%'") List getAll(); @Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) " diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java index 124ac84c..59223757 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/SlipGajiDao.java @@ -19,7 +19,7 @@ public interface SlipGajiDao extends JpaRepository { @Query("select pg.id from SlipGaji sg inner join sg.pegawai pg where sg.bulan between :start and :end") List findPegawaiByBulan(@Param("start") Date start, @Param("end") Date end); - @Query("select new Map(pg.id as id,pg.namaLengkap as namaLengkap) " + "from SlipGaji sg " + @Query("select new Map(sg.id as id,pg.id as idPegawai,pg.namaLengkap as namaPegawai) " + "from SlipGaji sg " + "inner join sg.pegawai pg " + "where sg.bulan between :start and :end " + "order by pg.namaLengkap") List> findAllByBulan(@Param("start") Date start, @Param("end") Date end); } 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 c6ec84ca..f3700f88 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 @@ -1,6 +1,7 @@ package com.jasamedika.medifirst2000.service; import java.io.IOException; +import java.util.List; import com.jasamedika.medifirst2000.dto.SlipGajiDto; @@ -13,6 +14,8 @@ public interface SlipGajiService { void save(SlipGajiDto dto); + void save(List dtoList); + void updateDetail(SlipGajiDto dto); SlipGajiDto get(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 e3f29cf9..af70c360 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 @@ -184,6 +184,13 @@ public class SlipGajiServiceImpl implements SlipGajiService { } } + @Override + public void save(List dtoList) { + dtoList.forEach(dto -> { + this.save(dto); + }); + } + @Override public void updateDetail(SlipGajiDto dto) { { @@ -265,30 +272,32 @@ public class SlipGajiServiceImpl implements SlipGajiService { Date month = new Date(bulan); Date start = DateUtil.startMonth(month); Date end = DateUtil.endMonth(month); - List> listPegawai = slipGajiDao.findAllByBulan(start, end); + List> listSlipPegawai = slipGajiDao.findAllByBulan(start, end); List> allKomponen = komponenGajiDao.getAll(); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month)); - List listIdKomponen = new ArrayList<>(); - List listKdKomponen = new ArrayList<>(); - listIdKomponen.add("ID"); - listIdKomponen.add(""); - listKdKomponen.add(""); - listKdKomponen.add("NAMA PEGAWAI / KOMPONEN"); + List row1 = new ArrayList<>(); + List row2 = new ArrayList<>(); + row1.add("ID"); + row1.add(""); + row1.add(""); + row2.add(""); + row2.add("ID PEGAWAI"); + row2.add("NAMA PEGAWAI / KOMPONEN"); allKomponen.forEach(k -> { - listIdKomponen.add(k.get("id")); - listKdKomponen.add(k.get("namaKomponen")); + row1.add(k.get("id")); + row2.add(k.get("namaKomponen")); }); - Object[] arrId = new Object[listIdKomponen.size()]; - Object[] arrkd = new Object[listKdKomponen.size()]; - listIdKomponen.toArray(arrId); - listKdKomponen.toArray(arrkd); + Object[] arrId = new Object[row1.size()]; + Object[] arrkd = new Object[row2.size()]; + row1.toArray(arrId); + row2.toArray(arrkd); Integer i = 1; Map data = new HashMap<>(); data.put(i++, arrId); data.put(i++, arrkd); - for (Map pegawai : listPegawai) { - data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("namaLengkap") }); + for (Map pegawai : listSlipPegawai) { + data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("idPegawai"), pegawai.get("namaPegawai") }); } TreeMap sorted = new TreeMap<>(); sorted.putAll(data); @@ -308,11 +317,12 @@ public class SlipGajiServiceImpl implements SlipGajiService { } sheet.getRow(0).setZeroHeight(true); sheet.setColumnHidden(0, true); + sheet.setColumnHidden(1, true); int colnums = sheet.getRow(0).getLastCellNum(); for (int j = 0; j < colnums; j++) { sheet.autoSizeColumn(j); } - sheet.createFreezePane(2, 2); + sheet.createFreezePane(3, 2); DateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss"); String timestampToString = df.format(new Date()); String filename = "Template_Slip_Gaji_" + timestampToString + ".xls"; diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java index a2c8a812..774ec623 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/SlipGajiController.java @@ -1,6 +1,7 @@ package com.jasamedika.medifirst2000.controller; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -55,6 +56,17 @@ public class SlipGajiController { } } + @RequestMapping(value = "/unggah", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity save(@RequestBody @Valid List dtoList) { + try { + slipGajiService.save(dtoList); + return new ResponseEntity<>(true, HttpStatus.CREATED); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + @RequestMapping(value = "/detail/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity updateDetail(@RequestBody @Valid SlipGajiDto dto) { try {