package cn.iocoder.yudao.module.bpm.service.oa.stamp;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.stamp.vo.OaStampPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.stamp.vo.OaStampRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.stamp.vo.OaStampSaveReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskReturnReqVO;

/**
 * 用印流程信息 Service 接口
 *
 * @author dp
 */
public interface OaStampService {

    Long stagingOaStamp(OaStampSaveReqVO stagingReqVO);

    Long commitOaStamp(OaStampSaveReqVO commitReqVO);

    Long agreeOaStamp(BpmTaskApproveReqVO agreeReqVO);

    Long disagreeOaStamp(BpmTaskReturnReqVO disagreeReqVO);

    Long revocationOaStamp(BpmTaskApproveReqVO revocationReqVO);

    Long reCommitOaStamp(OaStampSaveReqVO reCommitReqVO);

    Long closeOaStamp(Long id);

    void deleteOaStamp(Long id);

    OaStampRespVO getOaStamp(Long id);

    OaStampRespVO getOaStampByProcInstId(String procInstId);

    PageResult<OaStampRespVO> getOaStampPage(OaStampPageReqVO pageReqVO);

    PageResult<OaStampRespVO> exportOaStampExcel(OaStampPageReqVO pageReqVO);

}