package com.huatek.busi.service.monitor;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.huatek.busi.dto.monitor.BusiOnlineMonitorDataDto;
import com.huatek.busi.dto.monitor.BusiOnlineMonitorTrendDataDto;
import com.huatek.busi.entity.BusiOnlineMonitorData;
import com.huatek.busi.vo.BusiSensorVo;
import com.huatek.busi.vo.BusiTreeNodeVo;
import com.huatek.busi.vo.echarts.EchartLineDataVo;
import com.huatek.busi.vo.monitor.BusiOnlineMonitorDataVo;

/**
 * 在线监测——监测数据Service
 * 
 * @author buck_guo
 * @date 2019/08/27
 */
public interface BusiOnlineMonitorDataService {

    List<BusiTreeNodeVo> subEquipmentList(String mainEquipmentType, String subEquipmentType, String mainEquipmentId);

    /**
     * 分页查询 在线监测——监测数据(每日统计)
     *
     * @param busiOnlineMonitorDataDto
     *            在线监测——监测数据(每日统计)Dto
     * @return Page 在线监测——监测数据(每日统计)List
     */
    PageInfo<BusiOnlineMonitorDataVo> selectBusiOnlineMonitorDataPage(BusiOnlineMonitorDataDto busiOnlineMonitorDataDto);
    
    /**
     * 监测数据查询导出
     * 
     * @param param 参数
     * @return 分页数据
     */
    List<BusiOnlineMonitorDataVo>	exportBusiOnlineMonitorDataPage(BusiOnlineMonitorDataDto param);
    
    
    List<BusiOnlineMonitorDataVo> selectBusiOnlineMonitorData(BusiOnlineMonitorDataDto busiOnlineMonitorDataDto);

    /**
     * 分页查找查找 在线监测——监测数据(每日统计)
     *
     * @param busiOnlineMonitorDataDto
     *            在线监测——监测数据(每日统计)Dto
     * @return Page<BusiOnlineMonitorDataVo> 在线监测——监测数据(每日统计)List
     */
    PageInfo<BusiOnlineMonitorDataVo> findBusiOnlineMonitorDataPage(BusiOnlineMonitorDataDto busiOnlineMonitorDataDto);

    /**
     * 查询或者生成一条记录
     * 
     * @param day
     *            日期
     * @param sensorCode
     *            传感器编码
     * @return BusiOnlineMonitorData
     */
    BusiOnlineMonitorData generateBusiOnlineMonitorData(LocalDate day, String sensorCode,String runState);

    /**
     * 查询或者生成一条记录
     * 
     * @param day
     *            日期
     * @param map
     *            统计数据Map
     * @return BusiOnlineMonitorData
     */
    BusiOnlineMonitorData generateBusiOnlineMonitorData(LocalDate day, Map<String, Object> map);

    /**
     * 保存数据
     * 
     * @param busiOnlineMonitorData
     *            监测数据记录
     * @param data
     *            监测值的JSON字符串
     */
    void saveBusiOnlineMonitorData(BusiOnlineMonitorData busiOnlineMonitorData, String data);

    /**
     * 获取趋势图
     * 
     * @param param
     * @return
     */
    EchartLineDataVo trend(BusiOnlineMonitorTrendDataDto param);

    /**
     * 获取传感器信息
     * 
     * @param equipmentType
     *            111: 变压器设备; 211：GIS设备 ; 311：测温设备 ; 411：避雷器设备; 511：其他;
     * @param sensorCode
     *            传感器编码
     * @return
     */
    BusiSensorVo findBusiSensorVo(String equipmentType, String sensorCode);
    
    Class<?> getExportVoClass();
}
