package com.zcxk.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.dto.*;
import com.zcxk.entity.DeviceParmEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description
 * @auto wangli
 * @data 2020-11-17 10:57
 */
@Mapper
public interface DeviceParmMapper  {

    /**
     * 查询单个设备
     * @return
     */
    DeviceParmEntity selectById(Integer id);

    /**
     * 添加设备
     * @return
     */
    Integer insert(DeviceParmEntity deviceEntity);

    /**
     * 批量插入设备信息
     * @param deviceParms
     * @return
     */
    Integer batchInsert( @Param("deviceParms") List<DeviceParmEntity> deviceParms);

    /**
     * 单条删除设备
     * @return
     */
    Integer deleteById(Integer id);

    /**
     * 单条删除设备
     * @return
     */
    Integer deleteByDeviceId(Integer deviceId);

    /**
     * 修改设备信息
     * @return
     */
    Integer update(DeviceParmEntity deviceEntity);

    /**
     * 查询设备信息
     * @return
     */
    List<DeviceParmEntity> selectList(DeviceParmEntity deviceParmEntity);

    /**
     * 分页查询
     * @return
     */
    IPage<DeviceParmEntity> selectPage(IPage<DeviceParmEntity> page, DeviceParmEntity deviceParmEntity);

    List<DeviceParmEntity> selectByDeviceId(@Param("sceneId")Integer sceneId,@Param("id")Integer id);

    List<DeviceParmEntity> selectByDeviceIdForGis(@Param("sceneId")Integer sceneId,@Param("id")Integer id);

    List<ReportAttributeDto> findAttributeNameList(@Param("report") ReportDto reportDto);

    List<ReportAttributeDto> findHistoryDataAttributeNameList(@Param("report") ReportDto reportDto);

    List<DeviceParmInfoDto> findBySceneDeviceId(@Param("info") DeviceParmInfoDto deviceParmInfo);

    List<DeviceParmInfoDto> selectBindByDeviceId(@Param("sceneId")Long sceneId, @Param("deviceId")Long deviceId);

    List<DeviceParmEntity> selectDeviceBySceneIdAndType(@Param("info") DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmCount(@Param("info") DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmTotalCount(@Param("info") DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmCountTotalCount(@Param("info") DeviceParmEntity deviceParmEntity);

    List<DeviceParmEntity> selectBySceneId(@Param("sceneId")Integer sceneId);

    Integer updateStatisticalDimension(ReportStatisticalDimensionDto statisticalDimensionDto);
}
