pointing sindiglive

This commit is contained in:
dirgantarasiahaan 2023-06-02 14:40:12 +07:00
parent f842852813
commit 5be630964f
13 changed files with 185 additions and 27 deletions

View File

@ -5,6 +5,7 @@ import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.DrpApprovalRequest; import com.iconplus.smartproc.model.request.DrpApprovalRequest;
import com.iconplus.smartproc.model.request.DrpRekomendasiRequest; import com.iconplus.smartproc.model.request.DrpRekomendasiRequest;
import com.iconplus.smartproc.model.request.ListDrpApprovalRequest; import com.iconplus.smartproc.model.request.ListDrpApprovalRequest;
import com.iconplus.smartproc.model.response.DrpApprovalResponse;
import com.iconplus.smartproc.model.response.DrpRekomendasiResponse; import com.iconplus.smartproc.model.response.DrpRekomendasiResponse;
import com.iconplus.smartproc.model.response.GetListDrpApprovalResponse; import com.iconplus.smartproc.model.response.GetListDrpApprovalResponse;
import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; import com.iconplus.smartproc.model.response.GetListUserApprovalResponse;
@ -24,18 +25,21 @@ public class ApprovalDrpController {
private GetListApprovalDrpServie getListApprovalDrpServie; private GetListApprovalDrpServie getListApprovalDrpServie;
private PostDrpRekomendasiService postDrpRekomendasiService; private PostDrpRekomendasiService postDrpRekomendasiService;
private PostDrpApprovalExecutionService postDrpApprovalExecutionService; private PostDrpApprovalExecutionService postDrpApprovalExecutionService;
private GetApprovalService getApprovalService;
public ApprovalDrpController(GetListUserVpService getListUserVpService, public ApprovalDrpController(GetListUserVpService getListUserVpService,
GetListUserDirekturKomiteService getListUserDirekturKomiteService, GetListUserDirekturKomiteService getListUserDirekturKomiteService,
PostCreateDrpApprovalService postCreateDrpApprovalService, PostCreateDrpApprovalService postCreateDrpApprovalService,
GetListApprovalDrpServie getListApprovalDrpServie, GetListApprovalDrpServie getListApprovalDrpServie,
PostDrpRekomendasiService postDrpRekomendasiService, PostDrpRekomendasiService postDrpRekomendasiService,
PostDrpApprovalExecutionService postDrpApprovalExecutionService) { PostDrpApprovalExecutionService postDrpApprovalExecutionService,
GetApprovalService getApprovalService) {
this.getListUserVpService = getListUserVpService; this.getListUserVpService = getListUserVpService;
this.getListUserDirekturKomiteService = getListUserDirekturKomiteService; this.getListUserDirekturKomiteService = getListUserDirekturKomiteService;
this.postCreateDrpApprovalService = postCreateDrpApprovalService; this.postCreateDrpApprovalService = postCreateDrpApprovalService;
this.getListApprovalDrpServie = getListApprovalDrpServie; this.getListApprovalDrpServie = getListApprovalDrpServie;
this.postDrpRekomendasiService = postDrpRekomendasiService; this.postDrpRekomendasiService = postDrpRekomendasiService;
this.postDrpApprovalExecutionService = postDrpApprovalExecutionService; this.postDrpApprovalExecutionService = postDrpApprovalExecutionService;
this.getApprovalService = getApprovalService;
} }
@GetMapping("/vp") @GetMapping("/vp")
@ -76,4 +80,11 @@ public class ApprovalDrpController {
public EmptyResponse drpApprovalExecution(@RequestBody DrpApprovalRequest drpApprovalRequest) { public EmptyResponse drpApprovalExecution(@RequestBody DrpApprovalRequest drpApprovalRequest) {
return postDrpApprovalExecutionService.execute(drpApprovalRequest); return postDrpApprovalExecutionService.execute(drpApprovalRequest);
} }
@GetMapping("/jenis-pengadaan/{id}")
public DrpApprovalResponse getDrpApproval(@PathVariable(name = "id") Long id) {
return getApprovalService.execute(DrpApprovalRequest.builder()
.jenisPengadaanId(id)
.build());
}
} }

