package com.zcxk.charge.web.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.charge.api.dto.AlarmDetailsDto;
import com.zcxk.charge.api.dto.AlarmDetailsHistoryDto;
import com.zcxk.charge.api.dto.AlarmDetailsRealTimeDto;
import com.zcxk.charge.api.vo.AlarmDetailsEntityVo;
import com.zcxk.charge.api.vo.AlarmDetailsHistoryVo;
import com.zcxk.charge.api.vo.AlarmDetailsRealTimeVo;
import com.zcxk.charge.core.entity.AlarmDetailsEntity;

import java.util.List;

/**
 * @description
 * @author  wangli
 * @data 2020-11-17 15:43
 */
public interface AlarmDetailsService {

    /**
    * 查询单个设备
    * @author Andy
    * @date 17:52 2021/8/17
    * @param id:
    * @return com.zcxk.charge.api.vo.AlarmDetailsEntityVo
    **/
    AlarmDetailsEntityVo selectById(Integer id);

    /**
    * 查询单个设备
    * @author Andy
    * @date 17:52 2021/8/17
    * @param sceneId:
    * @param deviceId:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsEntityVo>
    **/
    List<AlarmDetailsEntityVo> selectByDeviceId(Long sceneId, Integer deviceId);

    /**
    * 查询单个设备属性
    * @author Andy
    * @date 17:53 2021/8/17
    * @param sceneId:
    * @param deviceId:
    * @param attributeId:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsEntityVo>
    **/
    List<AlarmDetailsEntityVo> selectByDeviceAttributeId(Long sceneId, Integer deviceId, Integer attributeId);

    /**
    * 按场景查询
    * @author Andy
    * @date 17:53 2021/8/17
    * @param sceneId:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsEntityVo>
    **/
    List<AlarmDetailsEntityVo> selectBySceneId(Integer sceneId);

    /**
    * 查询设备
    * @author Andy
    * @date 17:53 2021/8/17
    * @param ids:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsRealTimeVo>
    **/
    List<AlarmDetailsRealTimeVo> selectRealTimeByIds(List<Integer> ids);

    /**
    * selectHistoryByIds
    * @author Andy
    * @date 17:53 2021/8/17
    * @param ids:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsHistoryVo>
    **/
    List<AlarmDetailsHistoryVo> selectHistoryByIds(List<Integer> ids);

    /**
    * 添加设备
    * @author Andy
    * @date 17:53 2021/8/17
    * @param alarmDetailsEntity:
    * @return java.lang.Integer
    **/
    Integer insert(AlarmDetailsEntity alarmDetailsEntity);

    /**
    * 批量插入设备信息
    * @author Andy
    * @date 17:53 2021/8/17
    * @param alarmDetails:
    * @return java.lang.Integer
    **/
    Integer batchInsert(List<AlarmDetailsEntity> alarmDetails);

    /**
    * 单条删除设备
    * @author Andy
    * @date 17:53 2021/8/17
    * @param id:
    * @return java.lang.Integer
    **/
    Integer deleteById(Integer id);

    /**
    * 批量删除
    * @author Andy
    * @date 17:53 2021/8/17
    * @param ids:
    * @return java.lang.Integer
    **/
    Integer batchDelete(List<Integer> ids);

    /**
    * 挂起/恢复
    * @author Andy
    * @date 17:53 2021/8/17
    * @param id:
    * @param opState:
    * @return java.lang.Integer
    **/
    Integer suspendedById(Integer id, Integer opState);

    /**
    * 修改设备信息
    * @author Andy
    * @date 17:54 2021/8/17
    * @param alarmDetailsEntity:
    * @return java.lang.Integer
    **/
    Integer update(AlarmDetailsEntity alarmDetailsEntity);

    /**
    * 查询设备信息
    * @author Andy
    * @date 17:54 2021/8/17
    * @param alarmDetailsDto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsEntityVo>
    **/
    List<AlarmDetailsEntityVo> selectList(AlarmDetailsDto alarmDetailsDto);

    /**
    * 分页查询
    * @author Andy
    * @date 17:54 2021/8/17
    * @param page:
    * @param alarmDetailsDto:
    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zcxk.charge.api.vo.AlarmDetailsEntityVo>
    **/
    IPage<AlarmDetailsEntityVo> selectPage(IPage<AlarmDetailsDto> page, AlarmDetailsDto alarmDetailsDto);

    /**
    * 查询设备信息
    * @author Andy
    * @date 17:54 2021/8/17
    * @param alarmDetailsDto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsHistoryVo>
    **/
    List<AlarmDetailsHistoryVo> selectHistoryList(AlarmDetailsDto alarmDetailsDto);

    /**
    * 查询设备信息
    * @author Andy
    * @date 17:54 2021/8/17
    * @param alarmDetailsDto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsRealTimeVo>
    **/
    List<AlarmDetailsRealTimeVo> selectRealTimeList(AlarmDetailsDto alarmDetailsDto);

    /**
    * 分页查询
    * @author Andy
    * @date 17:54 2021/8/17
    * @param page:
    * @param alarmDetailsDto:
    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zcxk.charge.api.vo.AlarmDetailsRealTimeVo>
    **/
    IPage<AlarmDetailsRealTimeVo> selectRealTimePage(IPage<AlarmDetailsRealTimeDto> page, AlarmDetailsDto alarmDetailsDto);


    /**
    * 分页查询
    * @author Andy
    * @date 17:54 2021/8/17
    * @param page:
    * @param alarmDetailsDto:
    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zcxk.charge.api.vo.AlarmDetailsHistoryVo>
    **/
    IPage<AlarmDetailsHistoryVo> selectHistoryPage(IPage<AlarmDetailsHistoryDto> page, AlarmDetailsDto alarmDetailsDto);
}
