package com.ho.business.service;
import com.ho.business.entity.Station;
import com.ho.business.vo.req.MonitorQuery;
import com.ho.business.vo.req.StationReq;
import com.ho.business.vo.req.dynamicConfig.DynamicConfigQuery;
import com.ho.business.vo.req.pcsStation.PcsStationReq;
import com.ho.business.vo.resp.AppRealTimeCurveRespVo;
import com.ho.business.vo.resp.CountEleData;
import com.ho.business.vo.resp.DeviceColData;
import com.ho.business.vo.resp.DeviceRespVO;
import com.ho.business.vo.resp.InverterResp.PowerGenerateRespVO;
import com.ho.business.vo.resp.cabin.TemperatureHumidityResp;
import com.ho.business.vo.resp.pcsStation.OutStationData;
import com.ho.business.vo.resp.pcsStation.PcsElecData;
import com.ho.business.vo.resp.pcsStation.PcsStationData;
import com.ho.business.vo.resp.pcsStation.PcsTotalData;
import com.ho.business.vo.resp.station.NewRealTimeCurveVo;
import com.ho.common.tools.vo.req.StationHomeRespVo;

import java.text.ParseException;
import java.util.List;

/**
 * @author gyan
 * @desc: TODO
 * @DateTime: 2023/4/17 11:18
 */
public interface StationHomeService {
    List<NewRealTimeCurveVo> getRealtimeCurve(StationReq stationReq);

    List<NewRealTimeCurveVo> getStrategyCurve(StationReq stationReq);

    List<StationHomeRespVo> getStationHomeRespVos(Station station, String beginTime, String endTime, Integer samlRate, DeviceColData socPowerData);
    /**
     * 根据电站id查询电站信息
     * @param stationId 电站id
     * @return
     */
    PcsStationData getPcsStationData(Integer stationId,String lang);

    /**
     * 根据电站id查询数据总览
     * @param req
     * @return
     */
    PcsTotalData getPcsTotalData(StationReq req);

    /**
     * 根据电站的id和type(年:year,月:month,日:day)查询充放电量统计图
     * @param req 充放电量统计图入参
     * @return
     */
    List<PcsElecData> getPcsElecData(PcsStationReq req) throws ParseException;

    /**
     * 获取电站统计数据
     * @param req
     * @param stationName
     * @return
     * @throws ParseException
     */
    List<PcsElecData> getElecData(PcsStationReq req,String stationName) throws ParseException;


    List<AppRealTimeCurveRespVo> getPowerCurve(MonitorQuery monitorQuery);

    List<AppRealTimeCurveRespVo> getPcsCurve(MonitorQuery monitorQuery);

    /**
     * 光储逆变器曲线
     * @param monitorQuery
     * @return
     */
    List<AppRealTimeCurveRespVo> getOpticalStorageCurve(MonitorQuery monitorQuery);

    List<AppRealTimeCurveRespVo> pvCurve(MonitorQuery monitorQuery);

    List<TemperatureHumidityResp> getTemperatureHumidityCurve(MonitorQuery monitorQuery);

    CountEleData getCountEleData(StationReq req);

    DeviceColData getDeviceColData(List<DeviceRespVO> list, String modelCol);

    MonitorQuery getStartEndTime(Integer sampleTime);


    /**
     * 获取动态配置曲线
     * @param vo
     * @return
     */
    List<NewRealTimeCurveVo> getDynamicRealtimeCurve(DynamicConfigQuery vo);


    /**
     * 对外部程序暴露的电站信息接口
     * @param req
     * @return
     */
    OutStationData getStationData(StationReq req);

    List<PowerGenerateRespVO> getPvData(PcsStationReq req);

}
