package com.ruoyi.shipping.mapper;

import java.util.Date;
import java.util.List;
import java.util.LongSummaryStatistics;
import java.util.Map;

import com.ruoyi.shipping.domain.TVoyage;
import org.apache.ibatis.annotations.Param;

/**
 * 航次Mapper接口
 * 
 * @author ruoyi
 * @date 2021-04-02
 */
public interface TVoyageMapper 
{
    /**
     * 查询航次
     * 
     * @param fId 航次ID
     * @return 航次
     */
    public TVoyage selectTVoyageById(Long fId);

    /**
     * 查询航次列表
     * 
     * @param tVoyage 航次
     * @return 航次集合
     */
    public List<TVoyage> selectTVoyageList(TVoyage tVoyage);
    /**
     * 查询航次列表
     *
     * @param tVoyage 航次
     * @return 航次集合
     */
    public List<TVoyage> selectMessage(TVoyage tVoyage);
    /**
     * 查询航次列表
     *
     * @param tVoyage 航次
     * @return 航次集合
     */
    public List<TVoyage> selectTVoyageListNew(TVoyage tVoyage);

    /**
     * 新增航次
     * 
     * @param tVoyage 航次
     * @return 结果
     */
    public int insertTVoyage(TVoyage tVoyage);

    /**
     * 修改航次
     * 
     * @param tVoyage 航次
     * @return 结果
     */
    public int updateTVoyage(TVoyage tVoyage);

    /**
     * 删除航次
     * 
     * @param fId 航次ID
     * @return 结果
     */
    public int deleteTVoyageById(Long fId);

    /**
     * 批量删除航次
     * 
     * @param fIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteTVoyageByIds(Long[] fIds);

    /**
     * 验证编号唯一性
     * @param tVoyage
     * @return
     */
    public TVoyage selectTVoyagefNo(TVoyage tVoyage);

    /**
     * 查询航次
     * @return
     */
    public List<Map<String, Object>> selectTVoyagefNumber(TVoyage tVoyage);

    /**
     * 判断航次是否重复
     * @param fNo 航次编号
     * @param fPortofloadid 起运港
     * @param fDistinationid 目的港
     * @param fPortoftransshipment 中转港
     * @param fEtd 预计开船日期
     * @return
     */
    public List<TVoyage> selectTVoyageMessage(@Param("fNo") String fNo,
                                              @Param("fPortofloadid") Long fPortofloadid,
                                              @Param("fDistinationid") Long fDistinationid,
                                              @Param("fPortoftransshipment") Long fPortoftransshipment,
                                              @Param("fEtd") Date fEtd);

    /**
     * 获取对应起运港 中转港 目的港的航次ID
     * @param tVoyage
     * @return
     */
    public List<Long> selectTVoyageIds(TVoyage tVoyage);

    /**
     * 获取每个航次对应的箱型的运价
     * @param fId
     * @return
     */
    public TVoyage selectTVoyageByFid(Long fId);

    /**
     * 首页获取船动态
     * @return
     */
    public List<Map<String,Object>>shipDynamic();
}
