package com.yfd.platform.modules.patroltask.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.modules.patroltask.domain.Task;
import com.yfd.platform.modules.patroltask.domain.TaskTodo;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 巡视任务表 服务类
 * </p>
 *
 *
 * @since 2023-04-08
 */
public interface ITaskService extends IService<Task> {

    /**********************************
    * 用途说明: 根据变电站Id查询巡视任务
    * 参数说明 stationId
    * 返回值说明: java.util.List<com.yfd.platform.modules.patroltask.domain.Task>
    ***********************************/
    List<Task> getTaskByStationId(String stationId);

    /**********************************
     * 用途说明: 根据Id查询关联信息
     * 参数说明 taskId 任务id
     * 参数说明 deviceLevel 任务类型
     * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     ***********************************/
    List<Map<String, Object>> getBindInfoById(String id, String deviceLevel);

    /**********************************
     * 用途说明: 新增巡视任务
     * 参数说明 task 巡视任务
     * 返回值说明: boolean
     ***********************************/
    boolean addTask(Task task);

    /**********************************
     * 用途说明: 分页查询巡视任务
     * 参数说明 page 分页对象
     * 参数说明 startDate 开始时间
     * 参数说明 endDate 结束时间
     * 参数说明 type 巡视类型
     * 参数说明 taskName 任务名称
     * 参数说明 enable 是否启用
     * 参数说明 taskType 任务类型
     * 参数说明 taskTodoType 任务执行方式
     * 返回值说明: com.baomidou.mybatisplus.extension.plugins.pagination.Page<java.util.Map<java.lang.String,java.lang
     * .Object>>
     ***********************************/
    Page<Map<String, Object>> getTaskList(Page<Map<String, Object>> page,String stationId, String startDate, String endDate,
                                          String type, String taskName, String enable, String taskType, String taskTodoType) throws ParseException;

    /**********************************
     * 用途说明: 根据任务向数据库中插入数据（立即执行）
     * 参数说明 task
     * 返回值说明: void
     ***********************************/
    TaskTodo createRunNowTask(Task task) throws ParseException;

    /**********************************
     * 用途说明: 根据任务向数据库中插入数据（计划执行）
     * 参数说明 task
     * 返回值说明: TaskTodo
     ***********************************/
    String createTodoTaskList(Task task) throws ParseException;

    /**********************************
     * 用途说明: 向后创建一天的任务
     * 参数说明 task
     * 返回值说明: TaskTodo
     ***********************************/
    void createOnceTodoTask(String taskId) throws ParseException;

    /**********************************
     * 用途说明: 根据任务向数据库中插入数据
     * 参数说明 task
     * 返回值说明: void
     ***********************************/
    void deleteTodoTasks(Task task) throws ParseException;
}
