package cn.ey.biz.module.system.service.bpm;

import cn.ey.biz.module.system.api.bpm.dto.BpmTaskApproveDTO;
import cn.ey.biz.module.system.api.bpm.dto.BpmTaskApproveNominatorDTO;
import cn.ey.biz.module.system.api.bpm.dto.BpmTaskRejectDTO;
import cn.ey.biz.module.system.controller.bpm.task.vo.*;
import javax.validation.Valid;
import java.util.List;

/**
 * 流程任务实例 Service 接口
 *
 */
public interface BpmTaskService {

    /**
     * 批量通过任务
     * @param userId
     * @param reqVO
     */
    void batchApproveTask(Long userId, @Valid List<BpmTaskApproveReqVO> reqVO);

    /**
     *  批量不通过任务
     * @param userId
     * @param reqVO
     */
    void batchRejectTask(Long userId, @Valid List<BpmTaskRejectReqVO> reqVO);

    /**
     * 通过任务(提供给前端)
     *
     * @param userId 用户编号
     * @param reqVO  通过请求
     */
    void approveTask(Long userId, @Valid BpmTaskApproveReqVO reqVO);

    /**
     * 不通过任务(提供给前端)
     *
     * @param userId 用户编号
     * @param reqVO  不通过请求
     */
    void rejectTask(Long userId, @Valid BpmTaskRejectReqVO reqVO);

    /**
     * 通过任务(提供给系统)
     *
     * @param userId 用户编号
     * @param reqDTO  通过请求
     */
    void approveTask(String userId, @Valid BpmTaskApproveDTO reqDTO);

    /**
     * 不通过任务(提供给系统)
     *
     * @param userId 用户编号
     * @param reqVO  不通过请求
     */
    void rejectTask(Long userId, @Valid BpmTaskRejectDTO reqVO);

    /**
     * 通过任务-指定审核人(提供给系统)
     *
     */
    void approveTaskNominator(@Valid BpmTaskApproveNominatorDTO nominatorDTO);
}