View File

@ -23,6 +23,12 @@ public class DrpRekomendasi extends BaseEntity {
@Column(name = "id") @Column(name = "id")
private Long id; private Long id;
@Column(name = "drp_id")
private Long drpId;
@Column(name = "user_id")
private Long userId;
@Column(name = "jenis_pengadaan_id") @Column(name = "jenis_pengadaan_id")
private Long jenisPengadaanId; private Long jenisPengadaanId;

View File

@ -1,27 +1,23 @@
package com.iconplus.smartproc.model.projection; package com.iconplus.smartproc.model.projection;
import java.util.Date;
import java.sql.Date;
public interface DrpRekomendasiView { public interface DrpRekomendasiView {
Long getId(); Long getId();
void setId(Long id); void setId(Long id);
String getNomorRkp(); String getJabatan();
void setNomorRkp(String nomorRkp); void setJabatan(String jabatan);
Boolean getIsApprove();
void setIsApprove(Boolean isApprove);
String getNamaPengadaan(); Date getRekomendasiDate();
void setNamaPengadaan(String namaPengadaan); void setRekomendasiDate(Date rekomendasiDate);
String getApproval(); String getRekomendasi();
void setApproval(String approval); void setRekomendasiDate(String rekomendasi);
Boolean getStatus();
void setStatus(Boolean status);
// Date approveDate;
// Date rekomendasiDate;
// String rekomendasi;
} }

View File

@ -18,6 +18,7 @@ public class DrpApprovalRequest extends BaseRequest {
private Long drpId; private Long drpId;
private Long approverUserId; private Long approverUserId;
private String level; private String level;
private Long jenisPengadaanId;
private String search; private String search;
private transient Pageable pageable; private transient Pageable pageable;

View File

@ -16,9 +16,12 @@ public class DrpRekomendasiRequest extends BaseRequest {
private Long id; private Long id;
private Long drpApprovalId; private Long drpApprovalId;
private Long userId;
private Long drpId;
private Long jenisPengadaanId; private Long jenisPengadaanId;
private String rekomendasi; private String rekomendasi;
private Date rekomendasiDate; private Date rekomendasiDate;
} }

View File

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.sql.Date; import java.sql.Date;
import java.util.List;
@Data @Data
@Builder @Builder
@ -21,4 +22,9 @@ public class DrpApprovalResponse extends BaseResponse {
private Date approverVpDate; private Date approverVpDate;
private Date approverKomiteDate; private Date approverKomiteDate;
private Date approverDirekturDate; private Date approverDirekturDate;
private DrpPengadaanResponse dataPengadaan;
private List<DrpPengadaanDokumenResponse> dataPengadaanDokumen;
private List<DrpRekomendasiResponse> dataRekomendasi;
} }

View File

@ -6,7 +6,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.sql.Date;
@Data @Data
@Builder @Builder
@ -22,4 +23,5 @@ public class DrpRekomendasiResponse extends BaseResponse {
private Date approveDate; private Date approveDate;
private Date rekomendasiDate; private Date rekomendasiDate;
private String rekomendasi; private String rekomendasi;
private String jabatan;
} }

View File

@ -2,13 +2,11 @@ package com.iconplus.smartproc.model.response;
import com.iconplus.smartproc.helper.base.BaseResponse; import com.iconplus.smartproc.helper.base.BaseResponse;
import com.iconplus.smartproc.helper.model.Pagination; import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.model.response.DrpRekomendasiResponse;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data

View File

@ -1,16 +1,26 @@
package com.iconplus.smartproc.repository; package com.iconplus.smartproc.repository;
import com.iconplus.smartproc.model.entity.DrpRekomendasi; import com.iconplus.smartproc.model.entity.DrpRekomendasi;
import org.springframework.data.domain.Page; import com.iconplus.smartproc.model.projection.DrpRekomendasiView;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface DrpRekomendasiRepository extends JpaRepository<DrpRekomendasi, Long> { public interface DrpRekomendasiRepository extends JpaRepository<DrpRekomendasi, Long> {
// @Query(value = "SELECT " + @Query(value = "SELECT dr.id as id, " +
// "FROM " + "da.isApprove as isApprove, " +
// "WHERE") "j.jabatan as jabatan, " +
// Page<> "dr.rekomendasi as rekomendasi, " +
"dr.rekomendasiDate as rekomendasiDate " +
"FROM DrpRekomendasi dr " +
"JOIN DrpApproval da ON da.id = dr.drpApprovalId " +
"JOIN Users u ON u.id = dr.userId " +
"JOIN Jabatan j ON j.id = u.jabatanId " +
"WHERE dr.isDelete = false " +
"AND dr.jenisPengadaanId = :jenisPengadaanId")
List<DrpRekomendasiView> getListDrpRekomendasi(Long jenisPengadaanId);
} }

