package com.njcn.device.service;

import com.njcn.device.pojo.dto.PollutionLineDTO;
import com.njcn.device.pojo.dto.PollutionParamDTO;
import com.njcn.device.pojo.dto.PollutionSubstationDTO;
import com.njcn.device.pojo.param.DeviceInfoParam;
import com.njcn.device.pojo.po.Overlimit;
import com.njcn.device.pojo.vo.*;

import java.util.List;

/**
 * 监测点类
 * @author denghuajun
 * @date 2022/2/23
 *
 */
public interface LineService {
    /**
     * 获取监测点详情
     * @param id 监测点id
     * @return 结果
     */
    LineDetailDataVO getLineDetailData(String id);

    /**
     * 获取监测点越限详情
     * @param id 监测点id
     * @return 结果
     */
    LineOverLimitVO getLineOverLimitData(String id);

    /**
     * 获取变电站信息
     * @param id 监测点id
     * @return 结果
     */
    List<SubstationDetailVO> getSubstationData(List<String> id);

    /**
     * 获取终端状态信息
     * @param id 监测点id
     * @param searchBeginTime 开始时间
     * @param searchEndTime 结束时间
     * @return 结果
     */
    CommunicateVO getComFlagInfoData(String id, String searchBeginTime, String searchEndTime);

    /**
     * 获取变电站id
     * @param id 监测点id
     * @return 结果
     */
    String getLineIdByDevId(String id);

    /**
     * 获取限值表信息
     * @param id 监测点id
     * @return 结果
     */
    Overlimit getOverLimitData(String id);

    /**
     * 获取投运在线的监测点的限值
     * @param serverType 服务名称
     * @param deptId 部门id
     * @return 结果
     */
    List<Overlimit> getAllLineOverLimit(String serverType,String deptId);

    /**
     * 获取变电站信息
     * @param id 变电站id
     * @return 结果
     */
    PollutionSubstationDTO getSubstationInfo(String id);

    /**
     * 获取监测点信息
     * @param  pollutionParamDTO 监测点对象
     * @return 结果
     */
    List<PollutionLineDTO> getLineInfo(PollutionParamDTO pollutionParamDTO);

    /**
     * 获取监测点分布
     * @param deviceInfoParam 参数
     * @return 结果
     */
    List<LineDistributionVO> getLineDistribution(DeviceInfoParam deviceInfoParam);

    /**
     * 获取监测点统计
     * @param deviceInfoParam 参数
     * @return 结果
     */
    List<LineStatisticsDetailVO> getLineStatisticsDetail(DeviceInfoParam.BusinessParam deviceInfoParam);

    /**
     * 获取监测点统计
     * @param deviceInfoParam 参数
     * @return 结果
     */
    List<LineStatisticsTableVO> getLineStatisticsTable(DeviceInfoParam.BusinessParam deviceInfoParam);

    /**
     * 获取监测点运行统计
     * @param deviceInfoParam 参数
     * @return 结果
     */
    List<LineFlowMealDetailVO> getLineRunStatistics(DeviceInfoParam.BusinessParam deviceInfoParam);

    /**
     * 获取详细的统计数据
     * @param startTime 起始时间
     * @param endTime 结束时间
     * @param lineId 监测点id
     * @return 结果
     */
    LineStaticsViewVO getLineStaticsView(String startTime,String endTime,String lineId);

    /**
     * 获取监测点限值信息
     * @param pollutionParamDTO 监测点集合
     * @return 结果
     */
    List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO);
}
