Update service reporting cetakan

Perbaikan set json untuk cetakan slip gaji diakses dari luar jaringan internet RSAB
This commit is contained in:
Salman Manoe 2023-05-16 19:31:20 +07:00
parent 6edbcb9f28
commit f258af2c23
4 changed files with 110 additions and 7 deletions

View File

@ -19,6 +19,10 @@ 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 distinct pg.id from SlipGajiKomponen sgk " + "inner join sgk.slipGaji sg "
+ "inner join sg.pegawai pg where sg.bulan between :start and :end")
List<Integer> findPegawaiKomponenByBulan(@Param("start") Date start, @Param("end") Date end);
@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

@ -12,6 +12,7 @@ import com.jasamedika.medifirst2000.dto.KartuPulangPasienDto;
import com.jasamedika.medifirst2000.dto.KwitansiDto;
import com.jasamedika.medifirst2000.dto.LampiranSPPHDto;
import com.jasamedika.medifirst2000.dto.RekapPendapatanHarianPoliklinikDto;
import com.jasamedika.medifirst2000.dto.SlipHeaderDto;
import com.jasamedika.medifirst2000.dto.SuratPesananSementaraDto;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.vo.PasienVO;
@ -133,5 +134,5 @@ public interface ReportService extends BaseVoService<Pasien, PasienVO, Integer>
Map<String, Object> defineSlipGajiDataSource(Integer pegawaiId, Long bulan);
List<Map<String, Object>> allSlipGajiDataSource(Long bulan);
List<SlipHeaderDto> allSlipGajiDataSource(Long bulan);
}

View File

