package com.jjt.calc.service;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

import com.jjt.biz.domain.TwinDevice;
import com.jjt.calc.domain.TwinCalcAlarms;

/**
 * 告警数据统计Service接口
 *
 * @author wukai
 * @date 2025-01-18
 */
public interface ITwinCalcAlarmsService {
    /**
     * 查询告警数据统计
     *
     * @param id 告警数据统计主键
     * @return 告警数据统计
     */
    public TwinCalcAlarms selectTwinCalcAlarmsById(Long id);

    /**
     * 查询告警数据统计列表
     *
     * @param twinCalcAlarms 告警数据统计
     * @return 告警数据统计集合
     */
    public List<TwinCalcAlarms> selectTwinCalcAlarmsList(TwinCalcAlarms twinCalcAlarms);

    /**
     * 新增告警数据统计
     *
     * @param twinCalcAlarms 告警数据统计
     * @return 结果
     */
    public int insertTwinCalcAlarms(TwinCalcAlarms twinCalcAlarms);

    /**
     * 修改告警数据统计
     *
     * @param twinCalcAlarms 告警数据统计
     * @return 结果
     */
    public int updateTwinCalcAlarms(TwinCalcAlarms twinCalcAlarms);

    /**
     * 批量删除告警数据统计
     *
     * @param ids 需要删除的告警数据统计主键集合
     * @return 结果
     */
    public int deleteTwinCalcAlarmsByIds(Long[] ids);

    /**
     * 删除告警数据统计信息
     *
     * @param id 告警数据统计主键
     * @return 结果
     */
    public int deleteTwinCalcAlarmsById(Long id);

    /**
     * 告警数据治理，从告警记录表到告警统计表中
     *
     * @param startTime  开始时间
     * @param deviceList 设备列表
     */
    void process(LocalDateTime startTime, List<TwinDevice> deviceList);
    /**
     * 按开始和结束时间查询数据
     *
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @return 查询列表
     */
    List<TwinCalcAlarms> selectTwinCalcAlarmsListByDate(Date sTime, Date eTime);
}
