This commit is contained in:
dirgantarasiahaan
2023-06-03 18:40:21 +07:00
parent 37a06b00f1
commit dbbde49f59
15 changed files with 351 additions and 6 deletions

View File

@@ -0,0 +1,55 @@
package com.iconplus.smartproc.service.approval;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.DrpApproval;
import com.iconplus.smartproc.model.projection.DrpApprovalHistoryView;
import com.iconplus.smartproc.model.projection.DrpApprovalView;
import com.iconplus.smartproc.model.request.DrpApprovalRequest;
import com.iconplus.smartproc.model.response.DrpApprovalHistoryResponse;
import com.iconplus.smartproc.model.response.DrpApprovalResponse;
import com.iconplus.smartproc.model.response.GetListDrpApprovalHistoryResponse;
import com.iconplus.smartproc.model.response.GetListDrpApprovalResponse;
import com.iconplus.smartproc.repository.DrpApprovalHistoryRepository;
import com.iconplus.smartproc.repository.DrpApprovalRepository;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Service
public class GetHistoryApprovalService implements BaseService<DrpApprovalRequest, GetListDrpApprovalHistoryResponse> {
private final DrpApprovalRepository drpApprovalRepository;
private final DrpApprovalHistoryRepository drpApprovalHistoryRepository;
public GetHistoryApprovalService(DrpApprovalRepository drpApprovalRepository,
DrpApprovalHistoryRepository drpApprovalHistoryRepository) {
this.drpApprovalRepository = drpApprovalRepository;
this.drpApprovalHistoryRepository = drpApprovalHistoryRepository;
}
@Override
public GetListDrpApprovalHistoryResponse execute(DrpApprovalRequest input) {
List<DrpApprovalHistoryResponse> drpApprovalHistoryResponses = new ArrayList<>();
var drpApprovalHistoryViewList = drpApprovalHistoryRepository.getRiwayatApprovalByDrpId(input.getDrpId());
for (DrpApprovalHistoryView drpApprovalHistoryView : drpApprovalHistoryViewList) {
DrpApprovalHistoryResponse drpApprovalHistoryResponse = DrpApprovalHistoryResponse.builder()
.nama(drpApprovalHistoryView.getNama())
.jabatan(drpApprovalHistoryView.getJabatan())
.status(drpApprovalHistoryView.getStatus())
.date(drpApprovalHistoryView.getDate())
.catatan(drpApprovalHistoryView.getCatatan())
.build();
drpApprovalHistoryResponses.add(drpApprovalHistoryResponse);
}
return GetListDrpApprovalHistoryResponse.builder()
.data(drpApprovalHistoryResponses)
.build();
}
}

View File

@@ -4,13 +4,18 @@ 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.entity.DrpApprovalHistory;
import com.iconplus.smartproc.model.request.DrpApprovalRequest;
import com.iconplus.smartproc.model.request.ListDrpApprovalRequest;
import com.iconplus.smartproc.repository.DrpApprovalHistoryRepository;
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;
import java.util.ArrayList;
import java.util.List;
@@ -19,10 +24,13 @@ public class PostCreateDrpApprovalService implements BaseService<ListDrpApproval
private final DrpRepository drpRepository;
private final DrpApprovalRepository drpApprovalRepository;
private final DrpApprovalHistoryRepository drpApprovalHistoryRepository;
public PostCreateDrpApprovalService(DrpRepository drpRepository,
DrpApprovalRepository drpApprovalRepository) {
DrpApprovalRepository drpApprovalRepository,
DrpApprovalHistoryRepository drpApprovalHistoryRepository) {
this.drpRepository = drpRepository;
this.drpApprovalRepository = drpApprovalRepository;
this.drpApprovalHistoryRepository = drpApprovalHistoryRepository;
}
@Override
@@ -44,9 +52,22 @@ public class PostCreateDrpApprovalService implements BaseService<ListDrpApproval
.isDelete(false)
.build();
drpApprovalList.add(drpApproval);
}
drpApprovalRepository.saveAll(drpApprovalList);
var approvalList = drpApprovalRepository.saveAll(drpApprovalList);
Date dateNow = Date.valueOf(LocalDate.now());
approvalList.forEach(c -> {
if (StringUtils.equalsIgnoreCase(c.getLevel(), "VP")) {
DrpApprovalHistory drpApprovalHistory = DrpApprovalHistory.builder()
.date(dateNow)
.drpApprovalId(c.getId())
.status("Dikirim")
.isDelete(false)
.build();
drpApprovalHistoryRepository.save(drpApprovalHistory);
}
});
return new EmptyResponse();
}

View File

