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.TwinCalcStop;

/**
 * 停机数据统计Service接口
 *
 * @author wukai
 * @date 2025-01-18
 */
public interface ITwinCalcStopService {
    /**
     * 查询停机数据统计
     *
     * @param id 停机数据统计主键
     * @return 停机数据统计
     */
    public TwinCalcStop selectTwinCalcStopById(Long id);

    /**
     * 查询停机数据统计列表
     *
     * @param twinCalcStop 停机数据统计
     * @return 停机数据统计集合
     */
    public List<TwinCalcStop> selectTwinCalcStopList(TwinCalcStop twinCalcStop);

    /**
     * 新增停机数据统计
     *
     * @param twinCalcStop 停机数据统计
     * @return 结果
     */
    public int insertTwinCalcStop(TwinCalcStop twinCalcStop);

    /**
     * 修改停机数据统计
     *
     * @param twinCalcStop 停机数据统计
     * @return 结果
     */
    public int updateTwinCalcStop(TwinCalcStop twinCalcStop);

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

    /**
     * 删除停机数据统计信息
     *
     * @param id 停机数据统计主键
     * @return 结果
     */
    public int deleteTwinCalcStopById(Long id);
    /**
     * 停机数据治理，从停机记录表到停机统计表中
     *
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @param deviceList 设备列表
     */
    void process(LocalDateTime startTime, LocalDateTime endTime, List<TwinDevice> deviceList);
    /**
     * 按开始和结束时间查询数据
     *
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @return 查询列表
     */
    List<TwinCalcStop> selectTwinCalcStopListByDate(Date sTime, Date eTime);

    /**
     * 按开始和结束时间查询数据--停机类型）
     *
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @param type  停机类型
     * @return 查询列表
     */
    List<TwinCalcStop> selectTwinCalcStopListByDate(Date sTime, Date eTime, int type);
}
