package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.ApplyApprovalQueryDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.PendingApprovalQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.ApprovalLogDTO;
import com.prolog.rdc.tms.model.dto.basicData.ApprovalNodeSelDTO;
import com.prolog.rdc.tms.model.vo.ApplyApprovalVO;
import com.prolog.rdc.tms.model.vo.ApprovalBusLogSaveVO;
import com.prolog.rdc.tms.model.vo.ApprovalBusinessNodeVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ApprovalOpenVO;

/**
 *
 *
 * 审批业务服务层
 *
 * @className :ApprovalBusinessService
 * @author :lhb
 * @creationTime :2022/04/29
 * @description :
 *
 * @modifier :
 * @modifyTime :
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
public interface ApprovalBusinessService {

	/**
	 * 是否开启审批流程
	 *
	 * @param approvalOpenVO
	 * @return
	 */
	Boolean approvalOpen(ApprovalOpenVO approvalOpenVO);

	/**
	 * 审批流程节点审核
	 *
	 * @param approvalBusinessNodeVO
	 * @return
	 */
	Boolean nodeApproval(ApprovalBusinessNodeVO approvalBusinessNodeVO);

	/**
	 * 首页 我发起的审批流程查询
	 *
	 * @param vo
	 * @return
	 */
	Page<ApplyApprovalQueryDTO> applyApproval(ApplyApprovalVO vo);

	/**
	 * 首页 待我审批的审批流程查询
	 *
	 * @param vo
	 * @return
	 */
	Page<PendingApprovalQueryDTO> pendingApproval(ApplyApprovalVO vo);

	/**
	 * 首页 我已处理的审批流程查询
	 *
	 * @param vo
	 * @return
	 */
	Page<ApplyApprovalQueryDTO> processedApproval(ApplyApprovalVO vo);

	/**
	 * 审核业务日志新增
	 *
	 * @param approvalBusLogSaveVO
	 */
	void saveLogData(ApprovalBusLogSaveVO approvalBusLogSaveVO);

	/**
	 * 审核作废
	 *
	 * @param approvalBusinessId
	 */
	void approvalInvalidData(Long approvalBusinessId);

	/**
	 * 审核撤回
	 *
	 * @param approvalBusinessId
	 */
	void approvalRetractData(Long approvalBusinessId);

	/**
	 * 审核提交
	 *
	 * @param approvalBusinessId
	 */
	void approvalSubmitData(Long approvalBusinessId);

	/**
	 * 查询审核历史
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	List<ApprovalLogDTO> getBusLogData(String approvalBusinessId);

	/**
	 * 查询审核节点
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	List<ApprovalNodeSelDTO> getBusDetailData(String approvalBusinessId);

}
