package com.njcn.process.service.flowable;



import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.process.pojo.dto.flowable.FlowTaskDto;
import com.njcn.process.pojo.vo.flowable.FlowQueryVo;
import com.njcn.process.pojo.vo.flowable.FlowTaskVo;
import org.flowable.task.api.Task;

import java.util.Map;

/**
 * @author Tony
 * @date 2021-04-03 14:42
 */
public interface IFlowTaskService {

    Boolean getNextFlowNodeByStart(FlowTaskVo flowTaskVo);


    /**
     * 流程节点信息
     * @param procInsId
     * @return
     */
    Map<String, Object> flowXmlAndNode(String procInsId, String deployId);



    Boolean deleteDeployment();

    /**
     * 审批任务
     *
     *
     */
    Boolean complete(FlowTaskVo taskVo);


    /**
     * 给下一个任务指定执行人员
     * @author cdf
     * @date 2024/3/29
     */
    Task toNextTaskUser(FlowTaskVo taskVo);


    /**
     * 获取任务
     * @author cdf
     * @date 2023/4/14
     */
    Task getTask(String proIndex);


    /**
     * 我发起的流程
     * @param queryVo  请求参数
     * @return
     */
    Page<FlowTaskDto> myProcess(FlowQueryVo queryVo);


    /**
     * 已办任务列表
     *
     * @param queryVo  请求参数
     * @return
     */
    Page<FlowTaskDto> finishedList(FlowQueryVo queryVo);


    /**
     * 代办任务列表
     *
     * @param queryVo  请求参数
     * @return
     */
    Page<FlowTaskDto> todoList(FlowQueryVo queryVo);


    /**
     * 获取流程变量
     * @param taskId
     * @return
     */
    Map<String, Object> processVariables(String taskId);


    /**
     * 流程历史流转记录
     *
     * @param procInsId 流程实例Id
     * @return
     */
    Map<String, Object> flowRecord(String procInsId,String deployId);


    /**
     * 取消申请
     * 目前实现方式: 直接将当前流程变更为已完成
     * @param flowTaskVo
     * @return
     */
    Boolean stopProcess(FlowTaskVo flowTaskVo);


    /**
     * 驳回任务
     *
     * @param flowTaskVo
     */
    void taskReject(FlowTaskVo flowTaskVo);


}
