package com.zcxk.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.dto.*;
import com.zcxk.entity.DeviceParmEntity;

import java.util.Collection;
import java.util.List;

/**
 * @description 设备参数
 * @auto wangli
 * @data 2020-11-17 11:01
 */
public interface DeviceParmService {
    /**
     * 查询单个设备参数
     * @return
     */
    DeviceParmEntity selectById(Integer id);
    /**
     * 查询单个设备参数信息
     * @return
     */
    List<DeviceParmEntity> selectByDeviceId(Integer sceneId,Integer id);

    /**
     * 按场景查询设备参数
     * @return
     */
    List<DeviceParmEntity> selectByScendId(Integer sceneId);
    /**
     * 查询单个设备参数信息针对工艺图
     * @return
     */
    List<DeviceParmEntity> selectByDeviceIdForGis(Integer sceneId,Integer id);

    /**
     * 添加设备参数
     * @return
     */
    Integer insert(DeviceParmEntity deviceParmEntity);

    /**
     * 批量添加设备参数
     * @return
     */
    Integer batchInsert(List<DeviceParmEntity> deviceParmEntities);
    /**
     * 单条删除设备参数
     * @return
     */
    Integer delete(Integer id);

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

    /**
     * 批量修改设备参数信息
     * @return
     */
    void batchUpdate(List<DeviceParmEntity> deviceParmEntities);
    /**
     * 批量保存设备参数信息
     * @return
     */
    boolean saveOrUpdateBatch(Collection<DeviceParmEntity> entityList);

    /**
     * 查询设备参数信息
     * @param deviceParmEntity
     * @return
     */
    List<DeviceParmEntity> selectList(DeviceParmEntity deviceParmEntity);
    
    /**
     * 分页查询
     * @return
     */
    IPage<DeviceParmEntity> selectPage(IPage<DeviceParmEntity> page, DeviceParmEntity deviceParmEntity);

    List<ReportAttributeDto> findAttributeNameList(ReportDto reportDto);

    List<ReportAttributeDto> findHistoryDataAttributeNameList(ReportDto reportDto);

    List<DeviceParmInfoDto> selectBySceneAndDeviceId(Integer parentSceneId, Integer sceneId, Integer deviceId);

    void batchSaveEdit(Long sceneId, Long deviceId,List<DeviceParmInfoDto> deviceParmInfos);

    List<DeviceParmEntity> selectDeviceBySceneIdAndType(DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmCount(DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmTotalCount(DeviceParmEntity deviceParmEntity);

    List<ParmTypeCountDto> findAlarmCountTotalCount(DeviceParmEntity deviceParmEntity);

    /**
     * 批量修改统计维度信息
     * @return
     */
    void batchUpdateStatisticalDimension(List<ReportStatisticalDimensionDto> statisticalDimensionDtos);

}
