From 025793155258192bfe88dbfdeb1da29bcbefd201 Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Wed, 31 May 2023 15:40:38 +0700 Subject: [PATCH] add get pengadaan by id --- .../controller/DrpPengadaanController.java | 9 +- .../model/entity/DrpPengadaanDokumen.java | 3 + .../model/response/DrpPengadaanResponse.java | 4 + .../smartproc/model/response/DrpResponse.java | 2 +- .../DrpPengadaanDokumenRepository.java | 2 + .../repository/DrpPengadaanRepository.java | 44 +++++++++- .../smartproc/service/drp/GetDrpService.java | 51 +++++------ .../drp/PostDrpUploadDokumenRKAPService.java | 1 + .../drppengadaan/GetDrpPengadaanService.java | 85 +++++++++++++++++++ .../PostCreateDrpPengadaanService.java | 4 +- .../drppengadaan/PutDrpPengadaanService.java | 62 ++++++++++++++ 11 files changed, 233 insertions(+), 34 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/service/drppengadaan/GetDrpPengadaanService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/drppengadaan/PutDrpPengadaanService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/DrpPengadaanController.java b/src/main/java/com/iconplus/smartproc/controller/DrpPengadaanController.java index 9c9fe33..33d8864 100644 --- a/src/main/java/com/iconplus/smartproc/controller/DrpPengadaanController.java +++ b/src/main/java/com/iconplus/smartproc/controller/DrpPengadaanController.java @@ -23,19 +23,22 @@ public class DrpPengadaanController { private final DeleteDrpPengadaanService deleteDrpPengadaanService; private final DeleteDokumenPendukungService deleteDokumenPendukungService; private final EditUploadDrpPengadaanService editUploadDrpPengadaanService; + private final GetDrpPengadaanService getDrpPengadaanService; public DrpPengadaanController(PostCreateDrpPengadaanService postCreateDrpPengadaanService, GetListDrpPengadaanService getListDrpPengadaanService, PostDrpUploadDokumenPendukungService postDrpUploadDokumenPendukungService, DeleteDrpPengadaanService deleteDrpPengadaanService, DeleteDokumenPendukungService deleteDokumenPendukungService, - EditUploadDrpPengadaanService editUploadDrpPengadaanService) { + EditUploadDrpPengadaanService editUploadDrpPengadaanService, + GetDrpPengadaanService getDrpPengadaanService) { this.postCreateDrpPengadaanService = postCreateDrpPengadaanService; this.getListDrpPengadaanService = getListDrpPengadaanService; this.postDrpUploadDokumenPendukungService = postDrpUploadDokumenPendukungService; this.deleteDrpPengadaanService = deleteDrpPengadaanService; this.deleteDokumenPendukungService = deleteDokumenPendukungService; this.editUploadDrpPengadaanService = editUploadDrpPengadaanService; + this.getDrpPengadaanService = getDrpPengadaanService; } @GetMapping @@ -56,7 +59,9 @@ public class DrpPengadaanController { @GetMapping("/{id}") public DrpPengadaanResponse getDrpPengadaanById(@PathVariable Long id) { - return null; + return getDrpPengadaanService.execute(DrpPengadaanRequest.builder() + .id(id) + .build()); } @PutMapping("/{id}") diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java index e89344d..fad33d7 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java @@ -22,6 +22,9 @@ public class DrpPengadaanDokumen extends BaseEntity { @Column(name = "id") private Long id; + @Column(name = "drp_pengadaan_id") + private Long drpPengadaanId; + @Column(name = "drp_id") private Long drpId; diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java index 98472e0..b69277c 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java @@ -1,6 +1,7 @@ package com.iconplus.smartproc.model.response; import com.iconplus.smartproc.helper.base.BaseResponse; +import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -9,6 +10,7 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; +import java.util.List; @Data @Builder @@ -54,4 +56,6 @@ public class DrpPengadaanResponse extends BaseResponse { private BigDecimal hpe; private Boolean isActive; private Boolean isDelete; + + private List dataDrpPengadaanDokumen; } diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java index efb60dd..392264f 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java @@ -23,5 +23,5 @@ public class DrpResponse extends BaseResponse { private List dataDrpDokumen; - private List dataDrpPengadaanDokumen; + private List dataDrpDokumenPendukung; } diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java index 2bc9b84..bcf8b99 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java @@ -14,4 +14,6 @@ public interface DrpPengadaanDokumenRepository extends JpaRepository findByFilenameAndIsDeleteFalse(String filename); + List findByDrpPengadaanIdAndIsDeleteFalse(Long id); + } diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java index 7c2f25e..2434219 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java @@ -50,9 +50,51 @@ public interface DrpPengadaanRepository extends JpaRepository getListDrpPengadaan(Pageable pageable); + @Query(value = "SELECT dp.id as id, " + + "dp.nomor as nomor, " + + "dp.drpId as drpId, " + + "dp.namaPengadaan as namaPengadaan, " + + "dp.hpe as hpe, " + + "dp.pagu as pagu, " + + "dp.isActive as isActive, " + + "dp.rencanaTanggal as rencanaTanggal, " + + "dp.targetTanggal as targetTanggal, " + + "dp.jenisKontrakId as jenisKontrakId, " + + "jk.jenisKontrak as jenisKontrak, " + + "dp.jenisPengadaanId as jenisPengadaanId, " + + "jp.jenisPengadaan as jenisPengadaan, " + + "dp.lokasiId as lokasiId, " + + "l.lokasi as lokasi, " + + "dp.metodePengadaanId as metodePengadaanId, " + + "mp.metodePengadaan as metodePengadaan, " + + "dp.metodePenyampaianId as metodePenyampaianId, " + + "mpi.metodePenyampaian as metodePenyampaian, " + + "dp.strategiPengadaanId as strategiPengadaanId, " + + "sp.strategiPengadaan as strategiPengadaan, " + + "dp.sumberDanaId as sumberDanaId, " + + "sd.sumberDana as sumberDana, " + + "dp.supplyPositioningMatrixId as supplyPositioningMatrixId, " + + "spm.supplyPositioningMatrix as supplyPositioningMatrix, " + + "dp.unitInisiatorId as unitInisiatorId, " + + "ui.unitInisiator as unitInisiator " + + "FROM DrpPengadaan dp " + + "JOIN JenisKontrak jk ON jk.id = dp.jenisKontrakId " + + "JOIN JenisPengadaan jp ON jp.id = dp.jenisPengadaanId " + + "JOIN Lokasi l ON l.id = dp.lokasiId " + + "JOIN MetodePengadaan mp ON mp.id = dp.metodePengadaanId " + + "JOIN MetodePenyampaian mpi ON mpi.id = dp.metodePenyampaianId " + + "JOIN StrategiPengadaan sp ON sp.id = dp.strategiPengadaanId " + + "JOIN SumberDana sd ON sd.id = dp.sumberDanaId " + + "JOIN SupplyPositioningMatrix spm ON spm.id = dp.supplyPositioningMatrixId " + + "JOIN UnitInisiator ui ON ui.id = dp.unitInisiatorId " + + "WHERE dp.isDelete = false " + + "AND dp.id = :id") + Optional getDrpPengadaanById(Long id); + Optional findByIdAndIsDeleteFalse(Long id); diff --git a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java index 4ab2f0c..9045888 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java @@ -3,10 +3,8 @@ package com.iconplus.smartproc.service.drp; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.DrpDokumen; -import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpDokumenResponse; -import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.repository.DrpDokumenRepository; import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; @@ -40,10 +38,8 @@ public class GetDrpService implements BaseService { String.format(Constants.ERR_MSG_10001, "DRP", input.getId()))); List drpDokumenResponseList = new ArrayList<>(); - setDrpDokumen(input, drpDokumenResponseList); - - List drpPengadaanDokumenResponseList = new ArrayList<>(); - setDrpPengadaanDokumen(input, drpPengadaanDokumenResponseList); + List drpPengadaanDokumenPendukungList = new ArrayList<>(); + setDrpDokumen(input, drpDokumenResponseList, drpPengadaanDokumenPendukungList); return DrpResponse.builder() @@ -54,35 +50,32 @@ public class GetDrpService implements BaseService { .isActive(drp.getIsActive()) .isDelete(drp.getIsDelete()) .dataDrpDokumen(drpDokumenResponseList) - .dataDrpPengadaanDokumen(drpPengadaanDokumenResponseList) + .dataDrpDokumenPendukung(drpPengadaanDokumenPendukungList) .build(); } - private void setDrpPengadaanDokumen(DrpRequest input, List drpPengadaanDokumenResponseList) { - var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); - - for (DrpPengadaanDokumen drpPengadaanDokumen : drpPengadaanDokumenList) { - DrpPengadaanDokumenResponse drpPengadaanDokumenResponse = DrpPengadaanDokumenResponse.builder() - .id(drpPengadaanDokumen.getId()) - .drpId(drpPengadaanDokumen.getDrpId()) - .jenisDokumenId(drpPengadaanDokumen.getJenisDokumenId()) - .filename(drpPengadaanDokumen.getFilename()) - .build(); - drpPengadaanDokumenResponseList.add(drpPengadaanDokumenResponse); - } - } - - private void setDrpDokumen(DrpRequest input, List drpDokumenResponseList) { + private void setDrpDokumen(DrpRequest input, List drpDokumenResponseList, List drpDokumenPendukungList) { var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); for (DrpDokumen drpDokumen : drpDokumenList) { - DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() - .id(drpDokumen.getId()) - .drpId(drpDokumen.getDrpId()) - .jenisDokumenId(drpDokumen.getJenisDokumenId()) - .filename(drpDokumen.getFilename()) - .build(); - drpDokumenResponseList.add(drpDokumenResponse); + + if (drpDokumen.getJenisDokumenId() == 1) { + DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() + .id(drpDokumen.getId()) + .drpId(drpDokumen.getDrpId()) + .jenisDokumenId(drpDokumen.getJenisDokumenId()) + .filename(drpDokumen.getFilename()) + .build(); + drpDokumenResponseList.add(drpDokumenResponse); + } else { + DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() + .id(drpDokumen.getId()) + .drpId(drpDokumen.getDrpId()) + .jenisDokumenId(drpDokumen.getJenisDokumenId()) + .filename(drpDokumen.getFilename()) + .build(); + drpDokumenPendukungList.add(drpDokumenResponse); + } } } } diff --git a/src/main/java/com/iconplus/smartproc/service/drp/PostDrpUploadDokumenRKAPService.java b/src/main/java/com/iconplus/smartproc/service/drp/PostDrpUploadDokumenRKAPService.java index ac3589d..ce70460 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/PostDrpUploadDokumenRKAPService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/PostDrpUploadDokumenRKAPService.java @@ -53,6 +53,7 @@ public class PostDrpUploadDokumenRKAPService implements BaseService { + + private final DrpPengadaanRepository drpPengadaanRepository; + private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; + + public GetDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository, + DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { + this.drpPengadaanRepository = drpPengadaanRepository; + this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; + } + + @Override + public DrpPengadaanResponse execute(DrpPengadaanRequest input) { + + var drpPengadaan = drpPengadaanRepository.getDrpPengadaanById(input.getId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "DRP Pengadaan", input.getId()))); + + 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); + } + + + return 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()) + .dataDrpPengadaanDokumen(drpPengadaanDokumenResponseList) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/drppengadaan/PostCreateDrpPengadaanService.java b/src/main/java/com/iconplus/smartproc/service/drppengadaan/PostCreateDrpPengadaanService.java index fcd17d4..7b78807 100644 --- a/src/main/java/com/iconplus/smartproc/service/drppengadaan/PostCreateDrpPengadaanService.java +++ b/src/main/java/com/iconplus/smartproc/service/drppengadaan/PostCreateDrpPengadaanService.java @@ -50,10 +50,13 @@ public class PostCreateDrpPengadaanService implements BaseService drpPengadaanDokumenList = new ArrayList<>(); if (ObjectUtils.isNotEmpty(input.getDataDrpPengadaanDokumen())) { for (DrpPengadaanDokumenRequest drpPengadaanDokumenRequest : input.getDataDrpPengadaanDokumen()) { DrpPengadaanDokumen drpPengadaanDokumen = DrpPengadaanDokumen.builder() + .drpPengadaanId(result.getId()) .drpId(input.getDrpId()) .jenisDokumenId(drpPengadaanDokumenRequest.getJenisDokumenId()) .filename(drpPengadaanDokumenRequest.getFilename()) @@ -64,7 +67,6 @@ public class PostCreateDrpPengadaanService implements BaseService { + + private final DrpPengadaanRepository drpPengadaanRepository; + private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; + + public PutDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository, + DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { + this.drpPengadaanRepository = drpPengadaanRepository; + this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; + } + + @Override + public DrpPengadaanResponse execute(DrpPengadaanRequest input) throws IOException { + + var drpPengadaan = drpPengadaanRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(()-> new BusinessException(Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "DRP Pengadaan", input.getId()))); + + drpPengadaan.setDrpId(input.getDrpId()); + drpPengadaan.setNomor(input.getNomor()); + drpPengadaan.setNamaPengadaan(input.getNamaPengadaan()); + drpPengadaan.setLokasiId(input.getLokasiId()); + drpPengadaan.setJenisPengadaanId(input.getJenisPengadaanId()); + drpPengadaan.setUnitInisiatorId(input.getUnitInisiatorId()); + drpPengadaan.setPagu(input.getPagu()); + drpPengadaan.setSumberDanaId(input.getSumberDanaId()); + drpPengadaan.setSupplyPositioningMatrixId(input.getSupplyPositioningMatrixId()); + drpPengadaan.setMetodePengadaanId(input.getMetodePengadaanId()); + drpPengadaan.setMetodePengadaanId(input.getMetodePenyampaianId()); + drpPengadaan.setJenisKontrakId(input.getJenisKontrakId()); + drpPengadaan.setStrategiPengadaanId(input.getStrategiPengadaanId()); + drpPengadaan.setRencanaTanggal(input.getRencanaTanggal()); + drpPengadaan.setTargetTanggal(input.getTargetTanggal()); + drpPengadaan.setHpe(input.getHpe()); + drpPengadaan.setIsActive(input.getIsActive()); + drpPengadaan.setIsDelete(false); + + drpPengadaanRepository.save(drpPengadaan); + + var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpPengadaanIdAndIsDeleteFalse(drpPengadaan.getId()); + return DrpPengadaanResponse.builder().build(); + + } +}