package com.yc.ship.module.trade.dal.mysql.report;

import com.yc.ship.module.trade.controller.admin.report.vo.VoyageStockBoardItemVO;
import com.yc.ship.module.trade.controller.admin.report.vo.VoyageStockBoardRespVO;
import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 航次库存看板 Mapper
 */
@Mapper
public interface VoyageStockBoardMapper {

    /**
     * 查询航次库存汇总
     */
    VoyageStockBoardRespVO selectVoyageStockSummary(@Param("voyageId") Long voyageId);

    /**
     * 查询航次库存明细
     */
    List<VoyageStockBoardItemVO> selectVoyageStockBoardDetail(@Param("voyageId") Long voyageId);

    /**
     * 查询同比航次ID
     */
    Long selectYoyVoyageId(@Param("voyageId") Long voyageId);

    /**
     * 查询环比航次ID
     */
    Long selectMomVoyageId(@Param("voyageId") Long voyageId);

    /**
     * 查询指定航次的预订间数（用于同比环比）
     */
    List<VoyageStockBoardItemVO> selectBookNumByVoyageId(@Param("voyageId") Long voyageId);

    /**
     * 查询客源地分析看板所需的游客列表
     *
     * @param shipId    游轮ID
     * @param voyageIds 航次ID列表
     * @return 游客列表（含证件类型、证件号、国籍及国籍名称）
     */
    List<TradeVisitorDO> selectVisitorListForSourceDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds);
}
