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

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal;
import com.baomidou.mybatisplus.extension.service.IService;

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

/**
 * <p>
 * 变电站-辅控设备-信号 服务类
 * </p>
 *
 * @author zhengsl
 * @since 2025-04-23
 */
public interface IDeviceSignalService extends IService<DeviceSignal> {

    /**********************************
     * 用途说明: 遥测 、遥信数据更新到数据库
     * 参数说明
     * netaddres  网关机设备地址
     * address  信号地址
     * type  信号类型  yx-遥信 yc-遥测
     * value  数据采集结果
     * dateTime  数据采集时标
     * 返回值说明: bool 更新成功或者失败
     ***********************************/
    boolean updateDeviceSignalValue(String slaveIp, String address, String type, String value, String dateTime) throws ParseException;

    /**********************************
    * 用途说明: 新增变电站辅控设备信号
    * 参数说明 deviceSignal 变电站辅控设备信号对象
    * 返回值说明: boolean
    ***********************************/
    boolean addDeviceSignal(DeviceSignal deviceSignal);

    /**********************************
    * 用途说明: 修改变电站辅控设备信号
    * 参数说明 deviceSignal 变电站辅控设备信号对象
    * 返回值说明: boolean
    ***********************************/
    boolean updateDeviceSignal(DeviceSignal deviceSignal);

    /**********************************
    * 用途说明:
    * mainDeviceId    主设备设备ID
    * componentId    部件ID
    * 参数说明 signalName 信号名称
    * 参数说明 page
    * 返回值说明: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.yfd.platform.modules.auxcontrol.domain.DeviceSignal>
    ***********************************/
    Page<DeviceSignal> getDeviceSignalPage(String systemcode,String meterDeviceId,String mainDeviceId, String componentId, String signalName, Page<DeviceSignal> page);

    /**********************************
     * 用途说明: 获取信号集合
     * 参数说明 stationCode 变电站编号
     * 参数说明 signalName 信号名称
     * 返回值说明: java.util.List<com.yfd.platform.modules.basedata.domain.TreeNode>
     ***********************************/
    List<Map<String, Object>> getDeviceSignalMaps(String stationCode, String signalName);

    /**********************************
    * 用途说明: 根据信号id查询信号信息
    * 参数说明 signalId 信号ID
    * 返回值说明: java.util.Map<java.lang.String,java.lang.Object>
    ***********************************/
    Map<String, Object> querySignalDataById(String signalId);

}
