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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalSaveReqVO;
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 OaUniversalService {

    Long stagingOaUniversal(OaUniversalSaveReqVO stagingReqVO);

    Long commitOaUniversal(OaUniversalSaveReqVO commitReqVO);

    Long agreeOaUniversal(BpmTaskApproveReqVO agreeReqVO);

    Long disagreeOaUniversal(BpmTaskReturnReqVO disagreeReqVO);

    Long revocationOaUniversal(BpmTaskApproveReqVO revocationReqVO);

    Long reCommitOaUniversal(OaUniversalSaveReqVO reCommitReqVO);

    Long closeOaUniversal(Long id);

    void deleteOaUniversal(Long id);

    OaUniversalRespVO getOaUniversal(Long id);

    OaUniversalRespVO getOaUniversalByProcInstId(String procInstId);

    PageResult<OaUniversalRespVO> getOaUniversalPage(OaUniversalPageReqVO pageReqVO);

    PageResult<OaUniversalRespVO> exportOaUniversalExcel(OaUniversalPageReqVO pageReqVO);
}