package com.usky.park.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.park.domain.DmpDevice;
import com.usky.common.mybatis.core.CrudService;
import com.usky.park.service.vo.DeviceHistoryDataExportVO;
import com.usky.park.service.vo.DmpDeviceVO;
import com.usky.park.service.vo.HistoryAttributeVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 设备信息表 服务类
 * </p>
 *
 * @author zyj
 * @since 2023-03-30
 */
public interface DmpDeviceService extends CrudService<DmpDevice> {
    /**
     * 设备管理-设备列表查询
     *
     * @param deviceName 设备名称
     * @param installAddress 设备安装位置
     * @param deviceType 设备类型（501、监控系统  502、门禁系统  503、梯控系统  504、机房系统  509、环境系统  510、照明系统）
     * @param deviceStatus  设备状态（0 离线 1 在线）
     * @param doorStatus  门禁门状态（0 初始状态 1 开门状态 2 关门状态 3 离线状态）
     * @param startDate 开始时间  格式 yyyy-MM-dd HH:mm:ss
     * @param endDate  结束时间  格式 yyyy-MM-dd HH:mm:ss
     * @param pageNum  当前页
     * @param pageSize  每页条数
     * @return
     */
    CommonPage<DmpDeviceVO> dmpDeviceList(String deviceName,String installAddress,Integer deviceType,String deviceStatus,String doorStatus,String switchStatus,String startDate,String endDate,Integer pageNum,Integer pageSize);

    /**
     * 数据中心-机房系统、环境系统、照明系统心跳列表查询接口
     *
     * @param deviceName 设备名称
     * @param installAddress 设备安装位置
     * @param deviceType 设备类型（501、监控系统  502、门禁系统  503、梯控系统  504、机房系统  509、环境系统  510、照明系统）
     * @param switchStatus 照明开关状态（0 关闭 1 打开）
     * @param pageNum  当前页
     * @param pageSize  每页条数
     * @return
     */
    CommonPage<Object> deviceCurrentDataList(String deviceName,String installAddress,Integer deviceType,Integer switchStatus,Integer pageNum,Integer pageSize);


    List<DeviceHistoryDataExportVO> deviceHistoryDataListExport(Integer deviceType, String startDate, String endDate);


    /**
     * 数据中心-机房系统、环境系统、照明系统心跳历史数据列表查询接口
     *
     * @param deviceId 设备Id
     * @param startDate 开始时间  格式 yyyy-MM-dd HH:mm:ss
     * @param deviceAttribute 设备属性
     * @param endDate  结束时间  格式 yyyy-MM-dd HH:mm:ss
     * @return
     */
    List<HistoryAttributeVO> deviceHistoryDataList(String deviceId, Integer deviceType, List<String> deviceAttribute, String startDate, String endDate);

    /**
     * 数据中心-环境系统楼宇健康监测查询
     *
     * @return
     */
    Map<String,Object> evBuildHealth();

    float attributeStatistic(Integer deviceType,String attribute_name);
}
