package com.ruoyi.shipping.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.shipping.domain.TCntrno;
import com.ruoyi.shipping.excel.BoxDistributionStatistics;
import org.springframework.web.multipart.MultipartFile;

/**
 * 集装箱号Service接口
 * 
 * @author ruoyi
 * @date 2021-03-22
 */
public interface ITCntrnoService 
{
    /**
     * 查询集装箱号
     * 
     * @param fId 集装箱号ID
     * @return 集装箱号
     */
    public TCntrno selectTCntrnoById(Long fId);

    /**
     * 查询集装箱号列表
     * 
     * @param tCntrno 集装箱号
     * @return 集装箱号集合
     */
    public List<TCntrno> selectTCntrnoList(TCntrno tCntrno);

    /**
     * 新增集装箱号
     * 
     * @param tCntrno 集装箱号
     * @return 结果
     */
    public int insertTCntrno(TCntrno tCntrno);

    /**
     * 修改集装箱号
     * 
     * @param tCntrno 集装箱号
     * @return 结果
     */
    public int updateTCntrno(List<TCntrno> tCntrno);
    /**
     * 保存场站动态信息
     *
     * @param tCntrno 集装箱号
     * @return 结果
     */
    public AjaxResult updateAirForceStation(List<TCntrno> tCntrno);
    /**
     * 修改集装箱号
     *
     * @param tCntrno 集装箱号
     * @return 结果
     */
    public int updateTCntrnoMessage(TCntrno tCntrno);

    /**
     * 批量删除集装箱号
     * 
     * @param fIds 需要删除的集装箱号ID
     * @return 结果
     */
    public int deleteTCntrnoByIds(Long[] fIds);

    /**
     * 删除集装箱号信息
     * 
     * @param fId 集装箱号ID
     * @return 结果
     */
    public int deleteTCntrnoById(Long fId);
    /**
     * 批量更新数据状态将正常状态改为停用
     * @param fIds
     * @return
     */
    public int updateTcntrnoStatus(Long[] fIds);
    /**
     * 查询集装箱信息
     * @param tCntrno
     * @return
     */
    public List<TCntrno> selectTcntrnoMessage(TCntrno tCntrno);

    /**
     * 获取集装箱信息
     * @param tCntrno
     * @return
     */
    public List<Map<String, Object>> getTCntrnoMessage(TCntrno tCntrno,List<String> list );
    /**
     * 获取集装箱分布信息
     * @param tCntrno
     * @return
     */
    public List<TCntrno> getTCntrnoDistribute(TCntrno tCntrno);

    /**
     * 获取集装箱动态分布标签
     * @param tCntrno
     * @return
     */
    public List<String> getTCntrnoChange(TCntrno tCntrno);
    /**
     * 查询编号唯一性
     * @param tCntrno
     * @return
     */
    public String selectTCntrnoFNo(TCntrno tCntrno);

    /**
     * 更新箱信息数据
     * @param fileName        更新箱信息数据列表
     * @return 结果
     */
    public AjaxResult importUpdateDataTcntrnoExcel(MultipartFile fileName);

    /**
     * 导入箱信息数据Excel
     * @param fileName        更新箱信息数据列表
     * @return 结果
     */
    public AjaxResult importTcntrnoDataExcel(MultipartFile fileName);
    /**
     *  导入Excel生成箱信息
     * @param file  excel
     * @return  结果
     */
    public AjaxResult importCreateCompanyMsg(MultipartFile file) throws Exception;

    /**
     * 批量新增箱信息
     * @param tCntrno
     * @return
     */
    public AjaxResult batch(String tCntrno, LoginUser loginUser);

    /**
     * 获取 箱号、地点、空重
     * @param tCntrno
     * @return
     */
    public List<Map<String, Object>> getTcntrnoFno(TCntrno tCntrno);
    /**
     *  导入场站动态
     * @param file  excel
     * @return  结果
     */
    public AjaxResult importAirForceStation(MultipartFile file)throws Exception;

    /**
     * 箱分布统计
     * @param
     * @return
     */
    public List<BoxDistributionStatistics> boxDistributedStatistics();
    /**
     * 首页获取箱分布
     * @return
     */
    public List<Map<String,Object>>homeBox();
}
