package cn.fateverse.workflow.service;

import cn.fateverse.common.core.result.page.TableDataInfo;
import cn.fateverse.workflow.entity.bpmn.CommentInfo;
import cn.fateverse.workflow.entity.dto.TaskDto;
import cn.fateverse.workflow.entity.vo.task.TaskResultVo;
import cn.fateverse.workflow.entity.vo.task.TaskVo;


/**
 * @author Clay
 * @date 2022/12/24
 */
public interface ProcessTaskService {

    /**
     * 查询我的代办任务
     *
     * @return 任务列表
     */
    TableDataInfo<TaskVo> searchTaskList();

    /**
     * 获取任务详情
     *
     * @param taskId 任务id
     * @return 任务返回对象
     */
    TaskResultVo searchTaskByTaskId(String taskId);

    /**
     * 完成任务
     *
     * @param taskDto 任务数据
     */
    void completeTask(TaskDto taskDto);

    /**
     * 拒绝任务
     *
     * @param taskDto 任务数据
     */
    void refuseTask(TaskDto taskDto);

    /**
     * 委派
     *
     * @param taskDto 任务数据
     */
    void delegateTas(TaskDto taskDto);

    /**
     * 委派人完成
     *
     * @param taskDto 任务数据
     */
    void resolveCompleteTask(TaskDto taskDto);

    /**
     * 撤销
     *
     * @param taskDto 任务数据
     */
    void revokeTask(TaskDto taskDto);

    /**
     * 移交转办
     *
     * @param taskDto 任务数据
     */
    void assigneeTask(TaskDto taskDto);

    /**
     * 退回
     *
     * @param taskDto 任务数据
     */
    void rollbackTask(TaskDto taskDto);

    /**
     * 加签
     * @param taskDto 任务数据
     */
    void addMultiTask(TaskDto taskDto);

    /**
     * 查看签上的人
     *
     * @param taskId 任务id
     */
    void searchMultiUsersInfo(String taskId);

    /**
     * 减签
     * @param taskId 任务id
     */
    void deleteMultiTask(String taskId);

    /**
     * 添加评论信息
     *
     * @param commentInfo 任务数据
     */
    void addCommentTask(CommentInfo commentInfo);
}
