package com.jjt.calc.service;

import com.jjt.calc.domain.TwinCalcHourEnergy;

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

/**
 * 能源1小时统计数据Service接口
 *
 * @author wukai
 * @date 2025-01-18
 */
public interface ITwinCalcHourEnergyService {
    /**
     * 查询能源1小时统计数据
     *
     * @param autoId 能源1小时统计数据主键
     * @return 能源1小时统计数据
     */
    public TwinCalcHourEnergy selectTwinCalcHourEnergyByAutoId(Long autoId);

    /**
     * 查询能源1小时统计数据列表
     *
     * @param twinCalcHourEnergy 能源1小时统计数据
     * @return 能源1小时统计数据集合
     */
    public List<TwinCalcHourEnergy> selectTwinCalcHourEnergyList(TwinCalcHourEnergy twinCalcHourEnergy);

    /**
     * 新增能源1小时统计数据
     *
     * @param twinCalcHourEnergy 能源1小时统计数据
     * @return 结果
     */
    public int insertTwinCalcHourEnergy(TwinCalcHourEnergy twinCalcHourEnergy);

    /**
     * 修改能源1小时统计数据
     *
     * @param twinCalcHourEnergy 能源1小时统计数据
     * @return 结果
     */
    public int updateTwinCalcHourEnergy(TwinCalcHourEnergy twinCalcHourEnergy);

    /**
     * 批量删除能源1小时统计数据
     *
     * @param autoIds 需要删除的能源1小时统计数据主键集合
     * @return 结果
     */
    public int deleteTwinCalcHourEnergyByAutoIds(Long[] autoIds);

    /**
     * 删除能源1小时统计数据信息
     *
     * @param autoId 能源1小时统计数据主键
     * @return 结果
     */
    public int deleteTwinCalcHourEnergyByAutoId(Long autoId);

    /**
     * 统计指定日期指定时段能耗数据
     *
     * @param start 开始时间戳
     * @param end   结束时间戳
     */
    void calcEnergy(LocalDateTime start, LocalDateTime end);

    /**
     * 统计上一个时段的能源
     */
    void calcLastEnergy();
    /**
     * 按时间查询
     *
     * @param parseDate 时间
     * @return 结果
     */
    List<TwinCalcHourEnergy> selectTwinEmpCalcListByDate(Date parseDate);
    /**
     * 从数据库最后一个时间段统计至上一个时段
     */
    void calc2Curr();
}
