package com.tofly.scada.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tofly.scada.entity.Dmatable;
import com.tofly.scada.entity.Scada;
import com.tofly.scada.entity.dto.DeviceQuery;
import com.tofly.scada.entity.dto.ScadaQuery;
import com.tofly.scada.entity.vo.DeviceArchiveManageVo;
import com.tofly.scada.entity.vo.ScadaVo;
import com.tofly.scada.entity.vo.StatisticsScadaVo;

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

/**
 * @author HaiQiu
 * @date 2022/5/9
 */
public interface ScadaService extends IService<Scada> {
    /**
     * 查询最新所有数据
     * @return 查询最新所有数据
     */
    List<Scada> getListData();

    /**
     * 手动更新24小时数据
     * @param syncTime 时间参数
     * @return 是否成功
     */
    boolean fetch24HoursData(String syncTime);

    /**
     * 手动更新月份数据数据
     * @param syncTime 时间参数
     */
    void fetchMonthsData(String syncTime);

    /**
     * 手动更新月份数据数据
     * @param syncTime 时间参数
     */
    void fetchDaysData(String syncTime);

    /**
     * 查询24小时平均SCADA数据
     * @param scadaQuery 查询参数
     * @return
     */
    Page<ScadaVo> get24HoursData(Page page,ScadaQuery scadaQuery);


    /**
     * 查询24小时平均SCADA数据
     * @param scadaQuery 查询参数
     * @return
     */
    Page getMonthsData(Page page,ScadaQuery scadaQuery);

    /**
     * app查询最新SCADA所有数据
     * @param deviceQuery 查询参数
     * @return scada数据
     */
    List<DeviceArchiveManageVo> getAppData(DeviceQuery deviceQuery);

    /**
     * 根据scada数据ID存储数据（暂时分表到月份表上）
     */
    void insertData(Scada scada);

    /**
     * 手动更新范围数据
     * @param start 开始时间:2022-01-01 00:00:00
     * @param end 结束时间:2022-10-01 14:00:00
     * @param type 统计类型0小时，1按天，2月份，3年份
     */
    void fetchData(String code,String start, String end, Integer type);

    /**
     * 分页查询月份表数据
     * @param mouthTable 月份表
     * @param page 分页
     * @param scadaQuery 查询条件
     * @return 分页数据
     */
    Page<StatisticsScadaVo> selectHistoryByMouthsTables(String mouthTable, Page page, ScadaQuery scadaQuery,boolean isPage);

    /**
     * 手动更新范围数据-月份表数据
     * @param code code编码，非必传,多个逗号隔开
     * @param start 开始时间:2022-01-01 00:00:00
     * @param end 结束时间:2022-10-01 14:00:00
     */
    void fetchDataMouth(String code, String start, String end);

    void manualSendNetCumulativeFlow(Date sDate, Date eDate);
}
