package ink.wgink.module.activiti.service.oa;

import ink.wgink.module.activiti.pojo.dtos.oa.OaHistoryTaskDTO;
import ink.wgink.module.activiti.pojo.dtos.oa.OaProcdefDTO;
import ink.wgink.module.activiti.pojo.dtos.oa.OaProcessLogDTO;
import ink.wgink.module.activiti.pojo.dtos.oa.OaTaskDTO;
import ink.wgink.pojo.result.SuccessResultList;

import java.util.List;

/**
 * @ClassName: IOaService
 * @Description: Oa管理
 * @Author: wanggeng
 * @Date: 2022/3/23 09:55
 * @Version: 1.0
 */
public interface IOaService {

    /**
     * 流程定义列表
     *
     * @return
     */
    List<OaProcdefDTO> listProcdef();

    /**
     * 流程定义分页列表
     *
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaProcdefDTO>> listPageProcdef(int page, int rows);

    /**
     * 我的任务（待办）
     *
     * @return
     */
    List<OaTaskDTO> listTaskOfMine();

    /**
     * 我的任务（待办）
     *
     * @param token
     * @return
     */
    List<OaTaskDTO> listTaskOfMine(String token);

    /**
     * 用户的任务（待办）
     *
     * @param userId
     * @return
     */
    List<OaTaskDTO> listTaskByUserId(String userId);

    /**
     * 我的任务（待办）总数
     *
     * @return
     */
    Long countTaskOfMine();

    /**
     * 我的任务（待办）总数
     *
     * @param token
     * @return
     */
    Long countTaskOfMine(String token);

    /**
     * 用户的任务（待办）总数
     *
     * @param userId
     * @return
     */
    Long countTaskByUserId(String userId);

    /**
     * 我的任务（待办）分页列表
     *
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaTaskDTO>> listPageTaskOfMine(int page, int rows);

    /**
     * 我的任务（待办）分页列表
     *
     * @param token
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaTaskDTO>> listPageTaskOfMine(String token, int page, int rows);

    /**
     * 用户的任务（待办）分页列表
     *
     * @param userId
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaTaskDTO>> listPageTaskByUserId(String userId, int page, int rows);

    /**
     * 我的历史（已办）列表
     *
     * @return
     */
    List<OaHistoryTaskDTO> listHistoryTaskOfMine();

    /**
     * 我的历史（已办）列表
     *
     * @param token
     * @return
     */
    List<OaHistoryTaskDTO> listHistoryTaskOfMine(String token);

    /**
     * 用户（已办）列表
     *
     * @param userId
     * @return
     */
    List<OaHistoryTaskDTO> listHistoryTaskByUserId(String userId);

    /**
     * 我的历史（已办）分页列表
     *
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaHistoryTaskDTO>> listPageHistoryTaskOfMine(int page, int rows);

    /**
     * 我的历史（已办）分页列表
     *
     * @param token
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaHistoryTaskDTO>> listPageHistoryTaskOfMine(String token, int page, int rows);

    /**
     * 用户历史（已办）分页列表
     *
     * @param userId
     * @param page
     * @param rows
     * @return
     */
    SuccessResultList<List<OaHistoryTaskDTO>> listPageHistoryTaskByUserId(String userId, int page, int rows);

    /**
     * 流程日志
     *
     * @param processInstanceId
     * @return
     */
    List<OaProcessLogDTO> listProcessLog(String processInstanceId);

}
