package com.xzzn.ems.mapper;

import java.util.Date;
import java.util.List;

import com.xzzn.ems.domain.EmsBatteryData;
import com.xzzn.ems.domain.EmsBatteryDataMinutes;
import org.apache.ibatis.annotations.Param;

/**
 * 单体电池分钟级数据Mapper接口
 *
 * @author xzzn
 * @date 2025-08-17
 */
public interface EmsBatteryDataMinutesMapper
{
    /**
     * 查询单体电池分钟级数据
     *
     * @param dateDay 单体电池分钟级数据主键
     * @return 单体电池分钟级数据
     */
    public EmsBatteryDataMinutes selectEmsBatteryDataMinutesByDateDay(Date dateDay);

    /**
     * 查询单体电池分钟级数据列表
     *
     * @param emsBatteryDataMinutes 单体电池分钟级数据
     * @return 单体电池分钟级数据集合
     */
    public List<EmsBatteryDataMinutes> selectEmsBatteryDataMinutesList(EmsBatteryDataMinutes emsBatteryDataMinutes);

    /**
     * 新增单体电池分钟级数据
     *
     * @param emsBatteryDataMinutes 单体电池分钟级数据
     * @return 结果
     */
    public int insertEmsBatteryDataMinutes(EmsBatteryDataMinutes emsBatteryDataMinutes);

    /**
     * 修改单体电池分钟级数据
     *
     * @param emsBatteryDataMinutes 单体电池分钟级数据
     * @return 结果
     */
    public int updateEmsBatteryDataMinutes(EmsBatteryDataMinutes emsBatteryDataMinutes);

    /**
     * 删除单体电池分钟级数据
     *
     * @param dateDay 单体电池分钟级数据主键
     * @return 结果
     */
    public int deleteEmsBatteryDataMinutesByDateDay(Date dateDay);

    /**
     * 批量删除单体电池分钟级数据
     *
     * @param dateDays 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEmsBatteryDataMinutesByDateDays(Date[] dateDays);

    int insertMinutesBatteryDataList(List<EmsBatteryDataMinutes> emsBatteryDataList);

    public void deleteByTimeBeforeOneHour(String oneHourAgoStr);

    // 获取指定站点指定电池簇下面的单体电池最新数据
    public EmsBatteryData getLastBatteryData(@Param("siteId") String siteId,
                                             @Param("clusterDeviceId") String clusterDeviceId,
                                             @Param("deviceId") String deviceId);
}