View File

@ -0,0 +1,113 @@
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 (BooleanUtils.isTrue(drpRekomendasiView.getIsApprove())) {
drpRekomendasiResponse.setStatus("Setuju");
} else {
drpRekomendasiResponse.setStatus("Tolak");
}
drpRekomendasiResponseList.add(drpRekomendasiResponse);
}
return DrpApprovalResponse.builder()
.dataPengadaan(pengadaan)
.dataPengadaanDokumen(drpPengadaanDokumenResponseList)
.dataRekomendasi(drpRekomendasiResponseList)
.build();
}
}

View File

@ -38,8 +38,6 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
Constants.ERR_TTL_10001, Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId()))); String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId())));
Date dateNow = Date.valueOf(LocalDate.now()); Date dateNow = Date.valueOf(LocalDate.now());
if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) { if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) {

View File

@ -4,22 +4,36 @@ import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.DrpRekomendasi; import com.iconplus.smartproc.model.entity.DrpRekomendasi;
import com.iconplus.smartproc.model.request.DrpRekomendasiRequest; import com.iconplus.smartproc.model.request.DrpRekomendasiRequest;
import com.iconplus.smartproc.model.response.DrpRekomendasiResponse; import com.iconplus.smartproc.model.response.DrpRekomendasiResponse;
import com.iconplus.smartproc.repository.DrpApprovalRepository;
import com.iconplus.smartproc.repository.DrpRekomendasiRepository; import com.iconplus.smartproc.repository.DrpRekomendasiRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class PostDrpRekomendasiService implements BaseService<DrpRekomendasiRequest, DrpRekomendasiResponse> { public class PostDrpRekomendasiService implements BaseService<DrpRekomendasiRequest, DrpRekomendasiResponse> {
private DrpRekomendasiRepository drpRekomendasiRepository; private DrpRekomendasiRepository drpRekomendasiRepository;
private DrpApprovalRepository drpApprovalRepository;
private PostDrpRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository) { private PostDrpRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository,
DrpApprovalRepository drpApprovalRepository) {
this.drpRekomendasiRepository = drpRekomendasiRepository; this.drpRekomendasiRepository = drpRekomendasiRepository;
this.drpApprovalRepository = drpApprovalRepository;
} }
@Override @Override
public DrpRekomendasiResponse execute(DrpRekomendasiRequest input) { public DrpRekomendasiResponse execute(DrpRekomendasiRequest input) {
if (input.getDrpApprovalId() == null) {
var drpApproval = drpApprovalRepository.findByDrpIdAndApproverUserIdAndIsDeleteFalse(input.getDrpId(), input.getUserId());
if (drpApproval.isPresent()) {
input.setDrpApprovalId(drpApproval.get().getId());
}
}
DrpRekomendasi drpRekomendasi = DrpRekomendasi.builder() DrpRekomendasi drpRekomendasi = DrpRekomendasi.builder()
.drpId(input.getDrpId())
.userId(input.getUserId())
.jenisPengadaanId(input.getJenisPengadaanId()) .jenisPengadaanId(input.getJenisPengadaanId())
.drpApprovalId(input.getDrpApprovalId()) .drpApprovalId(input.getDrpApprovalId())
.rekomendasi(input.getRekomendasi()) .rekomendasi(input.getRekomendasi())

View File

@ -32,4 +32,4 @@ spring:
show-sql: true show-sql: true
fe: fe:
server: http://localhost:8080 server: http://internal.sindigilive.com:8080