diff --git a/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java index 7cb2713..fe98928 100644 --- a/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java +++ b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java @@ -5,6 +5,7 @@ import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpApprovalRequest; import com.iconplus.smartproc.model.request.DrpRekomendasiRequest; 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.GetListDrpApprovalResponse; import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; @@ -24,18 +25,21 @@ public class ApprovalDrpController { private GetListApprovalDrpServie getListApprovalDrpServie; private PostDrpRekomendasiService postDrpRekomendasiService; private PostDrpApprovalExecutionService postDrpApprovalExecutionService; + private GetApprovalService getApprovalService; public ApprovalDrpController(GetListUserVpService getListUserVpService, GetListUserDirekturKomiteService getListUserDirekturKomiteService, PostCreateDrpApprovalService postCreateDrpApprovalService, GetListApprovalDrpServie getListApprovalDrpServie, PostDrpRekomendasiService postDrpRekomendasiService, - PostDrpApprovalExecutionService postDrpApprovalExecutionService) { + PostDrpApprovalExecutionService postDrpApprovalExecutionService, + GetApprovalService getApprovalService) { this.getListUserVpService = getListUserVpService; this.getListUserDirekturKomiteService = getListUserDirekturKomiteService; this.postCreateDrpApprovalService = postCreateDrpApprovalService; this.getListApprovalDrpServie = getListApprovalDrpServie; this.postDrpRekomendasiService = postDrpRekomendasiService; this.postDrpApprovalExecutionService = postDrpApprovalExecutionService; + this.getApprovalService = getApprovalService; } @GetMapping("/vp") @@ -76,4 +80,11 @@ public class ApprovalDrpController { public EmptyResponse drpApprovalExecution(@RequestBody DrpApprovalRequest 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()); + } } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java index 6d66fb1..e0f6eda 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java @@ -23,6 +23,12 @@ public class DrpRekomendasi extends BaseEntity { @Column(name = "id") private Long id; + @Column(name = "drp_id") + private Long drpId; + + @Column(name = "user_id") + private Long userId; + @Column(name = "jenis_pengadaan_id") private Long jenisPengadaanId; diff --git a/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java b/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java index 8c508ee..0c2ab08 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java @@ -1,27 +1,23 @@ package com.iconplus.smartproc.model.projection; -import java.util.Date; + +import java.sql.Date; public interface DrpRekomendasiView { Long getId(); void setId(Long id); - String getNomorRkp(); - void setNomorRkp(String nomorRkp); + String getJabatan(); + void setJabatan(String jabatan); + Boolean getIsApprove(); + void setIsApprove(Boolean isApprove); - String getNamaPengadaan(); - void setNamaPengadaan(String namaPengadaan); + Date getRekomendasiDate(); + void setRekomendasiDate(Date rekomendasiDate); - String getApproval(); - void setApproval(String approval); + String getRekomendasi(); + void setRekomendasiDate(String rekomendasi); - Boolean getStatus(); - void setStatus(Boolean status); - - -// Date approveDate; -// Date rekomendasiDate; -// String rekomendasi; } diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java index ed23f8f..4d7f097 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java @@ -18,6 +18,7 @@ public class DrpApprovalRequest extends BaseRequest { private Long drpId; private Long approverUserId; private String level; + private Long jenisPengadaanId; private String search; private transient Pageable pageable; diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java index ff25205..c54f5cc 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java @@ -16,9 +16,12 @@ public class DrpRekomendasiRequest extends BaseRequest { private Long id; private Long drpApprovalId; + private Long userId; + private Long drpId; private Long jenisPengadaanId; private String rekomendasi; private Date rekomendasiDate; + } diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java index e95254e..0c9069e 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.sql.Date; +import java.util.List; @Data @Builder @@ -21,4 +22,9 @@ public class DrpApprovalResponse extends BaseResponse { private Date approverVpDate; private Date approverKomiteDate; private Date approverDirekturDate; + + private DrpPengadaanResponse dataPengadaan; + private List dataPengadaanDokumen; + private List dataRekomendasi; + } diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java index 301c297..9dc9cb2 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java @@ -6,7 +6,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; +import java.sql.Date; + @Data @Builder @@ -22,4 +23,5 @@ public class DrpRekomendasiResponse extends BaseResponse { private Date approveDate; private Date rekomendasiDate; private String rekomendasi; + private String jabatan; } diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java index c1e4378..3de2915 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java @@ -2,13 +2,11 @@ package com.iconplus.smartproc.model.response; import com.iconplus.smartproc.helper.base.BaseResponse; import com.iconplus.smartproc.helper.model.Pagination; -import com.iconplus.smartproc.model.response.DrpRekomendasiResponse; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; import java.util.List; @Data diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java index 57e716b..896d523 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java @@ -1,16 +1,26 @@ package com.iconplus.smartproc.repository; 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.Query; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface DrpRekomendasiRepository extends JpaRepository { -// @Query(value = "SELECT " + -// "FROM " + -// "WHERE") -// Page<> + @Query(value = "SELECT dr.id as id, " + + "da.isApprove as isApprove, " + + "j.jabatan as jabatan, " + + "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 getListDrpRekomendasi(Long jenisPengadaanId); } diff --git a/src/main/java/com/iconplus/smartproc/service/approval/GetApprovalService.java b/src/main/java/com/iconplus/smartproc/service/approval/GetApprovalService.java new file mode 100644 index 0000000..2414737 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/approval/GetApprovalService.java @@ -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 { + + 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 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 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(); + + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java index 8b45036..a76cbf7 100644 --- a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java +++ b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java @@ -38,8 +38,6 @@ public class PostDrpApprovalExecutionService implements BaseService { private DrpRekomendasiRepository drpRekomendasiRepository; + private DrpApprovalRepository drpApprovalRepository; - private PostDrpRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository) { + private PostDrpRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository, + DrpApprovalRepository drpApprovalRepository) { this.drpRekomendasiRepository = drpRekomendasiRepository; + this.drpApprovalRepository = drpApprovalRepository; } @Override 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() + .drpId(input.getDrpId()) + .userId(input.getUserId()) .jenisPengadaanId(input.getJenisPengadaanId()) .drpApprovalId(input.getDrpApprovalId()) .rekomendasi(input.getRekomendasi()) diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 226916d..1fc7e7e 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -32,4 +32,4 @@ spring: show-sql: true fe: - server: http://localhost:8080 \ No newline at end of file + server: http://internal.sindigilive.com:8080 \ No newline at end of file