From e09222e163dd13e879909da699bdc9529a72a2f3 Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Mon, 29 May 2023 02:56:37 +0700 Subject: [PATCH] fix api post drp --- .../smartproc/controller/DrpController.java | 18 +++- .../smartproc/model/entity/DrpPengadaan.java | 82 +++++++++++++++++++ .../model/entity/DrpPengadaanDokumen.java | 48 +++++++++++ .../request/DrpPengadaanDokumenRequest.java | 25 ++++++ .../model/request/DrpPengadaanRequest.java | 49 +++++++++++ .../smartproc/model/request/DrpRequest.java | 4 +- .../model/response/DrpPengadaanResponse.java | 37 +++++++++ .../DrpPengadaanDokumenRepository.java | 9 ++ .../repository/DrpPengadaanRepository.java | 9 ++ .../drp/PostCreateDrpPengadaanService.java | 77 +++++++++++++++++ .../service/drp/PostCreateDrpService.java | 29 ++++++- 11 files changed, 382 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java create mode 100644 src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java create mode 100644 src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java create mode 100644 src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpPengadaanService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/DrpController.java b/src/main/java/com/iconplus/smartproc/controller/DrpController.java index e2e32fd..f3eb35d 100644 --- a/src/main/java/com/iconplus/smartproc/controller/DrpController.java +++ b/src/main/java/com/iconplus/smartproc/controller/DrpController.java @@ -1,10 +1,13 @@ package com.iconplus.smartproc.controller; +import com.iconplus.smartproc.model.request.DrpPengadaanRequest; import com.iconplus.smartproc.model.request.DrpRequest; +import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.model.response.GetListDrpResponse; import com.iconplus.smartproc.service.drp.GetDrpService; import com.iconplus.smartproc.service.drp.GetListDrpService; +import com.iconplus.smartproc.service.drp.PostCreateDrpPengadaanService; import com.iconplus.smartproc.service.drp.PostCreateDrpService; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -18,13 +21,16 @@ public class DrpController { private final GetDrpService getDrpService; private final GetListDrpService getListDrpService; private final PostCreateDrpService postCreateDrpService; + private final PostCreateDrpPengadaanService postCreateDrpPengadaanService; public DrpController(GetDrpService getDrpService, GetListDrpService getListDrpService, - PostCreateDrpService postCreateDrpService) { + PostCreateDrpService postCreateDrpService, + PostCreateDrpPengadaanService postCreateDrpPengadaanService) { this.getDrpService = getDrpService; this.getListDrpService = getListDrpService; this.postCreateDrpService = postCreateDrpService; + this.postCreateDrpPengadaanService = postCreateDrpPengadaanService; } @GetMapping @@ -53,4 +59,14 @@ public class DrpController { return postCreateDrpService.execute(drpRequest); } + @PostMapping("/pengadaan") + public DrpPengadaanResponse createDrpPengadaan(@RequestBody DrpPengadaanRequest drpPengadaanRequest) { + return postCreateDrpPengadaanService.execute(drpPengadaanRequest); + } + + @GetMapping("/pengadaan") + public DrpPengadaanResponse getDrpPengadaan(@RequestBody DrpPengadaanRequest drpPengadaanRequest) { + return null; + } + } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java new file mode 100644 index 0000000..192f20b --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java @@ -0,0 +1,82 @@ +package com.iconplus.smartproc.model.entity; + +import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.sql.Timestamp; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "drp_pengadaan") +public class DrpPengadaan extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "drp_id") + private Long drpId; + + @Column(name = "nomor") + private String nomor; + + @Column(name = "nama_pengadaan") + private String namaPengadaan; + + @Column(name = "lokasi_id") + private Long lokasiId; + + @Column(name = "jenis_pengadaan_id") + private Long jenisPengadaanId; + + @Column(name = "unit_inisiator_id") + private Long unitInisiatorId; + + @Column(name = "pagu") + private BigDecimal pagu; + + @Column(name = "sumber_dana_id") + private Long sumberDanaId; + + @Column(name = "supply_positioning_matrix_id") + private Long supplyPositioningMatrixId; + + @Column(name = "metode_pengadaan_id") + private Long metodePengadaanId; + + @Column(name = "metode_penyampaian_id") + private Long metodePenyampaianId; + + @Column(name = "jenis_kontrak_id") + private Long jenisKontrakId; + + @Column(name = "strategi_pengadaan_id") + private Long strategiPengadaanId; + + @Column(name = "rencana_tanggal") + private Timestamp rencanaTanggal; + + @Column(name = "target_tanggal") + private Timestamp targetTanggal; + + @Column(name = "hpe") + private BigDecimal hpe; + + @Column(name = "is_active") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java new file mode 100644 index 0000000..6a42483 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaanDokumen.java @@ -0,0 +1,48 @@ +package com.iconplus.smartproc.model.entity; + +import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +import javax.persistence.*; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "drp_pengadaan_dokumen") +public class DrpPengadaanDokumen extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "drp_id") + private Long drpId; + + @Column(name = "jenis_dokumen_id") + private Long jenisDokumenId; + + @Column(name = "filename") + private String filename; + + @Column(name = "file") + private byte[] file; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "is_active") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java new file mode 100644 index 0000000..41d293f --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java @@ -0,0 +1,25 @@ +package com.iconplus.smartproc.model.request; + +import com.iconplus.smartproc.helper.base.BaseRequest; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DrpPengadaanDokumenRequest extends BaseRequest { + + private Long id; + private Long drpId; + private Long jenisDokumenId; + private String filename; + private byte[] file; + private String keterangan; + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java new file mode 100644 index 0000000..453b309 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java @@ -0,0 +1,49 @@ +package com.iconplus.smartproc.model.request; + +import com.iconplus.smartproc.helper.base.BaseRequest; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; +import org.springframework.data.domain.Pageable; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DrpPengadaanRequest extends BaseRequest { + + private Long id; + private Long drpId; + private String nomor; + private String namaPengadaan; + private Long lokasiId; + private Long jenisPengadaanId; + private Long unitInisiatorId; + private BigDecimal pagu; + private Long sumberDanaId; + private Long supplyPositioningMatrixId; + private Long metodePengadaanId; + private Long metodePenyampaianId; + private Long jenisKontrakId; + private Long strategiPengadaanId; + private Timestamp rencanaTanggal; + private Timestamp targetTanggal; + private BigDecimal hpe; + private Boolean isActive; + private Boolean isDelete; + + private List dataDrpPengadaanDokumen; + + private transient Pageable pageable; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpRequest.java index 53bbdee..8f50e6e 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpRequest.java @@ -21,7 +21,9 @@ public class DrpRequest extends BaseRequest { private Timestamp approveDate; private Boolean isActive; - private List data; + private List dataDrpDokumen; + + private List dataDrpPengadaanDokumen; private String search; private transient Pageable pageable; diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java new file mode 100644 index 0000000..8a12fef --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java @@ -0,0 +1,37 @@ +package com.iconplus.smartproc.model.response; + +import com.iconplus.smartproc.helper.base.BaseResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DrpPengadaanResponse extends BaseResponse { + + private Long id; + private Long drpId; + private String nomor; + private String namaPengadaan; + private Long lokasiId; + private Long jenisPengadaanId; + private Long unitInisiatorId; + private BigDecimal pagu; + private Long sumberDanaId; + private Long supplyPositioningMatrixId; + private Long metodePengadaanId; + private Long metodePenyampaianId; + private Long jenisKontrakId; + private Long strategiPengadaanId; + private Timestamp rencanaTanggal; + private Timestamp targetTanggal; + private BigDecimal hpe; + private Boolean isActive; + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java new file mode 100644 index 0000000..22a8185 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java @@ -0,0 +1,9 @@ +package com.iconplus.smartproc.repository; + +import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DrpPengadaanDokumenRepository extends JpaRepository { +} diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java new file mode 100644 index 0000000..65d585c --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java @@ -0,0 +1,9 @@ +package com.iconplus.smartproc.repository; + +import com.iconplus.smartproc.model.entity.DrpPengadaan; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DrpPengadaanRepository extends JpaRepository { +} diff --git a/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpPengadaanService.java b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpPengadaanService.java new file mode 100644 index 0000000..5fb3611 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpPengadaanService.java @@ -0,0 +1,77 @@ +package com.iconplus.smartproc.service.drp; + +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.DrpPengadaan; +import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; +import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; +import com.iconplus.smartproc.model.request.DrpPengadaanRequest; +import com.iconplus.smartproc.model.response.DrpPengadaanResponse; +import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; +import com.iconplus.smartproc.repository.DrpPengadaanRepository; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class PostCreateDrpPengadaanService implements BaseService { + + private final DrpPengadaanRepository drpPengadaanRepository; + private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; + + public PostCreateDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository, + DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { + this.drpPengadaanRepository = drpPengadaanRepository; + this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; + } + + @Override + public DrpPengadaanResponse execute(DrpPengadaanRequest input) { + + DrpPengadaan drpPengadaan = DrpPengadaan.builder() + .drpId(input.getDrpId()) + .nomor(input.getNomor()) + .namaPengadaan(input.getNamaPengadaan()) + .lokasiId(input.getLokasiId()) + .jenisPengadaanId(input.getJenisPengadaanId()) + .unitInisiatorId(input.getUnitInisiatorId()) + .pagu(input.getPagu()) + .sumberDanaId(input.getSumberDanaId()) + .supplyPositioningMatrixId(input.getSupplyPositioningMatrixId()) + .metodePengadaanId(input.getMetodePengadaanId()) + .metodePenyampaianId(input.getMetodePenyampaianId()) + .jenisKontrakId(input.getJenisKontrakId()) + .strategiPengadaanId(input.getStrategiPengadaanId()) + .rencanaTanggal(input.getRencanaTanggal()) + .targetTanggal(input.getTargetTanggal()) + .hpe(input.getHpe()) + .isActive(input.getIsActive()) + .isDelete(false) + .build(); + + List drpPengadaanDokumenList = new ArrayList<>(); + if (ObjectUtils.isNotEmpty(input.getDataDrpPengadaanDokumen())) { + for (DrpPengadaanDokumenRequest drpPengadaanDokumenRequest : input.getDataDrpPengadaanDokumen()) { + DrpPengadaanDokumen drpPengadaanDokumen = DrpPengadaanDokumen.builder() + .drpId(input.getDrpId()) + .jenisDokumenId(drpPengadaanDokumenRequest.getJenisDokumenId()) + .filename(drpPengadaanDokumenRequest.getFilename()) + .file(drpPengadaanDokumenRequest.getFile()) + .keterangan(drpPengadaanDokumenRequest.getKeterangan()) + .isDelete(false) + .build(); + drpPengadaanDokumenList.add(drpPengadaanDokumen); + } + } + + var result = drpPengadaanRepository.save(drpPengadaan); + drpPengadaanDokumenRepository.saveAll(drpPengadaanDokumenList); + + return DrpPengadaanResponse.builder() + .id(result.getId()) + .build(); + + } + +} diff --git a/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java index fc40f3b..b256976 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java @@ -4,10 +4,13 @@ import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.Drp; import com.iconplus.smartproc.model.entity.DrpDokumen; +import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpDokumenRequest; +import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.repository.DrpDokumenRepository; +import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.util.Constants; import org.apache.commons.lang3.ObjectUtils; @@ -22,11 +25,14 @@ public class PostCreateDrpService implements BaseService drpDokumenList = new ArrayList<>(); - if (ObjectUtils.isNotEmpty(input.getData())) { - for (DrpDokumenRequest drpDokumenRequest : input.getData()) { + if (ObjectUtils.isNotEmpty(input.getDataDrpDokumen())) { + for (DrpDokumenRequest drpDokumenRequest : input.getDataDrpDokumen()) { DrpDokumen drpDokumen = DrpDokumen.builder() .drpId(drpSaved.getId()) .jenisDokumenId(drpDokumenRequest.getJenisDokumenId()) @@ -63,7 +69,24 @@ public class PostCreateDrpService implements BaseService drpPengadaanDokumenList = new ArrayList<>(); + if (ObjectUtils.isNotEmpty(input.getDataDrpPengadaanDokumen())) { + for (DrpPengadaanDokumenRequest drpPengadaanDokumenRequest : input.getDataDrpPengadaanDokumen()) { + DrpPengadaanDokumen drpPengadaanDokumen = DrpPengadaanDokumen.builder() + .drpId(drpSaved.getId()) + .jenisDokumenId(drpPengadaanDokumenRequest.getJenisDokumenId()) + .filename(drpPengadaanDokumenRequest.getFilename()) + .file(drpPengadaanDokumenRequest.getFile()) + .keterangan(drpPengadaanDokumenRequest.getKeterangan()) + .isDelete(false) + .build(); + drpPengadaanDokumenList.add(drpPengadaanDokumen); + } + } + drpDokumenRepository.saveAll(drpDokumenList); + drpPengadaanDokumenRepository.saveAll(drpPengadaanDokumenList); return DrpResponse.builder() .id(drpSaved.getId())