116 lines
6.1 KiB
Java
116 lines
6.1 KiB
Java
package com.iconplus.smartproc.service.approval;
|
|
|
|
import com.iconplus.smartproc.exception.BusinessException;
|
|
import com.iconplus.smartproc.helper.service.BaseService;
|
|
import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen;
|
|
import com.iconplus.smartproc.model.projection.DrpRekomendasiView;
|
|
import com.iconplus.smartproc.model.request.DrpApprovalRequest;
|
|
import com.iconplus.smartproc.model.response.DrpApprovalResponse;
|
|
import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse;
|
|
import com.iconplus.smartproc.model.response.DrpPengadaanResponse;
|
|
import com.iconplus.smartproc.model.response.DrpRekomendasiResponse;
|
|
import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository;
|
|
import com.iconplus.smartproc.repository.DrpPengadaanRepository;
|
|
import com.iconplus.smartproc.repository.DrpRekomendasiRepository;
|
|
import com.iconplus.smartproc.service.drppengadaan.GetDrpPengadaanService;
|
|
import com.iconplus.smartproc.util.Constants;
|
|
import org.apache.commons.lang3.BooleanUtils;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class GetApprovalService implements BaseService<DrpApprovalRequest, DrpApprovalResponse> {
|
|
|
|
private final DrpPengadaanRepository drpPengadaanRepository;
|
|
private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository;
|
|
private final DrpRekomendasiRepository drpRekomendasiRepository;
|
|
|
|
public GetApprovalService(DrpPengadaanRepository drpPengadaanRepository,
|
|
DrpPengadaanDokumenRepository drpPengadaanDokumenRepository,
|
|
DrpRekomendasiRepository drpRekomendasiRepository) {
|
|
this.drpPengadaanRepository = drpPengadaanRepository;
|
|
this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository;
|
|
this.drpRekomendasiRepository = drpRekomendasiRepository;
|
|
}
|
|
|
|
@Override
|
|
public DrpApprovalResponse execute(DrpApprovalRequest input) {
|
|
var drpPengadaan = drpPengadaanRepository.getDrpPengadaanById(input.getJenisPengadaanId())
|
|
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
|
|
Constants.ERR_TTL_10001,
|
|
String.format(Constants.ERR_MSG_10001, "DRP Pengadaan", input.getJenisPengadaanId())));
|
|
|
|
List<DrpPengadaanDokumenResponse> drpPengadaanDokumenResponseList = new ArrayList<>();
|
|
var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpPengadaanIdAndIsDeleteFalse(drpPengadaan.getId());
|
|
for (DrpPengadaanDokumen drpPengadaanDokumen : drpPengadaanDokumenList) {
|
|
DrpPengadaanDokumenResponse drpPengadaanDokumenResponse = DrpPengadaanDokumenResponse.builder()
|
|
.id(drpPengadaanDokumen.getId())
|
|
.drpId(drpPengadaanDokumen.getDrpId())
|
|
.jenisDokumenId(drpPengadaanDokumen.getJenisDokumenId())
|
|
.filename(drpPengadaanDokumen.getFilename())
|
|
.keterangan(drpPengadaanDokumen.getKeterangan())
|
|
.build();
|
|
drpPengadaanDokumenResponseList.add(drpPengadaanDokumenResponse);
|
|
}
|
|
|
|
var pengadaan = DrpPengadaanResponse.builder()
|
|
.id(drpPengadaan.getId())
|
|
.drpId(drpPengadaan.getDrpId())
|
|
.nomor(drpPengadaan.getNomor())
|
|
.namaPengadaan(drpPengadaan.getNamaPengadaan())
|
|
.lokasiId(drpPengadaan.getLokasiId())
|
|
.lokasi(drpPengadaan.getLokasi())
|
|
.jenisPengadaanId(drpPengadaan.getJenisPengadaanId())
|
|
.jenisPengadaan(drpPengadaan.getJenisPengadaan())
|
|
.unitInisiatorId(drpPengadaan.getUnitInisiatorId())
|
|
.unitInisiator(drpPengadaan.getUnitInisiator())
|
|
.hpe(drpPengadaan.getHpe())
|
|
.pagu(drpPengadaan.getPagu())
|
|
.sumberDanaId(drpPengadaan.getSumberDanaId())
|
|
.sumberDana(drpPengadaan.getSumberDana())
|
|
.metodePengadaanId(drpPengadaan.getMetodePengadaanId())
|
|
.metodePengadaan(drpPengadaan.getMetodePengadaan())
|
|
.supplyPositioningMatrixId(drpPengadaan.getSupplyPositioningMatrixId())
|
|
.supplyPositioningMatrix(drpPengadaan.getSupplyPositioningMatrix())
|
|
.metodePenyampaianId(drpPengadaan.getMetodePenyampaianId())
|
|
.metodePenyampaian(drpPengadaan.getMetodePenyampaian())
|
|
.jenisKontrakId(drpPengadaan.getJenisKontrakId())
|
|
.jenisKontrak(drpPengadaan.getJenisKontrak())
|
|
.strategiPengadaanId(drpPengadaan.getStrategiPengadaanId())
|
|
.strategiPengadaan(drpPengadaan.getStrategiPengadaan())
|
|
.rencanaTanggal(drpPengadaan.getRencanaTanggal())
|
|
.targetTanggal(drpPengadaan.getTargetTanggal())
|
|
.isActive(drpPengadaan.getIsActive())
|
|
.build();
|
|
|
|
List<DrpRekomendasiResponse> drpRekomendasiResponseList = new ArrayList<>();
|
|
var listDrpRekomendasi = drpRekomendasiRepository.getListDrpRekomendasi(input.getJenisPengadaanId());
|
|
for (DrpRekomendasiView drpRekomendasiView : listDrpRekomendasi) {
|
|
DrpRekomendasiResponse drpRekomendasiResponse = DrpRekomendasiResponse.builder()
|
|
.id(drpRekomendasiView.getId())
|
|
.jabatan(drpRekomendasiView.getJabatan())
|
|
.rekomendasi(drpRekomendasiView.getRekomendasi())
|
|
.rekomendasiDate(drpRekomendasiView.getRekomendasiDate())
|
|
.build();
|
|
if (drpRekomendasiView.getIsApprove() != null) {
|
|
if (BooleanUtils.isTrue(drpRekomendasiView.getIsApprove())) {
|
|
drpRekomendasiResponse.setStatus("Setuju");
|
|
} else {
|
|
drpRekomendasiResponse.setStatus("Tolak");
|
|
}
|
|
}
|
|
|
|
drpRekomendasiResponseList.add(drpRekomendasiResponse);
|
|
}
|
|
|
|
return DrpApprovalResponse.builder()
|
|
.dataPengadaan(pengadaan)
|
|
.dataPengadaanDokumen(drpPengadaanDokumenResponseList)
|
|
.dataRekomendasi(drpRekomendasiResponseList)
|
|
.build();
|
|
|
|
}
|
|
}
|