package com.tuoheng.admin.service.inspection;

import com.tuoheng.admin.dto.InspectionDto;
import com.tuoheng.admin.entity.FlightData;
import com.tuoheng.admin.entity.Inspection;
import com.tuoheng.admin.request.inspection.AddInspectionRequest;
import com.tuoheng.admin.request.inspection.EditInspectionRequest;
import com.tuoheng.admin.request.inspection.QueryInspectionPageListRequest;
import com.tuoheng.common.core.utils.JsonResult;

/**
 * 巡检任务Service接口
 *
 * @author wanjing
 * @team tuoheng
 * @date 2022-11-16
 */
public interface IInspectionService {

    /**
     * 查询巡检任务列表(分页)
     *
     * @param queryInspectionRequest 巡检任务查询实体
     * @return 巡检任务集合
     */
    JsonResult selectPageList(QueryInspectionPageListRequest queryInspectionRequest);

    /**
     * 查询巡检任务信息
     *
     * @param id 巡检任务Id
     * @return 巡检任务
     */
    JsonResult getInspectionInfo(String id);

    /**
     * 查询巡检任务详情
     *
     * @param id 巡检任务Id
     * @return 巡检任务详情
     */
    JsonResult getInspectionDetails(String id);

    /**
     * 查询巡检任务列表
     *
     * @param queryInspectionRequest 巡检任务查询实体
     * @return 巡检任务集合
     */
    JsonResult selectList(QueryInspectionPageListRequest queryInspectionRequest);

    /**
     * 新增巡检任务
     *
     * @param addInspectionRequest 新增任务请求参数
     * @return 结果
     */
    JsonResult insert(AddInspectionRequest addInspectionRequest);

    /**
     * 修改巡检任务
     *
     * @param editInspectionRequest 修改任务请求参数
     * @return 结果
     */
    JsonResult update(EditInspectionRequest editInspectionRequest);

    /**
     * 删除巡检任务信息
     *
     * @param id 巡检任务主键
     * @return 结果
     */
    JsonResult deleteById(String id);

    JsonResult getListByAirportId(InspectionDto dto);

    JsonResult getVideoById(String id);

    /**
     * 重新提交巡检任务
     *
     * @param editInspectionRequest 修改任务请求参数
     * @return 结果
     */
    JsonResult resubmit(EditInspectionRequest editInspectionRequest);

    /**
     * 获取飞行轨迹
     * @param id
     * @return
     */
    JsonResult findFlightData(String id);

    /**
     * 根据巡检ID查询最新一条遥测数据
     * @param inspectionId
     * @return
     */
    FlightData getFlightDataByInspectionId(String inspectionId);

     /**
      * 立即执行
     * @param id 任务id
     * @return 结果
     */
    JsonResult execute(String id);


}
