From f8428528134230af1396e737b031fb59e9542645 Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Fri, 2 Jun 2023 12:01:30 +0700 Subject: [PATCH] approval --- .../controller/ApprovalDrpController.java | 33 ++++++--- .../iconplus/smartproc/model/entity/Drp.java | 20 +++++- .../smartproc/model/entity/DrpApproval.java | 41 ++--------- .../model/entity/DrpRekomendasi.java | 45 ++++++++++++ .../model/projection/DrpApprovalView.java | 21 ++---- .../model/projection/DrpRekomendasiView.java | 27 ++++++++ .../model/request/DrpApprovalRequest.java | 10 ++- .../model/request/DrpRekomendasiRequest.java | 24 +++++++ .../model/request/ListDrpApprovalRequest.java | 20 ++++++ .../model/response/DrpApprovalResponse.java | 5 +- .../response/DrpRekomendasiResponse.java | 25 +++++++ .../smartproc/model/response/DrpResponse.java | 4 +- .../GetListDrpRekomendasiResponse.java | 22 ++++++ .../repository/DrpApprovalRepository.java | 16 +++++ .../repository/DrpRekomendasiRepository.java | 16 +++++ .../smartproc/repository/DrpRepository.java | 11 ++- .../approval/GetListApprovalDrpServie.java | 15 ++-- .../approval/GetListRekomendasiService.java | 24 +++++++ .../PostCreateDrpApprovalService.java | 42 +++++------ .../PostDrpApprovalExecutionService.java | 69 +++++++++++++++++++ .../approval/PostDrpRekomendasiService.java | 36 ++++++++++ 21 files changed, 421 insertions(+), 105 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java create mode 100644 src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/ListDrpApprovalRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java create mode 100644 src/main/java/com/iconplus/smartproc/service/approval/GetListRekomendasiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/approval/PostDrpRekomendasiService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java index 1ad61c3..7cb2713 100644 --- a/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java +++ b/src/main/java/com/iconplus/smartproc/controller/ApprovalDrpController.java @@ -1,15 +1,14 @@ package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyRequest; -import com.iconplus.smartproc.model.request.BidangRequest; +import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpApprovalRequest; -import com.iconplus.smartproc.model.response.DrpApprovalResponse; +import com.iconplus.smartproc.model.request.DrpRekomendasiRequest; +import com.iconplus.smartproc.model.request.ListDrpApprovalRequest; +import com.iconplus.smartproc.model.response.DrpRekomendasiResponse; import com.iconplus.smartproc.model.response.GetListDrpApprovalResponse; import com.iconplus.smartproc.model.response.GetListUserApprovalResponse; -import com.iconplus.smartproc.service.approval.GetListApprovalDrpServie; -import com.iconplus.smartproc.service.approval.GetListUserDirekturKomiteService; -import com.iconplus.smartproc.service.approval.GetListUserVpService; -import com.iconplus.smartproc.service.approval.PostCreateDrpApprovalService; +import com.iconplus.smartproc.service.approval.*; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; @@ -23,14 +22,20 @@ public class ApprovalDrpController { private GetListUserDirekturKomiteService getListUserDirekturKomiteService; private PostCreateDrpApprovalService postCreateDrpApprovalService; private GetListApprovalDrpServie getListApprovalDrpServie; + private PostDrpRekomendasiService postDrpRekomendasiService; + private PostDrpApprovalExecutionService postDrpApprovalExecutionService; public ApprovalDrpController(GetListUserVpService getListUserVpService, GetListUserDirekturKomiteService getListUserDirekturKomiteService, PostCreateDrpApprovalService postCreateDrpApprovalService, - GetListApprovalDrpServie getListApprovalDrpServie) { + GetListApprovalDrpServie getListApprovalDrpServie, + PostDrpRekomendasiService postDrpRekomendasiService, + PostDrpApprovalExecutionService postDrpApprovalExecutionService) { this.getListUserVpService = getListUserVpService; this.getListUserDirekturKomiteService = getListUserDirekturKomiteService; this.postCreateDrpApprovalService = postCreateDrpApprovalService; this.getListApprovalDrpServie = getListApprovalDrpServie; + this.postDrpRekomendasiService = postDrpRekomendasiService; + this.postDrpApprovalExecutionService = postDrpApprovalExecutionService; } @GetMapping("/vp") @@ -44,8 +49,8 @@ public class ApprovalDrpController { } @PostMapping - public DrpApprovalResponse createDrpApproval(@RequestBody DrpApprovalRequest drpApprovalRequest) { - return postCreateDrpApprovalService.execute(drpApprovalRequest); + public EmptyResponse createDrpHasApproval(@RequestBody ListDrpApprovalRequest listDrpApprovalRequest) { + return postCreateDrpApprovalService.execute(listDrpApprovalRequest); } @GetMapping @@ -61,4 +66,14 @@ public class ApprovalDrpController { return getListApprovalDrpServie.execute(drpApprovalRequest); } + + @PostMapping("/rekomendasi") + public DrpRekomendasiResponse drpRekomendasiResponse(@RequestBody DrpRekomendasiRequest drpRekomendasiRequest) { + return postDrpRekomendasiService.execute(drpRekomendasiRequest); + } + + @PostMapping("/execution") + public EmptyResponse drpApprovalExecution(@RequestBody DrpApprovalRequest drpApprovalRequest) { + return postDrpApprovalExecutionService.execute(drpApprovalRequest); + } } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Drp.java b/src/main/java/com/iconplus/smartproc/model/entity/Drp.java index 9ff9137..c97af01 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Drp.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Drp.java @@ -8,8 +8,7 @@ import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; -import java.sql.Timestamp; -import java.util.Date; +import java.sql.Date; @Data @Builder @@ -31,7 +30,22 @@ public class Drp extends BaseEntity { private String approveStatus; @Column(name = "approve_date") - private Timestamp approveDate; + private Date approveDate; + + @Column(name = "vp_approve_date") + private Date vpApproveDate; + + @Column(name = "komite_approve_date") + private Date komiteApproveDate; + + @Column(name = "direktur_approve_date") + private Date direkturApproveDate; + + @Column(name = "is_print") + private Boolean isPrint; + + @Column(name = "print_date") + private Date printDate; @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpApproval.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpApproval.java index bbf23cd..60881bf 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/DrpApproval.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpApproval.java @@ -8,7 +8,6 @@ import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; -import java.sql.Date; @Data @Builder @@ -26,41 +25,15 @@ public class DrpApproval extends BaseEntity { @Column(name = "drp_id") private Long drpId; - @Column(name = "approver_vp_id") - private Long approverVpId; + @Column(name = "approver_user_id") + private Long approverUserId; - @Column(name = "approver_vp_date") - private Date approverVpDate; + @Column(name = "is_approve") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isApprove; - @Column(name = "approver_komite1_id") - private Long approverKomite1Id; - - @Column(name = "approver_komite1_date") - private Date approverKomite1Date; - - @Column(name = "approver_komite2_id") - private Long approverKomite2Id; - - @Column(name = "approver_komite2_date") - private Date approverKomite2Date; - - @Column(name = "approver_komite3_id") - private Long approverKomite3Id; - - @Column(name = "approver_komite3_date") - private Date approverKomite3Date; - - @Column(name = "approver_komite4_id") - private Long approverKomite4Id; - - @Column(name = "approver_komite4_date") - private Date approverKomite4Date; - - @Column(name = "approver_direktur_id") - private Long approverDirekturId; - - @Column(name = "approver_direktur_date") - private Date approverDirekturDate; + @Column(name = "level") + private String level; @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java new file mode 100644 index 0000000..6d66fb1 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpRekomendasi.java @@ -0,0 +1,45 @@ +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.sql.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "drp_rekomendasi") +public class DrpRekomendasi extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "jenis_pengadaan_id") + private Long jenisPengadaanId; + + @Column(name = "drp_approval_id") + private Long drpApprovalId; + + @Column(name = "rekomendasi") + private String rekomendasi; + + @Column(name = "rekomendasi_date") + private Date rekomendasiDate; + + @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/projection/DrpApprovalView.java b/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java index 02befb2..0da75aa 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/DrpApprovalView.java @@ -1,5 +1,6 @@ package com.iconplus.smartproc.model.projection; + import java.sql.Date; public interface DrpApprovalView { @@ -16,23 +17,15 @@ public interface DrpApprovalView { String getApproveStatus(); void setApproveStatus(String approveStatus); - Date getApproverVpDate(); - void setApproveVpDate(Date approveVpDate); + Date getVpApproveDate(); + void setVpApproveDate(Date vpApproveDate); - Date getApproverKomite1Date(); - void setApproveKomite1Date(Date approveKomite1Date); + Date getKomiteApproveDate(); + void setKomiteApproveDate(Date komiteApproveDate); - Date getApproverKomite2Date(); - void setApproveKomite2Date(Date approveKomite2Date); + Date getDirekturApproveDate(); + void setDirekturApproveDate(Date direkturApproveDate); - Date getApproverKomite3Date(); - void setApproveKomite3Date(Date approveKomite3Date); - - Date getApproverKomite4Date(); - void setApproveKomite4Date(Date approveKomite4Date); - - Date getApproverDirekturDate(); - void setApproveDirekturDate(Date approveDirekturDate); } diff --git a/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java b/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java new file mode 100644 index 0000000..8c508ee --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/DrpRekomendasiView.java @@ -0,0 +1,27 @@ +package com.iconplus.smartproc.model.projection; + +import java.util.Date; + +public interface DrpRekomendasiView { + + Long getId(); + void setId(Long id); + + String getNomorRkp(); + void setNomorRkp(String nomorRkp); + + + String getNamaPengadaan(); + void setNamaPengadaan(String namaPengadaan); + + String getApproval(); + void setApproval(String approval); + + 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 036c7cc..ed23f8f 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpApprovalRequest.java @@ -13,13 +13,11 @@ import org.springframework.data.domain.Pageable; @NoArgsConstructor public class DrpApprovalRequest extends BaseRequest { + private Long userId; + private Boolean isApprove; private Long drpId; - private Long approverVpId; - private Long approverKomite1Id; - private Long approverKomite2Id; - private Long approverKomite3Id; - private Long approverKomite4Id; - private Long approverDirekturId; + private Long approverUserId; + private String level; 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 new file mode 100644 index 0000000..ff25205 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpRekomendasiRequest.java @@ -0,0 +1,24 @@ +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 java.sql.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DrpRekomendasiRequest extends BaseRequest { + + private Long id; + private Long drpApprovalId; + private Long jenisPengadaanId; + private String rekomendasi; + private Date rekomendasiDate; + + +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/ListDrpApprovalRequest.java b/src/main/java/com/iconplus/smartproc/model/request/ListDrpApprovalRequest.java new file mode 100644 index 0000000..dcf86ac --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/ListDrpApprovalRequest.java @@ -0,0 +1,20 @@ +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 java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ListDrpApprovalRequest extends BaseRequest { + + private Long id; + private Long drpId; + private List data; +} 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 53e2b83..e95254e 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpApprovalResponse.java @@ -19,9 +19,6 @@ public class DrpApprovalResponse extends BaseResponse { private Integer tahun; private String approveStatus; private Date approverVpDate; - private Date approverKomite1Date; - private Date approverKomite2Date; - private Date approverKomite3Date; - private Date approverKomite4Date; + private Date approverKomiteDate; private Date approverDirekturDate; } diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java new file mode 100644 index 0000000..301c297 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpRekomendasiResponse.java @@ -0,0 +1,25 @@ +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.util.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DrpRekomendasiResponse extends BaseResponse { + + private Long id; + private String nomorRkp; + private String namaPengadaan; + private String approval; + private String status; + private Date approveDate; + private Date rekomendasiDate; + private String rekomendasi; +} 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 392264f..8371492 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java @@ -6,7 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.sql.Timestamp; +import java.util.Date; import java.util.List; @Data @@ -17,7 +17,7 @@ public class DrpResponse extends BaseResponse { private Long id; private Integer tahun; private String approveStatus; - private Timestamp approveDate; + private Date approveDate; private Boolean isActive; private Boolean isDelete; diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java new file mode 100644 index 0000000..c1e4378 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListDrpRekomendasiResponse.java @@ -0,0 +1,22 @@ +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 +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetListDrpRekomendasiResponse extends BaseResponse { + + private List data; + private Pagination pagination; +} diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java index 1320983..cd3b839 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpApprovalRepository.java @@ -2,9 +2,25 @@ package com.iconplus.smartproc.repository; import com.iconplus.smartproc.model.entity.DrpApproval; 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 public interface DrpApprovalRepository extends JpaRepository { + Optional findByDrpIdAndApproverUserIdAndIsDeleteFalse(Long drpId, Long userId); + + + @Query(value = "SELECT da " + + "FROM DrpApproval da " + + "WHERE da.isDelete = false " + + "AND da.drpId = :drpId " + + "AND UPPER(da.level) = 'KOMITE' " + + "AND da.isApprove = null") + List getListKomiteApproval(Long drpId); + + } diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java new file mode 100644 index 0000000..57e716b --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/repository/DrpRekomendasiRepository.java @@ -0,0 +1,16 @@ +package com.iconplus.smartproc.repository; + +import com.iconplus.smartproc.model.entity.DrpRekomendasi; +import org.springframework.data.domain.Page; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface DrpRekomendasiRepository extends JpaRepository { + +// @Query(value = "SELECT " + +// "FROM " + +// "WHERE") +// Page<> +} diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpRepository.java index 6793686..a4d4acc 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpRepository.java @@ -33,18 +33,15 @@ public interface DrpRepository extends JpaRepository { Page findByIsDeleteFalse(Timestamp approveDate, Pageable pageable); + Page findByIsDeleteFalse(Pageable pageable); @Query(value = "SELECT d.id as id, " + "d.tahun as tahun, " + "d.approveStatus as approveStatus, " + - "da.approverVpDate as approverVpDate, " + - "da.approverKomite1Date as approverKomite1Date, " + - "da.approverKomite2Date as approverKomite2Date, " + - "da.approverKomite3Date as approverKomite3Date, " + - "da.approverKomite4Date as approverKomite4Date, " + - "da.approverDirekturDate as approverDirekturDate " + + "d.vpApproveDate as vpApproveDate, " + + "d.komiteApproveDate as komiteApproveDate, " + + "d.direkturApproveDate as direkturApproveDate " + "FROM Drp d " + - "JOIN DrpApproval da ON da.drpId = d.id " + "WHERE d.isDelete = false") Page getListApprovalDrp(Pageable pageable); } diff --git a/src/main/java/com/iconplus/smartproc/service/approval/GetListApprovalDrpServie.java b/src/main/java/com/iconplus/smartproc/service/approval/GetListApprovalDrpServie.java index 756e07c..20464ac 100644 --- a/src/main/java/com/iconplus/smartproc/service/approval/GetListApprovalDrpServie.java +++ b/src/main/java/com/iconplus/smartproc/service/approval/GetListApprovalDrpServie.java @@ -1,16 +1,22 @@ package com.iconplus.smartproc.service.approval; +import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.model.Pagination; import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.DrpApproval; import com.iconplus.smartproc.model.projection.DrpApprovalView; import com.iconplus.smartproc.model.request.DrpApprovalRequest; import com.iconplus.smartproc.model.response.DrpApprovalResponse; import com.iconplus.smartproc.model.response.GetListDrpApprovalResponse; import com.iconplus.smartproc.repository.DrpApprovalRepository; +import com.iconplus.smartproc.repository.DrpRekomendasiRepository; import com.iconplus.smartproc.repository.DrpRepository; +import com.iconplus.smartproc.util.Constants; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.sql.Date; import java.util.ArrayList; import java.util.List; @@ -39,12 +45,9 @@ public class GetListApprovalDrpServie implements BaseService { + + private final DrpRekomendasiRepository drpRekomendasiRepository; + + public GetListRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository) { + this.drpRekomendasiRepository = drpRekomendasiRepository; + } + + @Override + public GetListDrpRekomendasiResponse execute(DrpRekomendasiRequest input) { + return null; + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/approval/PostCreateDrpApprovalService.java b/src/main/java/com/iconplus/smartproc/service/approval/PostCreateDrpApprovalService.java index 4500c26..1f9b32c 100644 --- a/src/main/java/com/iconplus/smartproc/service/approval/PostCreateDrpApprovalService.java +++ b/src/main/java/com/iconplus/smartproc/service/approval/PostCreateDrpApprovalService.java @@ -1,30 +1,32 @@ package com.iconplus.smartproc.service.approval; 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.DrpApproval; import com.iconplus.smartproc.model.request.DrpApprovalRequest; -import com.iconplus.smartproc.model.response.DrpApprovalResponse; +import com.iconplus.smartproc.model.request.ListDrpApprovalRequest; import com.iconplus.smartproc.repository.DrpApprovalRepository; import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.util.Constants; import org.springframework.stereotype.Service; -import java.io.IOException; +import java.util.ArrayList; +import java.util.List; @Service -public class PostCreateDrpApprovalService implements BaseService { +public class PostCreateDrpApprovalService implements BaseService { - private final DrpApprovalRepository drpApprovalRepository; private final DrpRepository drpRepository; - public PostCreateDrpApprovalService(DrpApprovalRepository drpApprovalRepository, - DrpRepository drpRepository) { - this.drpApprovalRepository = drpApprovalRepository; + private final DrpApprovalRepository drpApprovalRepository; + public PostCreateDrpApprovalService(DrpRepository drpRepository, + DrpApprovalRepository drpApprovalRepository) { this.drpRepository = drpRepository; + this.drpApprovalRepository = drpApprovalRepository; } @Override - public DrpApprovalResponse execute(DrpApprovalRequest input) { + public EmptyResponse execute(ListDrpApprovalRequest input) { var drpOptional = drpRepository.findByIdAndIsDeleteFalse(input.getDrpId()); if (drpOptional.isEmpty()) { @@ -33,19 +35,19 @@ public class PostCreateDrpApprovalService implements BaseService drpApprovalList = new ArrayList<>(); + for (DrpApprovalRequest drpApprovalRequest : input.getData()) { + DrpApproval drpApproval = DrpApproval.builder() + .drpId(input.getDrpId()) + .approverUserId(drpApprovalRequest.getApproverUserId()) + .level(drpApprovalRequest.getLevel()) + .isDelete(false) + .build(); + drpApprovalList.add(drpApproval); + } - var result = drpApprovalRepository.save(drpApproval); + drpApprovalRepository.saveAll(drpApprovalList); - return DrpApprovalResponse.builder() - .id(result.getId()) - .build(); + return new EmptyResponse(); } } diff --git a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java new file mode 100644 index 0000000..8b45036 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpApprovalExecutionService.java @@ -0,0 +1,69 @@ +package com.iconplus.smartproc.service.approval; + +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.request.DrpApprovalRequest; +import com.iconplus.smartproc.repository.DrpApprovalRepository; +import com.iconplus.smartproc.repository.DrpRepository; +import com.iconplus.smartproc.util.Constants; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.sql.Date; +import java.time.LocalDate; + +@Service +public class PostDrpApprovalExecutionService implements BaseService { + + private final DrpApprovalRepository drpApprovalRepository; + private final DrpRepository drpRepository; + + public PostDrpApprovalExecutionService(DrpApprovalRepository drpApprovalRepository, + DrpRepository drpRepository) { + this.drpApprovalRepository = drpApprovalRepository; + this.drpRepository = drpRepository; + } + + @Override + public EmptyResponse execute(DrpApprovalRequest input) { + + var drpApproval = drpApprovalRepository.findByDrpIdAndApproverUserIdAndIsDeleteFalse(input.getDrpId(), input.getUserId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId()))); + + var drp = drpRepository.findByIdAndIsDeleteFalse(input.getDrpId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId()))); + + + + Date dateNow = Date.valueOf(LocalDate.now()); + + if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) { + drpApproval.setIsApprove(input.getIsApprove()); + drp.setVpApproveDate(dateNow); + drp.setApproveStatus(Constants.STATUS_APPROVAL_VP); + + } else if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "DIREKTUR")) { + drpApproval.setIsApprove(input.getIsApprove()); + drp.setDirekturApproveDate(dateNow); + drp.setApproveStatus(Constants.STATUS_APPROVAL_DIRUT); + + } else { + var listKomiteApproval = drpApprovalRepository.getListKomiteApproval(input.getDrpId()); + if (listKomiteApproval.size() == 1) { + drp.setApproveStatus(Constants.STATUS_REKOMENDASI_KOMITE); + } + drpApproval.setIsApprove(input.getIsApprove()); + drp.setKomiteApproveDate(dateNow); + } + + drpApprovalRepository.save(drpApproval); + drpRepository.save(drp); + + return new EmptyResponse(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/approval/PostDrpRekomendasiService.java b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpRekomendasiService.java new file mode 100644 index 0000000..d37ca43 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/approval/PostDrpRekomendasiService.java @@ -0,0 +1,36 @@ +package com.iconplus.smartproc.service.approval; + +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.DrpRekomendasi; +import com.iconplus.smartproc.model.request.DrpRekomendasiRequest; +import com.iconplus.smartproc.model.response.DrpRekomendasiResponse; +import com.iconplus.smartproc.repository.DrpRekomendasiRepository; +import org.springframework.stereotype.Service; + +@Service +public class PostDrpRekomendasiService implements BaseService { + + private DrpRekomendasiRepository drpRekomendasiRepository; + + private PostDrpRekomendasiService(DrpRekomendasiRepository drpRekomendasiRepository) { + this.drpRekomendasiRepository = drpRekomendasiRepository; + } + + @Override + public DrpRekomendasiResponse execute(DrpRekomendasiRequest input) { + + DrpRekomendasi drpRekomendasi = DrpRekomendasi.builder() + .jenisPengadaanId(input.getJenisPengadaanId()) + .drpApprovalId(input.getDrpApprovalId()) + .rekomendasi(input.getRekomendasi()) + .rekomendasiDate(input.getRekomendasiDate()) + .isDelete(false) + .build(); + + var result = drpRekomendasiRepository.save(drpRekomendasi); + + return DrpRekomendasiResponse.builder() + .id(result.getId()) + .build(); + } +}