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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.business.vo.OaBusinessPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.business.vo.OaBusinessRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.business.vo.OaBusinessSaveReqVO;
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 OaBusinessService {

    Long stagingOaBusiness(OaBusinessSaveReqVO stagingReqVO);

    Long commitOaBusiness(OaBusinessSaveReqVO commitReqVO);

    Long agreeOaBusiness(BpmTaskApproveReqVO agreeReqVO);

    Long disagreeOaBusiness(BpmTaskReturnReqVO disagreeReqVO);

    Long revocationOaBusiness(BpmTaskApproveReqVO revocationReqVO);

    Long reCommitOaBusiness(OaBusinessSaveReqVO reCommitReqVO);

    Long closeOaBusiness(Long id);

    void deleteOaBusiness(Long id);

    OaBusinessRespVO getOaBusiness(Long id);

    OaBusinessRespVO getOaBusinessByProcInstId(String procInstId);

    PageResult<OaBusinessRespVO> getOaBusinessPage(OaBusinessPageReqVO pageReqVO);

    PageResult<OaBusinessRespVO> exportOaBusinessExcel(OaBusinessPageReqVO pageReqVO);

}