package com.cico.nest.lcdp.boot.core.qxsd.domain.gateway;

import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.request.LocusDataRequest;
import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.HistoryTunnelVehicle;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.EventHisDO;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.TunnelDeviceDO;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.http.xlw.dto.XlwHolographicTimeHistoryDTO;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.ws.xlw.dto.XlwRealTimeVehicleDTO;

import java.io.InputStream;
import java.util.Date;
import java.util.List;

/**
 * @author zws
 * @date 2024/8/20
 */
public interface HistoryGateway {

    /**
     * 获取历史图片数据
     * @param urlPath 图片url
     * @return 图片路径
     */
    String saveEventImage(String urlPath);

    /**
     * 获取卡口图片
     * @param carPlate        车牌号码
     * @param eventStartTime  事件开始时间
     * @return  图片路径
     */
    EventHisDO.EventHisExpandInfo saveBayonetImage(String carPlate, Date eventStartTime);

    /**
     * 获取设备信息
     * @param deviceMilestone 设备桩号
     * @return TunnelDeviceDO 设备信息
     */
    TunnelDeviceDO getDevice(String tunnelCode,String holeId,Integer deviceMilestone,Integer direction);

    /**
     * 获取视频流
     * @param cameraIndexCode 海康摄像机唯一编号
     * @return 视频数据
     */
    String getVideoRtspUrl(String cameraIndexCode,String beginTime,String endTime);

    /**
     * 获取历史车辆轨迹
     * @return 车辆数据
     */
    List<HistoryTunnelVehicle> getVehicleInfo(LocusDataRequest locusDataRequest);

    /**
     * 保存切片视频
     * @param rtspUrl 视频流
     * @param outputFile 保存路径
     */
    void videoPuller(String rtspUrl, String outputFile);

}
