Update SlipGajiService

Pembuatan service unggah daftar slip gaji pegawai dari excel template
This commit is contained in:
salmanoe 2023-02-01 17:47:12 +07:00
parent f1ea106955
commit 3c46431352
5 changed files with 44 additions and 18 deletions

View File

@ -353,7 +353,8 @@ public interface MapPegawaiJabatanToUnitKerjaDao extends CrudRepository<MapPegaw
List<MapPegawaiJabatanToUnitKerja> findByPegawaiId(@Param("pegawaiId") Integer pegawaiId); List<MapPegawaiJabatanToUnitKerja> findByPegawaiId(@Param("pegawaiId") Integer pegawaiId);
@Query("select model from MapPegawaiJabatanToUnitKerja model " + "inner join model.pegawai pg " @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<MapPegawaiJabatanToUnitKerja> getAll(); List<MapPegawaiJabatanToUnitKerja> getAll();
@Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) " @Query("select new Map(mapp.id as idMapping, mapp.pegawaiId as idPegawai, mapp.atasanLangsungId as idAtasan, mapp.pejabatPenilaiId as idPenilai) "

View File

@ -19,7 +19,7 @@ public interface SlipGajiDao extends JpaRepository<SlipGaji, String> {
@Query("select pg.id from SlipGaji sg inner join sg.pegawai pg where sg.bulan between :start and :end") @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); List<Integer> 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") + "inner join sg.pegawai pg " + "where sg.bulan between :start and :end " + "order by pg.namaLengkap")
List<Map<String, Object>> findAllByBulan(@Param("start") Date start, @Param("end") Date end); List<Map<String, Object>> findAllByBulan(@Param("start") Date start, @Param("end") Date end);
} }

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.service; package com.jasamedika.medifirst2000.service;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import com.jasamedika.medifirst2000.dto.SlipGajiDto; import com.jasamedika.medifirst2000.dto.SlipGajiDto;
@ -13,6 +14,8 @@ public interface SlipGajiService {
void save(SlipGajiDto dto); void save(SlipGajiDto dto);
void save(List<SlipGajiDto> dtoList);
void updateDetail(SlipGajiDto dto); void updateDetail(SlipGajiDto dto);
SlipGajiDto get(Integer pegawaiId, Long bulan); SlipGajiDto get(Integer pegawaiId, Long bulan);

View File

@ -184,6 +184,13 @@ public class SlipGajiServiceImpl implements SlipGajiService {
} }
} }
@Override
public void save(List<SlipGajiDto> dtoList) {
dtoList.forEach(dto -> {
this.save(dto);
});
}
@Override @Override
public void updateDetail(SlipGajiDto dto) { public void updateDetail(SlipGajiDto dto) {
{ {
@ -265,30 +272,32 @@ public class SlipGajiServiceImpl implements SlipGajiService {
Date month = new Date(bulan); Date month = new Date(bulan);
Date start = DateUtil.startMonth(month); Date start = DateUtil.startMonth(month);
Date end = DateUtil.endMonth(month); Date end = DateUtil.endMonth(month);
List<Map<String, Object>> listPegawai = slipGajiDao.findAllByBulan(start, end); List<Map<String, Object>> listSlipPegawai = slipGajiDao.findAllByBulan(start, end);
List<Map<String, Object>> allKomponen = komponenGajiDao.getAll(); List<Map<String, Object>> allKomponen = komponenGajiDao.getAll();
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month)); HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month));
List<Object> listIdKomponen = new ArrayList<>(); List<Object> row1 = new ArrayList<>();
List<Object> listKdKomponen = new ArrayList<>(); List<Object> row2 = new ArrayList<>();
listIdKomponen.add("ID"); row1.add("ID");
listIdKomponen.add(""); row1.add("");
listKdKomponen.add(""); row1.add("");
listKdKomponen.add("NAMA PEGAWAI / KOMPONEN"); row2.add("");
row2.add("ID PEGAWAI");
row2.add("NAMA PEGAWAI / KOMPONEN");
allKomponen.forEach(k -> { allKomponen.forEach(k -> {
listIdKomponen.add(k.get("id")); row1.add(k.get("id"));
listKdKomponen.add(k.get("namaKomponen")); row2.add(k.get("namaKomponen"));
}); });
Object[] arrId = new Object[listIdKomponen.size()]; Object[] arrId = new Object[row1.size()];
Object[] arrkd = new Object[listKdKomponen.size()]; Object[] arrkd = new Object[row2.size()];
listIdKomponen.toArray(arrId); row1.toArray(arrId);
listKdKomponen.toArray(arrkd); row2.toArray(arrkd);
Integer i = 1; Integer i = 1;
Map<Integer, Object[]> data = new HashMap<>(); Map<Integer, Object[]> data = new HashMap<>();
data.put(i++, arrId); data.put(i++, arrId);
data.put(i++, arrkd); data.put(i++, arrkd);
for (Map<String, Object> pegawai : listPegawai) { for (Map<String, Object> pegawai : listSlipPegawai) {
data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("namaLengkap") }); data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("idPegawai"), pegawai.get("namaPegawai") });
} }
TreeMap<Integer, Object[]> sorted = new TreeMap<>(); TreeMap<Integer, Object[]> sorted = new TreeMap<>();
sorted.putAll(data); sorted.putAll(data);
@ -308,11 +317,12 @@ public class SlipGajiServiceImpl implements SlipGajiService {
} }
sheet.getRow(0).setZeroHeight(true); sheet.getRow(0).setZeroHeight(true);
sheet.setColumnHidden(0, true); sheet.setColumnHidden(0, true);
sheet.setColumnHidden(1, true);
int colnums = sheet.getRow(0).getLastCellNum(); int colnums = sheet.getRow(0).getLastCellNum();
for (int j = 0; j < colnums; j++) { for (int j = 0; j < colnums; j++) {
sheet.autoSizeColumn(j); sheet.autoSizeColumn(j);
} }
sheet.createFreezePane(2, 2); sheet.createFreezePane(3, 2);
DateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss"); DateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");
String timestampToString = df.format(new Date()); String timestampToString = df.format(new Date());
String filename = "Template_Slip_Gaji_" + timestampToString + ".xls"; String filename = "Template_Slip_Gaji_" + timestampToString + ".xls";

View File

@ -1,6 +1,7 @@
package com.jasamedika.medifirst2000.controller; package com.jasamedika.medifirst2000.controller;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest; 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<Object> save(@RequestBody @Valid List<SlipGajiDto> 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) @RequestMapping(value = "/detail/update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> updateDetail(@RequestBody @Valid SlipGajiDto dto) { public ResponseEntity<Object> updateDetail(@RequestBody @Valid SlipGajiDto dto) {
try { try {