package com.ltgk.boat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.ltgk.boat.domain.dto.*;
import com.ltgk.boat.domain.entity.DsEnterOutPort;
import com.ltgk.boat.domain.vo.AutomaticIdentificationVO;
import com.ltgk.boat.domain.vo.EnterOutPortStatisticsVO;
import com.ltgk.boat.domain.vo.NotReportBoatVO;
import com.ltgk.system.domain.vo.BoatNavigateStatus;

import java.util.List;

/**
 * 渔船进出港记录（数据来自船位动态监控） 服务接口
 *
 * @author Qi ChengBin
 * @date 2024-12-19
 */
public interface IDsEnterOutPortService extends IService<DsEnterOutPort> {
    List<DsEnterOutPort> getEnterOutPortList(String boatName);

    List<BoatNavigateStatus> getWaitingArea(GetAreaBoatListReq getAreaBoatListReq) throws JsonProcessingException;

    List<BoatNavigateStatus> getRegionBoat(GetRegionBoatReq getRegionBoatReq) throws JsonProcessingException;

    /**
     * 自动识别记录：包括AIS/北斗 设备解析和视频识别算法
     *
     * @param req： 自动识别记录请求参数
     * @return java.util.List<?>
     * @author Qi ChengBin
     * @date 2025/3/4
     */
    List<AutomaticIdentificationVO> findAutomaticIdentificationList(AutomaticIdentificationReq req);

    List<BoatNavigateStatus> getRegionBoatPlayback(GetRegionBoatPlaybackReq getRegionBoatPlaybackReq);

    /**
     * 渔船统计管理 - 进出港统计分析
     * -- 接口权限：后台暂未设置权限
     *
     * @param dto: 渔船统计管理 - 进出港统计分析 请求参数
     * @return {@link EnterOutPortStatisticsVO}
     * @author Qi ChengBin
     * @date 2025/3/24
     */
    EnterOutPortStatisticsVO getEnterOutPortStatistics(EnterOutPortStatisticsDTO dto);

    /**
     * 查询未报告渔船管理 - 查询所有未报备的渔船，包括不在系统中管理的渔船（根据长海项目需求）
     *
     * @param req：未报告渔船管理请求参数
     * @return com.ltgk.common.core.page.TableDataInfo
     * @author Qi ChengBin
     * @date 2025/4/11
     */
    List<NotReportBoatVO> findNotReportBoatList(NotReportBoatReq req);
}