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

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

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 变电站-设备-运行数据 服务类
 * </p>
 *
 * @author zhengsl
 * @since 2025-04-23
 */
public interface IDeviceWorkDataService extends IService<DeviceWorkData> {

    /**********************************
     * 用途说明: 从设备中采集数据，并保存到数据库中
     * 参数说明
     *  from  'IEC104','IEC61850'
     * slave_ip  通信网关机地址
     * address  信号地址
     * value  数据采集结果
     * dateTime  数据采集时标
     * 返回值说明: 无
     ***********************************/
    void insertData(String from, String slave_ip, String address, String value, String dateTimeString);

    /**********************************
    * 用途说明: 分页查询变电站设备运行记录
    * 参数说明 page 分页参数
    * 参数说明 signalId 信号Id
    * 参数说明 startDate 开始时间
    * 参数说明 endDate 结束时间
    * 返回值说明: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData>
    ***********************************/
    Page<DeviceWorkData> getDeviceWorkDataPage(Page<DeviceWorkData> page,String signalId, String startDate, String endDate);

    /**********************************
    * 用途说明: 查询历史曲线
    * 参数说明 signalId 信号id
    * 返回值说明: java.util.List<com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData>
    ***********************************/
    List<DeviceWorkData> getHistoricalCurve(String signalId);

    /**********************************
     * 用途说明: 查询历史曲线
     * 参数说明 signalList 信号id集合
     * 返回值说明: java.util.List<com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData>
     ***********************************/
    List<DeviceWorkData> getHistoricalCurveList(List<String> signalIdList);

    List<Map<String, Object>> getDeviceWorkData(String stationId);

    void exportDeviceWorkData(String stationId,String signalId, String startDate, String endDate, HttpServletResponse response) throws IOException;

}
