package com.artfess.rescue.open.dao;

import com.artfess.rescue.open.dto.*;
import org.apache.ibatis.annotations.Param;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * @Author: wsf
 * @Description: 驾驶舱-查询Mapper接口
 * @DateTime: 2025/3/10 15:51
 **/
public interface OpenCountDao {
    /**
     * 根据路段查询当前正在执行道路巡检任务的人员、车辆数量
     *
     * @param dto 驾驶舱查询条件DTO
     * @return List<String> 人员ids集合
     */
    List<String> queryNowTaskTeam(@Param("dto") OpenBaseQueryDTO dto);

    /**
     * 根据路段查询当前正在执行清障救援任务的人员、车辆数量
     *
     * @param dto 驾驶舱查询条件DTO
     * @return RescueTaskQueryResultDTO
     */
    RescueTaskQueryResultDTO queryNowRescueTask(@Param("dto") OpenBaseQueryDTO dto);

    /**
     * 根据路段查询当前道路巡检任务的情况
     *
     * @param dto 驾驶舱查询条件DTO
     * @return InspectionTaskQueryResultDTO 当前已完成的道路巡检任务的情况
     */
    List<InspectionTaskQueryResultDTO> queryNowTaskMileage(@Param("dto") OpenBaseQueryDTO dto);

    /**
     * 查询周边摄像头
     * @param dto
     * @return
     */
    List<CameraInfoDTO> querySurroundingCameraInfo(@Valid @Param("dto") SurroundingCameraInfoQueryDTO dto);

    /**
     * 验证路段是否存在
     * @param sectionId 路段ID，需要的路段ID是摄像头表中的路段ID，而不是巡查救援系统或者养护系统中的路段ID
     * @return 返回一条该路段视频设备信息
     */
    List<Map<String, Object>> queryCameraInfoBySectionId(@Param("sectionId") String sectionId);
}
