fix api post drp

This commit is contained in:
dirgantarasiahaan
2023-05-29 02:56:37 +07:00
parent e2265a8aea
commit e09222e163
11 changed files with 382 additions and 5 deletions

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<DrpPengadaanDokumenRequest> dataDrpPengadaanDokumen;
private transient Pageable pageable;
}

View File

@ -21,7 +21,9 @@ public class DrpRequest extends BaseRequest {
private Timestamp approveDate;
private Boolean isActive;
private List<DrpDokumenRequest> data;
private List<DrpDokumenRequest> dataDrpDokumen;
private List<DrpPengadaanDokumenRequest> dataDrpPengadaanDokumen;
private String search;
private transient Pageable pageable;

View File

@ -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;
}

View File

@ -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<DrpPengadaanDokumen, Long> {
}

View File

@ -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<DrpPengadaan, Long> {
}

View File

@ -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<DrpPengadaanRequest, DrpPengadaanResponse> {
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<DrpPengadaanDokumen> 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();
}
}

View File

@ -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<DrpRequest, DrpResponse
private final DrpRepository drpRepository;
private final DrpDokumenRepository drpDokumenRepository;
private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository;
public PostCreateDrpService (DrpRepository drpRepository,
DrpDokumenRepository drpDokumenRepository) {
DrpDokumenRepository drpDokumenRepository,
DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) {
this.drpRepository = drpRepository;
this.drpDokumenRepository = drpDokumenRepository;
this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository;
}
@Override
@ -49,8 +55,8 @@ public class PostCreateDrpService implements BaseService<DrpRequest, DrpResponse
var drpSaved = drpRepository.save(drp);
List<DrpDokumen> 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<DrpRequest, DrpResponse
}
}
List<DrpPengadaanDokumen> 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())