package com.ho.business.service;

import com.ho.business.entity.Station;
import com.ho.business.vo.req.StationReq;
import com.ho.business.vo.resp.DeviceRespVO;
import com.ho.business.vo.resp.InverterResp.InverterRespVO;
import com.ho.business.vo.resp.InverterResp.PVStationPanelRespVO;
import com.ho.business.vo.resp.InverterResp.PowerGenerateRespVO;
import com.ho.business.vo.resp.InverterResp.RealtimeCurveRespVO;
import com.ho.datacollect.api.vo.req.inverter.InverterCurveListVo;

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

/**
 * @author fancl
 * @desc: 光伏电站实现类
 * @date 2023/1/6
 */
public interface PvStationService {

    //电站下的逆变器列表
    List<DeviceRespVO> getIntervalsByStationId(Integer stationId);

    //光伏电站面板数据
    PVStationPanelRespVO getPvPanel(Integer stationId ,  List<DeviceRespVO> deviceRespVOS );

    //实时曲线
    List<RealtimeCurveRespVO> getRealtimeCurve(Integer stationId,  List<DeviceRespVO> topologies);

    //实时 发电量 和收益
    List<PowerGenerateRespVO> powerGenerationCurrentDay(Integer stationId, List<DeviceRespVO> deviceRespVOS, Date day);

    /**
     * 公共方法 采样率集合,根据入参得到不同采样率,可以为功率曲线,也可以为发电量
     * @param station
     * @param topology
     * @param beginTime
     * @param endTime
     * @param colName 要查询的采样率
     * @param interval 时间间隔 一般为60m
     * @return
     */
    InverterCurveListVo intervalList(String deviceType, Station station, DeviceRespVO topology, String beginTime, String endTime,
                                     String colName, String interval);

    //月度 年度 发电量和收益曲线
    List<PowerGenerateRespVO> powerGeneration(Integer stationId, List<DeviceRespVO> deviceRespVOS ,String queryType);


    //逆变器状列表
    List<InverterRespVO> inverterStatusList(StationReq queryVo);

}
