package com.cico.nest.lcdp.boot.core.qxsd.application.service;

import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.request.LocusDataRequest;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.request.PassingProfileRequest;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.request.RealTimeVehicleQueryRequest;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.PassProfileImageVO;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.PassingProfileVO;
import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.HistoryTunnelVehicle;
import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.TunnelRealTimeVehicle;
import com.cico.nest.lcdp.boot.core.qxsd.domain.vehicle.VehicleInfo;
import com.cico.nest.lcdp.framework.common.pojo.CommonResult;
import com.cico.nest.lcdp.framework.common.pojo.PageResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

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

/**
 * @author zws
 * @date 2024/8/8
 */
public interface VehicleService {

    /**
     * 留存车辆列表
     * @return 车辆列表
     */
    TunnelRealTimeVehicle realTimeVehicleList(RealTimeVehicleQueryRequest request);

    /**
     * 车辆详情接口
     * @param carId carId
     * @return 车辆信息
     */
    VehicleInfo vehicleInfoByCarId(String carId);


    /**
     * 重点车辆标记
     * @param carId 车辆id
     */
    void focusVehiclesMark(String carId);

    /**
     * 重点车辆取消标记
     * @param carId 车辆id
     */
    void focusVehiclesUnMark(String carId);

    /**
     * 车辆通行记录列表页
     * @param passingProfileRequest 查询条件
     * @return 通行记录
     */
    PageResult<PassingProfileVO> passingProfileList(PassingProfileRequest passingProfileRequest);

    /**
     * 通行记录图片
     * @param passProfileId 通行记录id
     * @return 图片数据
     */
    PassProfileImageVO passProfileImage(String passProfileId);

    /**
     * 通行记录图片
     * @param passProfileIds 通行记录id
     * @return 图片数据
     */
    Map<String,PassProfileImageVO> passProfileImages(List<String> passProfileIds);

    /**
     * 获取车辆轨迹数据
     * @param request
     * @return
     */
    List<HistoryTunnelVehicle> getCarLocusData(@RequestBody LocusDataRequest request);

}
