package com.zsElectric.boot.charging.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.zsElectric.boot.charging.dto.StartChargingRequestDTO;
import com.zsElectric.boot.charging.dto.StartChargingResponseVO;
import com.zsElectric.boot.charging.vo.*;
import com.zsElectric.boot.common.util.electric.ApiToken;

import java.util.List;

public interface ChargingBusinessService {

    public ApiToken queryToken();
    /**
     * <p>查询业务策略信息</p>
     * @author SheepHy
     * @param EquipBizSeq  设备业务流水号
     * @param ConnectorID 充电设备接口编码
     * @return 返回值描述，如无返回值则为void 返回值为类则包含{@link ChargingPricePolicyVO}
     *
     */
    ChargingPricePolicyVO queryEquipBusinessPolicy(String EquipBizSeq, String ConnectorID) throws JsonProcessingException;

    /**
     * <p>请求设备认证</p>
     * @author SheepHy
     * @param EquipAuthSeq 设备认证流水号
     * @param ConnectorID 充电设备接口编码
     * @return 返回值描述，如无返回值则为void 返回值为类则包含{@link EquipmentAuthResponseVO}
     *
     */
    EquipmentAuthResponseVO queryEquipAuth(String EquipAuthSeq, String ConnectorID) throws JsonProcessingException;

    /**
     * <p>查询充电站信息</p>
     * @author wzq
     * @param LastQueryTime 最后一次查询时间
     * @param PageNo 页码
     * @param PageSize 页大小
     * @return 充电站信息列表
     *
     */
    QueryStationsInfoVO queryStationsInfo(String LastQueryTime, Integer PageNo, Integer PageSize) throws JsonProcessingException;

    /**
     * <p>设备接口状态查询</p>
     * @author wzq
     * @param stationIDs 充电站ID列表
     * @return 充电站状态列表
     *
     */
    QueryStationStatusVO queryStationStatus(List<String> stationIDs) throws JsonProcessingException;

    /**
     * <p>请求启动充电</p>
     * @author SheepHy
     * @param requestDTO，参数为类则包含{@link StartChargingRequestDTO}
     * @return 返回值描述，如无返回值则为void 返回值为类则包含{@link StartChargingResponseVO}
     */
    StartChargingResponseVO startCharging(StartChargingRequestDTO requestDTO) throws JsonProcessingException;

    /**
     * <p>查询充电状态</p>
     * @author SheepHy
     */
    ChargingStatusQueryResponseVO queryChargingStatus(String StartChargeSeq) throws JsonProcessingException;

    /**
     * <p>请求停止充电</p>
     * @author SheepHy
     */
    StopChargingOperationResponseVO stopCharging(String StartChargeSeq, String ConnectorID) throws JsonProcessingException;
}
