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

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.modules.basedata.domain.Substation;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * <p>
 * 巡视任务表 服务类
 * </p>
 *
 *
 * @since 2023-04-08
 */
public interface IStationRobotService extends IService<Substation>  {
    /******************--------以下为巡视主机下发消息服务-----***********************************/



    /**********************************
     * 用途说明: 更新机器人在线状态
     * 参数说明 stationNodeIP 变电站边缘节点IP,
     * online:1=在线，0-离线
     * 返回值说明: boolean
     ***********************************/
    boolean updateRobotOnline(String robotIp,String online);


    /**********************************
     * 用途说明: 通知变电站同步更新基础数据
     * 参数说明 stationcode 变电站编号
     * 返回值说明: boolean
     ***********************************/
    boolean sendMsgOfSyncBaseData(String stationcode);


    void sendCommand(String targetIp,String sendcode,String receivecode,String type,String command,String code,String items);

    /**********************************
     * 用途说明: 巡视主机向边缘节点下发巡视任务
     * 参数说明 stationcode 变电站编号,String taskid
     * 返回值说明: boolean
     ***********************************/
    void sendMsgOfTask(String stationcode,String taskid);

    /**********************************
     * 用途说明: 巡视主机向边缘节点下发巡视任务控制指令
     * 参数说明 stationcode 变电站编号,todotaskid 巡视任务id,
     * String command   0-巡视任务终止  1-巡视任务启动（生效）  2-任务执行暂停 3-任务执行恢复  4-任务执行停止  5-任务手动执行
     * 返回值说明: boolean
     ***********************************/
    void sendMsgOfTaskCommand(String stationcode,String todotaskid,String command);

    /**********************************
     * 用途说明: 巡视主机向边缘节点下发检修计划
     * 参数说明 stationcode 变电站编号,String planid
     * 返回值说明: boolean
     ***********************************/
    void sendMsgOfExaminePlan(String stationcode,String planid);

    /**********************************
     * 用途说明: 巡视主机向边缘节点下发联动信息
     * 参数说明 stationcode 变电站编号,String signalid
     * 返回值说明: boolean
     ***********************************/
    void sendMsgOfLinkageSignal(String stationcode,String signalid);

    /******************--------以下为业务数据交互处理服务-----***********************************/


    /**********************************
    * 用途说明: 接收任务信息并同步
    * 参数说明 jsonStr
    * 返回值说明: cn.hutool.json.JSONObject
    ***********************************/
    JSONObject getTaskInfo(String jsonStr);



    /**********************************
     * 用途说明: 生成一键顺控反馈结果文件
     * 参数说明 stationcode 变电站编号 taskcode 任务编号 result 视频反馈结果
     * 返回值说明: 创建结果确认文件并下发到边缘节点
     ***********************************/
    void createVideocfmresult(String stationcode,String taskcode,String result) throws UnsupportedEncodingException;


    /**********************************
    * 用途说明: 向边缘节点发送机器人控制指令
    * 参数说明 jsonStr
    * 返回值说明: void
    ***********************************/
    void sendRobotCommand(String jsonStr);

    /**********************************
     * 用途说明: 向上级发送数据
     * 参数说明 jsonStr
     * 返回值说明: void
     ***********************************/
    void sendParentData(String SendCode, String ReceiveCode, String Type, String Command, String Code,
                        String Items) throws IOException;

    /**********************************
    * 用途说明: 上报上级系统
    * 参数说明 ids
    * 参数说明 type
    * 返回值说明: boolean
    ***********************************/
    String reportParentById(String ids, String type) throws IOException;

    void sendRobotModel(String robotId);

}