@ -65,6 +65,11 @@ import com.jasamedika.medifirst2000.dto.LampiranSPPHDto;
import com.jasamedika.medifirst2000.dto.RekapPendapatanHarianPoliklinikDto;
import com.jasamedika.medifirst2000.dto.SlipGajiDto;
import com.jasamedika.medifirst2000.dto.SlipGajiKomponenDto;
import com.jasamedika.medifirst2000.dto.SlipHeaderDto;
import com.jasamedika.medifirst2000.dto.SlipJumlahDto;
import com.jasamedika.medifirst2000.dto.SlipPegawaiDto;
import com.jasamedika.medifirst2000.dto.SlipPenerimaanDto;
import com.jasamedika.medifirst2000.dto.SlipPotonganDto;
import com.jasamedika.medifirst2000.dto.SuratPesananSementaraDto;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.JenisLimbahB3Masuk;
@ -3533,16 +3538,108 @@ public class ReportServiceImpl extends BaseVoServiceImpl implements ReportServic
}
@Override
public List<Map<String, Object>> allSlipGajiDataSource(Long bulan) {
List<Map<String, Object>> result = new ArrayList<>();
public List<SlipHeaderDto> allSlipGajiDataSource(Long bulan) {
List<SlipHeaderDto> result = new ArrayList<>();
Date month = new Date(bulan);
Date start = DateUtil.startMonth(month);
Date end = DateUtil.endMonth(month);
List<Integer> listIdPegawai = slipGajiDao.findPegawaiByBulan(start, end);
List<Integer> listIdPegawai = slipGajiDao.findPegawaiKomponenByBulan(start, end);
for (Integer idPegawai : listIdPegawai) {
result.add(this.defineSlipGajiDataSource(idPegawai, bulan));
SlipHeaderDto rsDto = this.setSlipGajiDataSource(idPegawai, bulan);
if (CommonUtil.isNotNullOrEmpty(rsDto))
result.add(rsDto);
}
return result;
}
private SlipHeaderDto setSlipGajiDataSource(Integer pegawaiId, Long bulan) {
SlipHeaderDto.SlipHeaderDtoBuilder resultBuilder = SlipHeaderDto.builder();
Locale indonesia = new Locale("in", "ID");
NumberFormat nf = NumberFormat.getCurrencyInstance(indonesia);
SimpleDateFormat df = new SimpleDateFormat("MMMM-yyyy", indonesia);
SimpleDateFormat tglLahir = new SimpleDateFormat("dd-MM-yyyy", indonesia);
SimpleDateFormat tglPrint = new SimpleDateFormat("dd MMMM yyyy", indonesia);
SlipGajiDto dto = slipGajiService.get(pegawaiId, bulan);
Date tglLahirPegawai = pegawaiDao.findTglLahirById(pegawaiId);
List<SlipGajiKomponenDto> komponenDto = new ArrayList<>();
if (CommonUtil.isNotNullOrEmpty(dto.getKomponen()))
komponenDto = dto.getKomponen();
if (komponenDto.size() > 0) {
SlipPegawaiDto.SlipPegawaiDtoBuilder pegawaiDtoBuilder = SlipPegawaiDto.builder();
pegawaiDtoBuilder.title("Slip Gaji");
pegawaiDtoBuilder.nama(CommonUtil.isNotNullOrEmpty(dto.getNamaPegawai()) ? dto.getNamaPegawai() : "-");
pegawaiDtoBuilder.nip(CommonUtil.isNotNullOrEmpty(dto.getNip()) ? dto.getNip() : "-");
pegawaiDtoBuilder.periode(df.format(new Date(bulan)));
pegawaiDtoBuilder
.tgl_lahir(CommonUtil.isNotNullOrEmpty(tglLahirPegawai) ? tglLahir.format(tglLahirPegawai) : "-");
pegawaiDtoBuilder.jabatan(CommonUtil.isNotNullOrEmpty(dto.getJabatan()) ? dto.getJabatan() : "-");
pegawaiDtoBuilder.unit_kerja(CommonUtil.isNotNullOrEmpty(dto.getJabatan()) ? dto.getJabatan() : "-");
pegawaiDtoBuilder
.sub_unit(CommonUtil.isNotNullOrEmpty(dto.getSubUnitKerja()) ? dto.getSubUnitKerja() : "-");
SlipPenerimaanDto.SlipPenerimaanDtoBuilder penerimaanDtoBuilder = SlipPenerimaanDto.builder();
SlipPotonganDto.SlipPotonganDtoBuilder potonganDtoBuilder = SlipPotonganDto.builder();
SlipJumlahDto.SlipJumlahDtoBuilder jumlahDtoBuilder = SlipJumlahDto.builder();
BigDecimal jumlahPenerimaan = BigDecimal.ZERO;
BigDecimal jumlahPemotongan = BigDecimal.ZERO;
BigDecimal jumlahPenerimaanBersih = BigDecimal.ZERO;
for (SlipGajiKomponenDto k : komponenDto) {
if (Master.JenisKomponenGaji.PENERIMAAN == k.getIdJenisKomponen()) {
jumlahPenerimaan = jumlahPenerimaan.add(new BigDecimal(k.getNominal().doubleValue()));
} else if (Master.JenisKomponenGaji.PEMOTONGAN == k.getIdJenisKomponen()) {
jumlahPemotongan = jumlahPemotongan.add(new BigDecimal(k.getNominal().doubleValue()));
}
if (Master.KomponenGaji.GAJI == k.getIdKomponen()) {
penerimaanDtoBuilder.gaji(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.REMUNERASI_KINERJA == k.getIdKomponen()) {
penerimaanDtoBuilder.remun_kinerja(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.REMUNERASI_TAMBAHAN == k.getIdKomponen()) {
penerimaanDtoBuilder.remun_tambahan(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.FEE_FOR_SERVICE == k.getIdKomponen()) {
penerimaanDtoBuilder.ffs(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.FEE_FOR_ONSITE == k.getIdKomponen()) {
penerimaanDtoBuilder.ffo(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.UANG_MAKAN == k.getIdKomponen()) {
penerimaanDtoBuilder.uang_makan(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.UANG_LEMBUR == k.getIdKomponen()) {
penerimaanDtoBuilder.uang_lembur(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_GAJI == k.getIdKomponen()) {
potonganDtoBuilder.pph_gaji(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_REMUNERASI == k.getIdKomponen()) {
potonganDtoBuilder.pph_remun(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_FEE_FOR_SERVICE == k.getIdKomponen()) {
potonganDtoBuilder.pph_ffs(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_FEE_FOR_ONSITE == k.getIdKomponen()) {
potonganDtoBuilder.pph_ffo(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_UANG_MAKAN == k.getIdKomponen()) {
potonganDtoBuilder.pph_um(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PPH_UANG_LEMBUR == k.getIdKomponen()) {
potonganDtoBuilder.pph_ul(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.IURAN_WAJIB_KOPERASI == k.getIdKomponen()) {
potonganDtoBuilder.iuran_koperasi(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.PINJAMAN_KOPERASI == k.getIdKomponen()) {
potonganDtoBuilder.pinjam_koperasi(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.BIAYA_OBAT_ALKES == k.getIdKomponen()) {
potonganDtoBuilder.biaya_obat(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.BIAYA_RAWAT_INAP == k.getIdKomponen()) {
potonganDtoBuilder.biaya_ri(nf.format(k.getNominal()));
} else if (Master.KomponenGaji.BIAYA_RAWAT_JALAN == k.getIdKomponen()) {
potonganDtoBuilder.biaya_rj(nf.format(k.getNominal()));
}
}
jumlahDtoBuilder.jumlah_gross(nf.format(jumlahPenerimaan));
jumlahDtoBuilder.jumlah_potongan(nf.format(jumlahPemotongan));
jumlahPenerimaanBersih = jumlahPenerimaan.subtract(new BigDecimal(jumlahPemotongan.doubleValue()));
jumlahDtoBuilder.jumlah_nett(nf.format(jumlahPenerimaanBersih));
resultBuilder.pegawaiDto(pegawaiDtoBuilder.build());
resultBuilder.penerimaanDto(penerimaanDtoBuilder.build());
resultBuilder.potonganDto(potonganDtoBuilder.build());
resultBuilder.jumlahDto(jumlahDtoBuilder.build());
resultBuilder.print("dicetak melalui aplikasi SMART pada " + tglPrint.format(new Date()));
}
SlipHeaderDto result = resultBuilder.build();
if (CommonUtil.isNullOrEmpty(result.getPegawai())) {
return null;
}
return result;
}
}

View File

@ -95,6 +95,7 @@ import com.jasamedika.medifirst2000.dto.PengkajianAwalPasienRawatJalanAnakDto;
import com.jasamedika.medifirst2000.dto.PerjanjianPasienDto;
import com.jasamedika.medifirst2000.dto.ReportingPegawaiDto;
import com.jasamedika.medifirst2000.dto.SensusHarianDto;
import com.jasamedika.medifirst2000.dto.SlipHeaderDto;
import com.jasamedika.medifirst2000.dto.SuratPesananSementaraDto;
import com.jasamedika.medifirst2000.entities.Jabatan;
import com.jasamedika.medifirst2000.entities.LoginUser;
@ -7856,10 +7857,10 @@ public class ReportingController extends LocaleController<RegistrasiPelayananVO>
}
@RequestMapping(value = "/slip-gaji/json", method = RequestMethod.GET)
public ResponseEntity<List<Map<String, Object>>> jsonSlipGaji(HttpServletRequest request,
public ResponseEntity<List<SlipHeaderDto>> jsonSlipGaji(HttpServletRequest request,
@RequestParam(value = "bulan", required = true) Long bulan) {
try {
List<Map<String, Object>> result = reportService.allSlipGajiDataSource(bulan);
List<SlipHeaderDto> result = reportService.allSlipGajiDataSource(bulan);
mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS,
getMessage(MessageResource.LABEL_SUCCESS, request));
return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage);