This commit is contained in:
dirgantarasiahaan 2023-05-28 22:25:42 +07:00
parent 9f1a9b9004
commit c459dba989
9 changed files with 265 additions and 0 deletions

View File

@ -0,0 +1,11 @@
package com.iconplus.smartproc.controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
@RestController
@RequestMapping("/api/drp")
public class DrpController {
}

View File

@ -0,0 +1,44 @@
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.Timestamp;
import java.util.Date;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "drp")
public class Drp extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "tahun")
private Integer tahun;
@Column(name = "is_approve")
@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean isApprove;
@Column(name = "approve_date")
private Timestamp approveDate;
@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,24 @@
package com.iconplus.smartproc.model.projection;
import java.sql.Timestamp;
public interface DrpView {
Long getId();
void setId(Long id);
Integer getTahun();
void setTahun(Integer tahun);
Boolean getIsApprove();
void setIsApprove(Boolean isApprove);
Timestamp getApproveDate();
void setApproveDate(Timestamp approveDate);
Boolean getIsActive();
void setIsActive(Boolean isActive);
Boolean getIsDelete();
void setIsDelete(Boolean isDelete);
}

View File

@ -0,0 +1,23 @@
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.springframework.data.domain.Pageable;
import java.sql.Timestamp;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DrpRequest extends BaseRequest {
private Long id;
private Integer tahun;
private Boolean isApprove;
private Timestamp approveDate;
private Boolean isActive;
private transient Pageable pageable;
}

View File

@ -0,0 +1,22 @@
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.sql.Timestamp;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DrpResponse extends BaseResponse {
private Long id;
private Integer tahun;
private Boolean isApprove;
private Timestamp approveDate;
private Boolean isActive;
private Boolean isDelete;
}

View File

@ -0,0 +1,19 @@
package com.iconplus.smartproc.model.response;
import com.iconplus.smartproc.helper.base.BaseResponse;
import com.iconplus.smartproc.helper.model.Pagination;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GetListDrpResponse extends BaseResponse {
private List<DrpResponse> data;
private Pagination pagination;
}

View File

@ -0,0 +1,32 @@
package com.iconplus.smartproc.repository;
import com.iconplus.smartproc.model.entity.Drp;
import com.iconplus.smartproc.model.projection.DrpView;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.sql.Timestamp;
import java.util.List;
import java.util.Optional;
@Repository
public interface DrpRepository extends JpaRepository<Drp, Long> {
Optional<Drp> findByIdAndIsDeleteFalse(Long id);
@Query(value = "SELECT d.id as id, " +
"d.tahun as tahun, " +
"d.isApprove as isApprove, " +
"d.approveDate as approveDate, " +
"d.isActive as isActive, " +
"d.isDelete as isDelete " +
"FROM Drp d" +
"WHERE d.isDelete = false " +
"AND (:approveDate = '' or DATE(d.approveDate) = DATE(approveDate)) " +
"ORDER BY d.id")
Page<DrpView> findByIsDeleteFalse(Timestamp approveDate,
Pageable pageable);
}

View File

@ -0,0 +1,36 @@
package com.iconplus.smartproc.service.drp;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.DrpRequest;
import com.iconplus.smartproc.model.response.DrpResponse;
import com.iconplus.smartproc.repository.DrpRepository;
import com.iconplus.smartproc.util.Constants;
import org.springframework.stereotype.Service;
@Service
public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
private final DrpRepository drpRepository;
public GetDrpService(DrpRepository drpRepository) {
this.drpRepository = drpRepository;
}
@Override
public DrpResponse execute(DrpRequest input) {
var drp = drpRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP", input.getId())));
return DrpResponse.builder()
.id(drp.getId())
.tahun(drp.getTahun())
.isApprove(drp.getIsApprove())
.approveDate(drp.getApproveDate())
.isActive(drp.getIsActive())
.isDelete(drp.getIsDelete())
.build();
}
}

View File

@ -0,0 +1,54 @@
package com.iconplus.smartproc.service.drp;
import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.DrpView;
import com.iconplus.smartproc.model.request.DrpRequest;
import com.iconplus.smartproc.model.response.DrpResponse;
import com.iconplus.smartproc.model.response.GetListDrpResponse;
import com.iconplus.smartproc.repository.DrpRepository;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class GetListDrpService implements BaseService<DrpRequest, GetListDrpResponse> {
private final DrpRepository drpRepository;
public GetListDrpService(DrpRepository drpRepository) {
this.drpRepository = drpRepository;
}
@Override
public GetListDrpResponse execute(DrpRequest input) {
List<DrpResponse> drpResponseList = new ArrayList<>();
var drpViews = drpRepository.findByIsDeleteFalse(input.getApproveDate(), input.getPageable());
for (DrpView drpView : drpViews) {
DrpResponse drpResponse = DrpResponse.builder()
.id(drpView.getId())
.tahun(drpView.getTahun())
.isApprove(drpView.getIsApprove())
.approveDate(drpView.getApproveDate())
.isActive(drpView.getIsActive())
.isDelete(drpView.getIsDelete())
.build();
drpResponseList.add(drpResponse);
}
return GetListDrpResponse.builder()
.data(drpResponseList)
.pagination(Pagination.builder()
.pageSize(input.getPageable().getPageSize())
.currentPage(input.getPageable().getPageNumber())
.totalPages(drpViews.getTotalPages())
.totalRecords(drpViews.getTotalElements())
.isFirstPage(drpViews.isFirst())
.isLastPage(drpViews.isLast())
.build())
.build();
}
}