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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.entry.vo.OaEntryPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.entry.vo.OaEntryRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.entry.vo.OaEntrySaveReqVO;
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 芋道源码
 */
public interface OaEntryService {

    Long stagingOaEntry(OaEntrySaveReqVO stagingReqVO);

    Long commitOaEntry(OaEntrySaveReqVO commitReqVO);

    Long agreeOaEntry(BpmTaskApproveReqVO agreeReqVO);

    Long disagreeOaEntry(BpmTaskReturnReqVO disagreeReqVO);

    Long revocationOaEntry(BpmTaskApproveReqVO revocationReqVO);

    Long reCommitOaEntry(OaEntrySaveReqVO reCommitReqVO);

    Long closeOaEntry(Long id);

    void deleteOaEntry(Long id);

    OaEntryRespVO getOaEntry(Long id);

    OaEntryRespVO getOaEntryByProcInstId(String procInstId);

    PageResult<OaEntryRespVO> getOaEntryPage(OaEntryPageReqVO pageReqVO);

    PageResult<OaEntryRespVO> exportOaEntryExcel(OaEntryPageReqVO pageReqVO);
}