package com.chinaweal.aiccs.aiccs.force.cancel.service;

import com.chinaweal.aiccs.aiccs.force.cancel.entity.dto.CancelRevokeApproveDTO;
import com.chinaweal.aiccs.aiccs.force.cancel.entity.dto.CancelRevokeCreateDTO;
import com.chinaweal.aiccs.aiccs.force.cancel.entity.dto.CancelRevokeQueryDTO;
import com.chinaweal.aiccs.aiccs.force.cancel.entity.vo.*;

import javax.servlet.http.HttpServletRequest;

/**
 * 撤销吊销业务Service接口
 */
public interface ICancelRevokeService {

    /**
     * 发起撤销吊销业务
     * @param createDTO 创建DTO
     * @param request HTTP请求
     * @return 创建结果VO
     */
    CancelRevokeCreateVO createCancelRevoke(CancelRevokeCreateDTO createDTO, HttpServletRequest request);

    /**
     * 查询撤销吊销业务详情
     * @param bizId 业务ID
     * @param tasklistid 任务ID
     * @return 业务详情VO
     */
    CancelRevokeVO getCancelRevokeById(String bizId, String tasklistid);

    /**
     * 查询业务详情（带工作流信息）
     * @param bizSeq 业务编号
     * @param tasklistid 任务ID
     * @return 业务详情VO
     */
    CancelRevokeVO getCancelRevokeDetail(String bizSeq, String tasklistid);

    /**
     * 分页查询撤销吊销业务列表
     * @param queryDTO 查询参数
     * @return 分页结果VO
     */
    CancelRevokePageVO queryCancelRevokeList(CancelRevokeQueryDTO queryDTO);

    /**
     * 分页查询待审批列表
     * @param queryDTO 查询参数
     * @return 分页结果VO
     */
    CancelRevokePageVO queryApproveList(CancelRevokeQueryDTO queryDTO);

    /**
     * 审批操作
     * @param approveDTO 审批DTO
     * @param request HTTP请求
     * @return 审批结果VO
     */
    CancelRevokeApproveResultVO approve(CancelRevokeApproveDTO approveDTO, HttpServletRequest request);

    /**
     * 启动流程下一步
     * @param approveDTO 审批DTO
     * @param request HTTP请求
     * @return 流程信息VO
     */
    CancelRevokeApprovalNextVO approvalNext(CancelRevokeApproveDTO approveDTO, HttpServletRequest request);

    /**
     * 分页查询撤销吊销记录（已完成的）
     * @param queryDTO 查询参数
     * @return 分页结果VO
     */
    CancelRevokePageVO queryCancelRevokeRecords(CancelRevokeQueryDTO queryDTO);

    /**
     * 查询吊销主体列表
     * @param queryDTO 查询参数
     * @return 分页结果VO
     */
    CancelRevokePageVO queryRevokedEntList(CancelRevokeQueryDTO queryDTO);

    /**
     * 查询待办列表
     * @param queryDTO 查询参数
     * @param request HTTP请求
     * @return 分页结果VO
     */
    CancelRevokePageVO queryTodoList(CancelRevokeQueryDTO queryDTO, HttpServletRequest request);
}
