package com.mosty.rwzx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.rwzx.*;
import com.mosty.base.model.entity.rwzx.TbRwTask;
import com.mosty.base.model.entity.rwzx.TbRwTaskUser;
import com.mosty.base.model.entity.rwzx.TbRwTaskUserAll;
import com.mosty.base.model.entity.yjzl.TbZlxx;
import com.mosty.base.model.query.rwzx.*;
import com.mosty.base.model.vo.rwzx.*;
import io.swagger.annotations.ApiOperation;

import java.util.List;

public interface TbRwTaskService {

    @ApiOperation("添加任务信息")
    int addRw(TbRwTaskDto dto);

    @ApiOperation("通过任务Id查询任务详情信息")
    TbRwTaskVo getTaskInfo(String id);

    @ApiOperation("查询消息接收人列表")
    IPage<TbRwTaskUserVo> getTaskUserList(TbRwTaskUserQuery dto);

    @ApiOperation("查询任务日志列表")
    IPage<TbRwTaskLogVo> getTaskLogList(TbRwTaskLogQuery dto);

    @ApiOperation("任务中心首页数量统计接口")
    TbRwTaskStatisticsVo getDataStatistics(TbRwTaskStatisticsDto dto);

    @ApiOperation("任务中心首页任务类型数量统计接口")
    List<TbRwTaskLXStatisticsVo> getRWLXDataStatistics(TbRwTaskStatisticsDto dto);

    @ApiOperation("任务中心首页人员任务完成情况排名接口")
    List<TbRwTaskRankingVo> getTaskRanking(TbRwTaskStatisticsDto dto);

    @ApiOperation("查询所有未超期的任务，判断是否超期")
    void changeState();

    @ApiOperation("根据任务类型和业务Id查询任务是否存在")
    TbRwTask getRwByYwid(TbRwTaskByYwidQuery dto);

    @ApiOperation("任务中心首页部门任务完成情况排名接口")
    List<TbRwTaskRankingVo> getTaskByDept();

    @ApiOperation("查询任务是否是登录人的任务")
    Boolean checkMyTask(String id);

    @ApiOperation("修改指令任务状态为未完成")
    void changeTaskStateByZlid(TbZlxx zl);

    @ApiOperation("查询登录用户的已处理的任务数量")
    Integer getYclTask();

    @ApiOperation("查询登录用户的已处理的任务列表")
    IPage<TbRwTaskUserAll> getYclTaskList(TbRwTaskMyInnerQuery dto);

    @ApiOperation("查询是否有新的指令任务")
    boolean checkHasNewTask(String sfzh);
}