@@ -3,28 +3,40 @@ 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.entity.DrpApprovalHistory;
import com.iconplus.smartproc.model.request.DrpApprovalRequest;
import com.iconplus.smartproc.repository.DrpApprovalHistoryRepository;
import com.iconplus.smartproc.repository.DrpApprovalRepository;
import com.iconplus.smartproc.repository.DrpRepository;
import com.iconplus.smartproc.util.Constants;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@Service
public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalRequest, EmptyResponse> {
private final DrpApprovalRepository drpApprovalRepository;
private final DrpRepository drpRepository;
private final DrpApprovalHistoryRepository drpApprovalHistoryRepository;
public PostDrpApprovalExecutionService(DrpApprovalRepository drpApprovalRepository,
DrpRepository drpRepository) {
DrpRepository drpRepository,
DrpApprovalHistoryRepository drpApprovalHistoryRepository) {
this.drpApprovalRepository = drpApprovalRepository;
this.drpRepository = drpRepository;
this.drpApprovalHistoryRepository = drpApprovalHistoryRepository;
}
@Transactional
@Override
public EmptyResponse execute(DrpApprovalRequest input) {
@@ -40,27 +52,82 @@ public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalR
Date dateNow = Date.valueOf(LocalDate.now());
List<DrpApprovalHistory> drpApprovalHistoryList = new ArrayList<>();
var listDrpApproval = drpApprovalRepository.findByDrpIdAndIsDeleteFalse(input.getDrpId());
DrpApprovalHistory drpApprovalHistoryExecutor = DrpApprovalHistory.builder()
.drpApprovalId(drpApproval.getId())
.date(dateNow)
.status(BooleanUtils.isTrue(input.getIsApprove()) ? "Disetujui" : "Ditolak")
.isDelete(false)
.build();
drpApprovalHistoryList.add(drpApprovalHistoryExecutor);
if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) {
drpApproval.setIsApprove(input.getIsApprove());
drp.setVpApproveDate(dateNow);
drp.setApproveStatus(Constants.STATUS_APPROVAL_VP);
drpApproval.setCatatan(input.getCatatan());
for (DrpApproval drpAppr : listDrpApproval) {
if (StringUtils.equalsIgnoreCase(drpAppr.getLevel(), "KOMITE")) {
DrpApprovalHistory drpApprovalHistory = DrpApprovalHistory.builder()
.drpApprovalId(drpApproval.getId())
.date(dateNow)
.status("Terkirim")
.isDelete(false)
.build();
drpApprovalHistoryList.add(drpApprovalHistory);
}
}
} else if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "DIREKTUR")) {
if (ObjectUtils.isEmpty(drp.getKomiteApproveDate())) {
throw new BusinessException(Constants.ERR_CODE_10013,
Constants.ERR_TTL_10013,
String.format(Constants.ERR_MSG_10013, "KOMITE"));
}
drpApproval.setIsApprove(input.getIsApprove());
drp.setDirekturApproveDate(dateNow);
drp.setApproveStatus(Constants.STATUS_APPROVAL_DIRUT);
drpApproval.setCatatan(input.getCatatan());
} else {
if (ObjectUtils.isEmpty(drp.getVpApproveDate())) {
throw new BusinessException(Constants.ERR_CODE_10013,
Constants.ERR_TTL_10013,
String.format(Constants.ERR_MSG_10013, "VP"));
}
var listKomiteApproval = drpApprovalRepository.getListKomiteApproval(input.getDrpId());
if (listKomiteApproval.size() == 1) {
drp.setApproveStatus(Constants.STATUS_REKOMENDASI_KOMITE);
}
drpApproval.setIsApprove(input.getIsApprove());
drpApproval.setCatatan(input.getCatatan());
drp.setKomiteApproveDate(dateNow);
for (DrpApproval drpAppr : listDrpApproval) {
if (StringUtils.equalsIgnoreCase(drpAppr.getLevel(), "DIREKTUR")) {
DrpApprovalHistory drpApprovalHistory = DrpApprovalHistory.builder()
.drpApprovalId(drpApproval.getId())
.date(dateNow)
.status("Terkirim")
.isDelete(false)
.build();
drpApprovalHistoryList.add(drpApprovalHistory);
}
}
}
drpApprovalRepository.save(drpApproval);
drpRepository.save(drp);
drpApprovalHistoryRepository.saveAll(drpApprovalHistoryList);
return new EmptyResponse();
}

View File

@@ -1,12 +1,15 @@
package com.iconplus.smartproc.service.print;
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.projection.DrpView;
import com.iconplus.smartproc.model.request.PrintDrpRequest;
import com.iconplus.smartproc.model.response.GetListPrintDrpResponse;
import com.iconplus.smartproc.model.response.PrintDrpResponse;
import com.iconplus.smartproc.repository.DrpApprovalRepository;
import com.iconplus.smartproc.repository.DrpRepository;
import com.iconplus.smartproc.util.Constants;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.stereotype.Service;
@@ -17,9 +20,11 @@ import java.util.List;
public class GetListPrintDrpService implements BaseService<PrintDrpRequest, GetListPrintDrpResponse> {
private DrpRepository drpRepository;
public GetListPrintDrpService(DrpRepository drpRepository) {
private DrpApprovalRepository drpApprovalRepository;
public GetListPrintDrpService(DrpRepository drpRepository,
DrpApprovalRepository drpApprovalRepository) {
this.drpRepository = drpRepository;
this.drpApprovalRepository = drpApprovalRepository;
}
@@ -35,8 +40,16 @@ public class GetListPrintDrpService implements BaseService<PrintDrpRequest, GetL
.tahun(drpView.getTahun())
.printDate(drpView.getPrintDate())
.build();
var drpApprovalOptional = drpApprovalRepository.findByDrpIdAndLevelAndIsDeleteFalse(drpView.getId(), "DIREKTUR")
.orElseThrow(()-> new BusinessException(Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP Approvel", drpView.getId())));
if (BooleanUtils.isTrue(drpView.getIsPrint())) {
printDrpResponse.setStatus("Tercetak");
} else if (drpApprovalOptional.getIsApprove() == null) {
printDrpResponse.setStatus("Belum Dicetak");
} else {
printDrpResponse.setStatus("Belum Bisa Dicetak");
}