package com.leanwo.activiti.service.base;

import com.leanwo.activiti.dto.base.DocumentInfoDto;
import com.leanwo.activiti.dto.base.NodeApprovedRequest;
import com.leanwo.activiti.dto.base.NodeApprovedResponse;

/**
 * 单据操作服务类
 * @author YangZhiJie
 *
 */
public interface DocumentOperationService {
	
	/**
	 * 单据审批通过
	 * @param className
	 * @param recordId
	 */
	void approveDocument(Long accountId, DocumentInfoDto documentInfoDto);

	/**
	 * 单据审批不通过
	 * @param className
	 * @param recordId
	 */
	void rejectDocument(Long accountId, DocumentInfoDto documentInfoDto);
	
	/**
	 * 单据撤回
	 * @param className
	 * @param recordId
	 */
	void withdrawDocument(Long accountId, DocumentInfoDto documentInfoDto);
	
	/**
	 * 每次审批完成以后，调用单据服务类的afterNodeApproved(节点审批完成)方法。
	 * @param nodeApprovedRequest
	 * @return
	 */
	NodeApprovedResponse afterNodeApproved (NodeApprovedRequest nodeApprovedRequest);
	
}