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);
@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();
@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")
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")
List<Map<String, Object>> findAllByBulan(@Param("start") Date start, @Param("end") Date end);
}

View File

@ -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<SlipGajiDto> dtoList);
void updateDetail(SlipGajiDto dto);
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
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<Map<String, Object>> listPegawai = slipGajiDao.findAllByBulan(start, end);
List<Map<String, Object>> listSlipPegawai = slipGajiDao.findAllByBulan(start, end);
List<Map<String, Object>> allKomponen = komponenGajiDao.getAll();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(new SimpleDateFormat("MMMM yyyy", new Locale("in", "ID")).format(month));
List<Object> listIdKomponen = new ArrayList<>();
List<Object> listKdKomponen = new ArrayList<>();
listIdKomponen.add("ID");
listIdKomponen.add("");
listKdKomponen.add("");
listKdKomponen.add("NAMA PEGAWAI / KOMPONEN");
List<Object> row1 = new ArrayList<>();
List<Object> 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<Integer, Object[]> data = new HashMap<>();
data.put(i++, arrId);
data.put(i++, arrkd);
for (Map<String, Object> pegawai : listPegawai) {
data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("namaLengkap") });
for (Map<String, Object> pegawai : listSlipPegawai) {
data.put(i++, new Object[] { pegawai.get("id"), pegawai.get("idPegawai"), pegawai.get("namaPegawai") });
}
TreeMap<Integer, Object[]> 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";

View File

@ -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<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)
public ResponseEntity<Object> updateDetail(@RequestBody @Valid SlipGajiDto dto) {
try {