package com.tofly.scada.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tofly.scada.entity.Scada;
import com.tofly.scada.entity.dto.CustomDisplayDto;
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.StatisticsScadaVo;
import com.tofly.scada.entity.vo.WaterIndexInfoVo;

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

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


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

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

    /**
     * 手动更新范围数据
     * @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);



    void manualSendNetCumulativeFlow(Date sDate, Date eDate);


    List<Map<String, Object>> viewScadaData(CustomDisplayDto wis);

    Page<WaterIndexInfoVo> viewScadaDataNew(Page page, CustomDisplayDto wis);

    /**
     * 手动同步指定日期范围内每天/每月/每年的数据
     *
     * @param codes     指标编码
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param dateType  类型，1天，2月，3年
     * @param indexType
     * @param type
     */
    void syncDataRangeComm(String codes, String startDate, String endDate, Integer dateType, String indexType, String isSynFlow);


    void syncDaysData(String data,String codes);

    /**
     * 同步售水数据
     * @param startStr
     * @param endStr
     */
   void synSalesWater(String startStr,String endStr);
}
