add bulk upload pengadaan
This commit is contained in:
parent
2415c7cc7c
commit
a2d9f5e8b5
12
pom.xml
12
pom.xml
@ -135,6 +135,18 @@
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>5.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>5.2.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -25,6 +25,7 @@ public class DrpPengadaanController {
|
||||
private final EditUploadDrpPengadaanService editUploadDrpPengadaanService;
|
||||
private final GetDrpPengadaanService getDrpPengadaanService;
|
||||
private final PutDrpPengadaanService putDrpPengadaanService;
|
||||
private final UploadBulkUploadPengadaanService uploadBulkUploadPengadaanService;
|
||||
|
||||
public DrpPengadaanController(PostCreateDrpPengadaanService postCreateDrpPengadaanService,
|
||||
GetListDrpPengadaanService getListDrpPengadaanService,
|
||||
@ -33,7 +34,8 @@ public class DrpPengadaanController {
|
||||
DeleteDokumenPendukungService deleteDokumenPendukungService,
|
||||
EditUploadDrpPengadaanService editUploadDrpPengadaanService,
|
||||
GetDrpPengadaanService getDrpPengadaanService,
|
||||
PutDrpPengadaanService putDrpPengadaanService) {
|
||||
PutDrpPengadaanService putDrpPengadaanService,
|
||||
UploadBulkUploadPengadaanService uploadBulkUploadPengadaanService) {
|
||||
this.postCreateDrpPengadaanService = postCreateDrpPengadaanService;
|
||||
this.getListDrpPengadaanService = getListDrpPengadaanService;
|
||||
this.postDrpUploadDokumenPendukungService = postDrpUploadDokumenPendukungService;
|
||||
@ -42,6 +44,7 @@ public class DrpPengadaanController {
|
||||
this.editUploadDrpPengadaanService = editUploadDrpPengadaanService;
|
||||
this.getDrpPengadaanService = getDrpPengadaanService;
|
||||
this.putDrpPengadaanService = putDrpPengadaanService;
|
||||
this.uploadBulkUploadPengadaanService = uploadBulkUploadPengadaanService;
|
||||
}
|
||||
|
||||
@GetMapping("/list/{id}")
|
||||
@ -110,4 +113,11 @@ public class DrpPengadaanController {
|
||||
return deleteDokumenPendukungService.execute(drpPengadaanDokumenRequest);
|
||||
}
|
||||
|
||||
@PostMapping("/bulk/upload")
|
||||
public EmptyResponse bulkUploadPengadaan(@RequestParam(name = "file") MultipartFile file) throws IOException {
|
||||
return uploadBulkUploadPengadaanService.execute(DrpPengadaanRequest.builder()
|
||||
.file(file)
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Date;
|
||||
@ -20,18 +21,28 @@ public class DrpPengadaanRequest extends BaseRequest {
|
||||
|
||||
private Long id;
|
||||
private Long drpId;
|
||||
private Integer tahun;
|
||||
private String nomor;
|
||||
private String namaPengadaan;
|
||||
private Long lokasiId;
|
||||
private String lokasi;
|
||||
private Long jenisPengadaanId;
|
||||
private String jenisPengadaan;
|
||||
private Long unitInisiatorId;
|
||||
private String unitInisiator;
|
||||
private BigDecimal pagu;
|
||||
private Long sumberDanaId;
|
||||
private String sumberDana;
|
||||
private Long supplyPositioningMatrixId;
|
||||
private String supplyPositioningMatrix;
|
||||
private Long metodePengadaanId;
|
||||
private String metodePengadaan;
|
||||
private Long metodePenyampaianId;
|
||||
private String metodePenyampaian;
|
||||
private Long jenisKontrakId;
|
||||
private String jenisKontrak;
|
||||
private Long strategiPengadaanId;
|
||||
private String strategiPengadaan;
|
||||
private Date rencanaTanggal;
|
||||
private Date targetTanggal;
|
||||
private BigDecimal hpe;
|
||||
@ -42,4 +53,6 @@ public class DrpPengadaanRequest extends BaseRequest {
|
||||
|
||||
private transient Pageable pageable;
|
||||
|
||||
private MultipartFile file;
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -98,5 +99,11 @@ public interface DrpPengadaanRepository extends JpaRepository<DrpPengadaan, Long
|
||||
|
||||
Optional<DrpPengadaan> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
@Query(value = "SELECT dp " +
|
||||
"FROM DrpPengadaan dp " +
|
||||
"WHERE dp.namaPengadaan in (:namaPengadaan) " +
|
||||
"AND dp.isDelete = false")
|
||||
List<DrpPengadaan> getDrpPengadaanByListNamaPengadaan(List<String> namaPengadaan);
|
||||
|
||||
|
||||
}
|
||||
|
@ -47,8 +47,6 @@ public interface DrpRepository extends JpaRepository<Drp, Long> {
|
||||
"WHERE d.isDelete = false")
|
||||
Page<DrpApprovalView> getListApprovalDrp(Pageable pageable);
|
||||
|
||||
|
||||
|
||||
@Query(value = "SELECT d.id as id, " +
|
||||
"d.tahun as tahun, " +
|
||||
"d.isPrint as isPrint, " +
|
||||
@ -57,4 +55,10 @@ public interface DrpRepository extends JpaRepository<Drp, Long> {
|
||||
"WHERE d.isDelete = false")
|
||||
Page<DrpView> getListPrintDrp(Pageable pageable);
|
||||
|
||||
@Query(value = "SELECT d " +
|
||||
"FROM Drp d " +
|
||||
"WHERE d.isDelete = false " +
|
||||
"AND d.tahun in (:tahun)")
|
||||
List<Drp> getListDrpByList(List<Integer> tahun);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -29,4 +30,10 @@ public interface JenisKontrakRepository extends JpaRepository<JenisKontrak, Long
|
||||
|
||||
Optional<JenisKontrak> findByJenisKontrakAndIsDeleteFalse(String jenisKontrak);
|
||||
|
||||
@Query("SELECT jk " +
|
||||
"FROM JenisKontrak jk " +
|
||||
"WHERE jk.isDelete = false " +
|
||||
"AND jk.jenisKontrak in (:listJenisKontrak)")
|
||||
List<JenisKontrak> getListJenisKontrakByList(List<String> listJenisKontrak);
|
||||
|
||||
}
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -25,5 +26,11 @@ public interface JenisPengadaanRepository extends JpaRepository<JenisPengadaan,
|
||||
"AND (:search='' OR UPPER(jp.jenisPengadaan) like :search) " +
|
||||
"ORDER BY jp.id")
|
||||
Page<JenisPengadaanView> getListJenisPengadaan(String search, Pageable pageable);
|
||||
|
||||
@Query(value = "SELECT jp " +
|
||||
"FROM JenisPengadaan jp " +
|
||||
"WHERE jp.jenisPengadaan in (:jenisPengadaan) " +
|
||||
"AND jp.isDelete = false ")
|
||||
List<JenisPengadaan> getListPengadaan(List<String> jenisPengadaan);
|
||||
|
||||
}
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -28,5 +29,11 @@ public interface LokasiRepository extends JpaRepository<Lokasi, Long> {
|
||||
Optional<Lokasi> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
Optional<Lokasi> findByLokasiAndIsDeleteFalse(String lokasi);
|
||||
|
||||
@Query(value = "SELECT l " +
|
||||
"FROM Lokasi l " +
|
||||
"WHERE l.lokasi in (:lokasi) " +
|
||||
"AND l.isDelete = false")
|
||||
List<Lokasi> getListLokasi(List<String> lokasi);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -28,5 +29,11 @@ public interface MetodePengadaanRepository extends JpaRepository<MetodePengadaan
|
||||
Optional<MetodePengadaan> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
Optional<MetodePengadaan> findByMetodePengadaanAndIsDeleteFalse(String metodePengadaan);
|
||||
|
||||
@Query(value = "SELECT mp " +
|
||||
"FROM MetodePengadaan mp " +
|
||||
"WHERE mp.isDelete = false " +
|
||||
"AND mp.metodePengadaan in (:metodePengadaan)")
|
||||
List<MetodePengadaan> getListMetodePengadaanByList(List<String> metodePengadaan);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -28,5 +29,11 @@ public interface MetodePenyampaianRepository extends JpaRepository<MetodePenyamp
|
||||
Optional<MetodePenyampaian> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
Optional<MetodePenyampaian> findByMetodePenyampaianAndIsDeleteFalse(String metodePenyampaian);
|
||||
|
||||
@Query(value = "SELECT mp " +
|
||||
"FROM MetodePenyampaian mp " +
|
||||
"WHERE mp.isDelete = false " +
|
||||
"AND mp.metodePenyampaian in (:metodePenyampaians)")
|
||||
List<MetodePenyampaian> getListMetodePenyampaianByList(List<String> metodePenyampaians);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -28,5 +29,11 @@ public interface StrategiPengadaanRepository extends JpaRepository<StrategiPenga
|
||||
Optional<StrategiPengadaan> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
Optional<StrategiPengadaan> findByStrategiPengadaanAndIsDeleteFalse(String strategiPengadaan);
|
||||
|
||||
@Query(value = "SELECT sp " +
|
||||
"FROM StrategiPengadaan sp " +
|
||||
"WHERE sp.isDelete = false " +
|
||||
"AND sp.strategiPengadaan in (:listStrategiPengadaan)")
|
||||
List<StrategiPengadaan> getListStrategiPengadaanByList(List<String> listStrategiPengadaan);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -26,5 +27,11 @@ public interface SumberDanaRepository extends JpaRepository<SumberDana, Long> {
|
||||
"ORDER BY sd.id")
|
||||
Page<SumberDanaView> getListSumberDana(String search, Pageable pageable);
|
||||
|
||||
@Query(value = "SELECT sd " +
|
||||
"FROM SumberDana sd " +
|
||||
"WHERE sd.isDelete = false " +
|
||||
"AND sd.sumberDana in (:sumberDanas)")
|
||||
List<SumberDana> getListSumberDanaByList(List<String> sumberDanas);
|
||||
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import com.iconplus.smartproc.model.entity.SupplyPositioningMatrix;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -28,5 +29,10 @@ public interface SupplyPositioningMatrixRepository extends JpaRepository<SupplyP
|
||||
Optional<SupplyPositioningMatrix> findByIdAndIsDeleteFalse(Long id);
|
||||
|
||||
Optional<SupplyPositioningMatrix> findBySupplyPositioningMatrixAndIsDeleteFalse(String supplyPositioningMatrix);
|
||||
|
||||
@Query(value = "SELECT spm " +
|
||||
"FROM SupplyPositioningMatrix spm " +
|
||||
"WHERE spm.supplyPositioningMatrix in (:supplyPositioningMatrix)")
|
||||
List<SupplyPositioningMatrix> getListSupplyPositioningMatrix(List<String> supplyPositioningMatrix);
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import com.iconplus.smartproc.model.entity.UnitInisiator;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
@ -26,5 +27,11 @@ public interface UnitInisiatorRepository extends JpaRepository<UnitInisiator, Lo
|
||||
"ORDER BY ui.id")
|
||||
Page<UnitInisiatorView> getListUnitInisiator(String search, Pageable pageable);
|
||||
|
||||
@Query(value = "SELECT ui " +
|
||||
"FROM UnitInisiator ui " +
|
||||
"WHERE ui.isDelete = false " +
|
||||
"AND ui.unitInisiator in (:unitInisiators)")
|
||||
List<UnitInisiator> getListUnitInisiatorByList(List<String> unitInisiators);
|
||||
|
||||
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.sql.Timestamp;
|
||||
@ -118,4 +119,9 @@ public class CommonService {
|
||||
|
||||
return MatrixToImageWriter.toBufferedImage(bitMatrix);
|
||||
}
|
||||
|
||||
public boolean hasExcelFormat(MultipartFile file) {
|
||||
String type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
||||
return type.equals(file.getContentType());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,350 @@
|
||||
package com.iconplus.smartproc.service.drppengadaan;
|
||||
|
||||
import com.iconplus.smartproc.exception.BusinessException;
|
||||
import com.iconplus.smartproc.helper.model.EmptyResponse;
|
||||
import com.iconplus.smartproc.helper.service.BaseService;
|
||||
import com.iconplus.smartproc.model.entity.*;
|
||||
import com.iconplus.smartproc.model.request.DrpPengadaanRequest;
|
||||
import com.iconplus.smartproc.repository.*;
|
||||
import com.iconplus.smartproc.service.CommonService;
|
||||
import com.iconplus.smartproc.util.Constants;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class UploadBulkUploadPengadaanService implements BaseService<DrpPengadaanRequest, EmptyResponse> {
|
||||
|
||||
private final DrpPengadaanRepository drpPengadaanRepository;
|
||||
private final CommonService commonService;
|
||||
private final LokasiRepository lokasiRepository;
|
||||
private final JenisPengadaanRepository jenisPengadaanRepository;
|
||||
private final UnitInisiatorRepository unitInisiatorRepository;
|
||||
private final SumberDanaRepository sumberDanaRepository;
|
||||
private final SupplyPositioningMatrixRepository supplyPositioningMatrixRepository;
|
||||
private final MetodePengadaanRepository metodePengadaanRepository;
|
||||
private final MetodePenyampaianRepository metodePenyampaianRepository;
|
||||
private final JenisKontrakRepository jenisKontrakRepository;
|
||||
private final StrategiPengadaanRepository strategiPengadaanRepository;
|
||||
private final DrpRepository drpRepository;
|
||||
|
||||
public UploadBulkUploadPengadaanService(DrpPengadaanRepository drpPengadaanRepository,
|
||||
CommonService commonService,
|
||||
LokasiRepository lokasiRepository,
|
||||
JenisPengadaanRepository jenisPengadaanRepository,
|
||||
UnitInisiatorRepository unitInisiatorRepository,
|
||||
SumberDanaRepository sumberDanaRepository,
|
||||
SupplyPositioningMatrixRepository supplyPositioningMatrixRepository,
|
||||
MetodePengadaanRepository metodePengadaanRepository,
|
||||
MetodePenyampaianRepository metodePenyampaianRepository,
|
||||
JenisKontrakRepository jenisKontrakRepository,
|
||||
StrategiPengadaanRepository strategiPengadaanRepository,
|
||||
DrpRepository drpRepository) {
|
||||
this.drpPengadaanRepository = drpPengadaanRepository;
|
||||
this.commonService = commonService;
|
||||
this.lokasiRepository = lokasiRepository;
|
||||
this.jenisPengadaanRepository = jenisPengadaanRepository;
|
||||
this.unitInisiatorRepository = unitInisiatorRepository;
|
||||
this.sumberDanaRepository = sumberDanaRepository;
|
||||
this.supplyPositioningMatrixRepository = supplyPositioningMatrixRepository;
|
||||
this.metodePengadaanRepository = metodePengadaanRepository;
|
||||
this.metodePenyampaianRepository = metodePenyampaianRepository;
|
||||
this.jenisKontrakRepository = jenisKontrakRepository;
|
||||
this.strategiPengadaanRepository = strategiPengadaanRepository;
|
||||
this.drpRepository = drpRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EmptyResponse execute(DrpPengadaanRequest input) throws IOException {
|
||||
|
||||
var isExcelFormat = commonService.hasExcelFormat(input.getFile());
|
||||
if (!isExcelFormat) {
|
||||
throw new BusinessException(Constants.ERR_CODE_10014,
|
||||
Constants.ERR_TTL_10014,
|
||||
Constants.ERR_MSG_10014);
|
||||
}
|
||||
|
||||
var listDataExcel = transformFile(input);
|
||||
validateDrpRequest(listDataExcel);
|
||||
|
||||
List<DrpPengadaan> drpPengadaanList = new ArrayList<>();
|
||||
|
||||
List<Lokasi> lokasiList = getListLokasi(listDataExcel);
|
||||
List<JenisPengadaan> jenisPengadaanList = getJenisPengadaans(listDataExcel);
|
||||
List<UnitInisiator> unitInisiatorList = getUnitInisiators(listDataExcel);
|
||||
List<SumberDana> sumberDanaList = getSumberDanas(listDataExcel);
|
||||
List<SupplyPositioningMatrix> supplyPositioningMatrixList = getSupplyPositioningMatrices(listDataExcel);
|
||||
List<MetodePengadaan> metodePengadaanList = getMetodePengadaans(listDataExcel);
|
||||
List<MetodePenyampaian> metodePenyampaianList = getMetodePenyampaians(listDataExcel);
|
||||
List<JenisKontrak> jenisKontrakList = getJenisKontraks(listDataExcel);
|
||||
List<StrategiPengadaan> strategiPengadaanList = getStrategiPengadaans(listDataExcel);
|
||||
List<Integer> listDrp = listDataExcel.stream().map(DrpPengadaanRequest::getTahun).collect(Collectors.toList());
|
||||
List<Drp> drpList = drpRepository.getListDrpByList(listDrp);
|
||||
|
||||
|
||||
for (DrpPengadaanRequest drpPengadaanRequest : listDataExcel) {
|
||||
|
||||
DrpPengadaan drpPengadaanEntity = DrpPengadaan.builder()
|
||||
.namaPengadaan(drpPengadaanRequest.getNamaPengadaan())
|
||||
.nomor(drpPengadaanRequest.getNomor())
|
||||
.pagu(drpPengadaanRequest.getPagu())
|
||||
.rencanaTanggal(drpPengadaanRequest.getRencanaTanggal())
|
||||
.targetTanggal(drpPengadaanRequest.getTargetTanggal())
|
||||
.hpe(drpPengadaanRequest.getHpe())
|
||||
.isDelete(false)
|
||||
.build();
|
||||
|
||||
lokasiList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getLokasi(), drpPengadaanRequest.getLokasi())) {
|
||||
drpPengadaanEntity.setLokasiId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
jenisPengadaanList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getJenisPengadaan(), drpPengadaanRequest.getJenisPengadaan())) {
|
||||
drpPengadaanEntity.setJenisPengadaanId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
unitInisiatorList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getUnitInisiator(), drpPengadaanRequest.getUnitInisiator())) {
|
||||
drpPengadaanEntity.setUnitInisiatorId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
sumberDanaList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getSumberDana(), drpPengadaanRequest.getSumberDana())) {
|
||||
drpPengadaanEntity.setSumberDanaId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
supplyPositioningMatrixList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getSupplyPositioningMatrix(), drpPengadaanRequest.getSupplyPositioningMatrix())) {
|
||||
drpPengadaanEntity.setSupplyPositioningMatrixId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
metodePengadaanList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getMetodePengadaan(), drpPengadaanRequest.getMetodePengadaan())) {
|
||||
drpPengadaanEntity.setMetodePengadaanId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
metodePenyampaianList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getMetodePenyampaian(), drpPengadaanRequest.getMetodePenyampaian())) {
|
||||
drpPengadaanEntity.setMetodePenyampaianId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
jenisKontrakList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getJenisKontrak(), drpPengadaanRequest.getJenisKontrak())) {
|
||||
drpPengadaanEntity.setJenisKontrakId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
strategiPengadaanList.forEach(c-> {
|
||||
if (StringUtils.equalsIgnoreCase(c.getStrategiPengadaan(), drpPengadaanRequest.getStrategiPengadaan())) {
|
||||
drpPengadaanEntity.setStrategiPengadaanId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
drpList.forEach(c-> {
|
||||
if (c.getTahun().equals(drpPengadaanRequest.getTahun())) {
|
||||
drpPengadaanEntity.setDrpId(c.getId());
|
||||
}
|
||||
});
|
||||
|
||||
drpPengadaanList.add(drpPengadaanEntity);
|
||||
}
|
||||
|
||||
drpPengadaanRepository.saveAll(drpPengadaanList);
|
||||
|
||||
return new EmptyResponse();
|
||||
}
|
||||
|
||||
private void validateDrpRequest(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var drpPengadaan = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getNamaPengadaan)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<DrpPengadaan> drpPengadaans = drpPengadaanRepository.getDrpPengadaanByListNamaPengadaan(drpPengadaan);
|
||||
if (ObjectUtils.isNotEmpty(drpPengadaans)) {
|
||||
List<String> existDrpPengadaan = drpPengadaans.stream().map(DrpPengadaan::getNamaPengadaan).collect(Collectors.toList());
|
||||
throw new BusinessException(Constants.ERR_CODE_10015,
|
||||
Constants.ERR_TTL_10015,
|
||||
String.format(Constants.ERR_MSG_10015, existDrpPengadaan));
|
||||
}
|
||||
}
|
||||
|
||||
private List<StrategiPengadaan> getStrategiPengadaans(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listStrategiPengadaan = listDataExcel.stream().map(DrpPengadaanRequest::getStrategiPengadaan).collect(Collectors.toList());
|
||||
return strategiPengadaanRepository.getListStrategiPengadaanByList(listStrategiPengadaan);
|
||||
}
|
||||
|
||||
private List<JenisKontrak> getJenisKontraks(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var jenisKontraks = listDataExcel.stream().map(DrpPengadaanRequest::getJenisKontrak).collect(Collectors.toList());
|
||||
return jenisKontrakRepository.getListJenisKontrakByList(jenisKontraks);
|
||||
}
|
||||
|
||||
private List<MetodePenyampaian> getMetodePenyampaians(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listMetodePenyampaian = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getMetodePenyampaian)
|
||||
.collect(Collectors.toList());
|
||||
return metodePenyampaianRepository.getListMetodePenyampaianByList(listMetodePenyampaian);
|
||||
}
|
||||
|
||||
private List<MetodePengadaan> getMetodePengadaans(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listMetodePengadaan = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getMetodePengadaan)
|
||||
.collect(Collectors.toList());
|
||||
return metodePengadaanRepository.getListMetodePengadaanByList(listMetodePengadaan);
|
||||
}
|
||||
|
||||
private List<SupplyPositioningMatrix> getSupplyPositioningMatrices(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listSupplyPositioningMatrix = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getSupplyPositioningMatrix)
|
||||
.collect(Collectors.toList());
|
||||
return supplyPositioningMatrixRepository.getListSupplyPositioningMatrix(listSupplyPositioningMatrix);
|
||||
}
|
||||
|
||||
private List<SumberDana> getSumberDanas(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listSumberDana = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getSumberDana)
|
||||
.collect(Collectors.toList());
|
||||
return sumberDanaRepository.getListSumberDanaByList(listSumberDana);
|
||||
}
|
||||
|
||||
private List<UnitInisiator> getUnitInisiators(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listUnitInisiator = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getUnitInisiator)
|
||||
.collect(Collectors.toList());
|
||||
return unitInisiatorRepository.getListUnitInisiatorByList(listUnitInisiator);
|
||||
}
|
||||
|
||||
private List<JenisPengadaan> getJenisPengadaans(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listJenisPengadaan = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getJenisPengadaan)
|
||||
.collect(Collectors.toList());
|
||||
return jenisPengadaanRepository.getListPengadaan(listJenisPengadaan);
|
||||
}
|
||||
|
||||
private List<Lokasi> getListLokasi(List<DrpPengadaanRequest> listDataExcel) {
|
||||
var listLokasi = listDataExcel.stream()
|
||||
.map(DrpPengadaanRequest::getLokasi)
|
||||
.collect(Collectors.toList());
|
||||
return lokasiRepository.getListLokasi(listLokasi);
|
||||
}
|
||||
|
||||
private List<DrpPengadaanRequest> transformFile(DrpPengadaanRequest input) throws IOException {
|
||||
try {
|
||||
Workbook workbook = new XSSFWorkbook(input.getFile().getInputStream());
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
|
||||
List<DrpPengadaanRequest> drpPengadaanRequestList = new ArrayList<>();
|
||||
Iterator<Row> rows = sheet.iterator();
|
||||
|
||||
int rowNumber = 0;
|
||||
while (rows.hasNext()) {
|
||||
Row currentRow = rows.next();
|
||||
|
||||
// skip header
|
||||
if (rowNumber <= 7) {
|
||||
rowNumber++;
|
||||
continue;
|
||||
}
|
||||
|
||||
Iterator<Cell> cellsInRow = currentRow.iterator();
|
||||
DrpPengadaanRequest drpPengadaanRequest = DrpPengadaanRequest.builder().build();
|
||||
|
||||
int cellIdx = 0;
|
||||
while (cellsInRow.hasNext()) {
|
||||
Cell currentCell = cellsInRow.next();
|
||||
|
||||
switch (cellIdx) {
|
||||
case 0:
|
||||
drpPengadaanRequest.setId((long) currentCell.getNumericCellValue());
|
||||
break;
|
||||
case 1:
|
||||
drpPengadaanRequest.setNamaPengadaan(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 2:
|
||||
drpPengadaanRequest.setLokasi(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 3:
|
||||
drpPengadaanRequest.setJenisPengadaan(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 4:
|
||||
drpPengadaanRequest.setUnitInisiator(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 5:
|
||||
drpPengadaanRequest.setNomor(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 6:
|
||||
drpPengadaanRequest.setPagu(BigDecimal.valueOf(currentCell.getNumericCellValue()));
|
||||
break;
|
||||
case 7:
|
||||
drpPengadaanRequest.setSumberDana(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 8:
|
||||
drpPengadaanRequest.setSupplyPositioningMatrix(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 9:
|
||||
drpPengadaanRequest.setMetodePengadaan(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 10:
|
||||
drpPengadaanRequest.setMetodePenyampaian(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 11:
|
||||
drpPengadaanRequest.setJenisKontrak(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 12:
|
||||
drpPengadaanRequest.setStrategiPengadaan(currentCell.getStringCellValue());
|
||||
break;
|
||||
case 13:
|
||||
drpPengadaanRequest.setRencanaTanggal(new Date(currentCell.getDateCellValue().getTime()));
|
||||
break;
|
||||
case 14:
|
||||
drpPengadaanRequest.setTargetTanggal(new Date(currentCell.getDateCellValue().getTime()));
|
||||
break;
|
||||
case 15:
|
||||
drpPengadaanRequest.setHpe(BigDecimal.valueOf(currentCell.getNumericCellValue()));
|
||||
break;
|
||||
case 16:
|
||||
drpPengadaanRequest.setTahun((int) currentCell.getNumericCellValue());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cellIdx++;
|
||||
}
|
||||
|
||||
if (drpPengadaanRequest.getId() == null || drpPengadaanRequest.getId() != 0) {
|
||||
drpPengadaanRequestList.add(drpPengadaanRequest);
|
||||
}
|
||||
|
||||
}
|
||||
workbook.close();
|
||||
return drpPengadaanRequestList;
|
||||
} catch (IOException e) {
|
||||
throw new BusinessException(Constants.ERR_CODE_10016,
|
||||
Constants.ERR_TTL_10016,
|
||||
String.format(Constants.ERR_MSG_10016, e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -56,6 +56,18 @@ public class Constants {
|
||||
public static final String ERR_TTL_10013 = "Gagal Approve";
|
||||
public static final String ERR_MSG_10013 = "Silahkan menunggu appoval %s terlebih dahulu";
|
||||
|
||||
public static final String ERR_CODE_10014 = "10014";
|
||||
public static final String ERR_TTL_10014 = "Failed Import";
|
||||
public static final String ERR_MSG_10014 = "Silahkan upload format document excel";
|
||||
|
||||
public static final String ERR_CODE_10015 = "10015";
|
||||
public static final String ERR_TTL_10015 = "Failed Import";
|
||||
public static final String ERR_MSG_10015 = "Nama DRP Pengadaan sudah tersedia : %s";
|
||||
|
||||
public static final String ERR_CODE_10016 = "10016";
|
||||
public static final String ERR_TTL_10016 = "Failed Import";
|
||||
public static final String ERR_MSG_10016 = "fail to parse Excel file: %s";
|
||||
|
||||
public static final String ERR_CODE_40041 = "40041";
|
||||
public static final String ERR_TTL_40041 = "Terjadi Gangguan";
|
||||
public static final String ERR_MSG_40041 = "Masalah Koneksi System";
|
||||
|
Loading…
x
Reference in New Issue
Block a user