package com.njcn.csdevice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.po.RStatOnlineRateD;
import com.njcn.csharmonic.pojo.param.StatisticsDataParam;

import java.util.List;

/**
 * <p>
 * 在线率日表 服务类
 * </p>
 *
 * @author xy
 * @since 2025-06-23
 */
public interface IRStatOnlineRateDService extends IService<RStatOnlineRateD> {

    /**
     * 1.查询该设备当前计算周期是否存在上下线记录
     * 2.
     * a.存在记录，如果只有1条数据，则根据这一条记录的状态计算在线时长；如果是多条数据，则根据上下线时间计算在线时长；
     * b.不存在记录，则需要借助历史记录判断：
     *    1) 先查询设备第一条记录时间
     *       - 如果统计日期 < 第一条记录时间 → 设备未上线 → 离线
     *    2) 再查询最新记录时间和状态
     *       - 如果统计日期 > 最新记录时间 → 延续最新状态
     *         * 最新是在线 → 全天在线
     *         * 最新是离线 → 全天离线
     * @param param
     */
    void addData(StatisticsDataParam param);

    List<RStatOnlineRateD> getData(List<String> list, String startTime, String endTime);

}
