package com.trade.service.trade.salesorder.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.trade.service.trade.filingdoc.vo.CustomsDeclaration4FilingDocSearch;
import com.trade.service.trade.filingdoc.vo.CustomsDeclaration4FilingDocVO;
import com.trade.service.trade.filingdoc.vo.SalesOrder4CustomsFileQueryVO;
import com.trade.service.trade.salesorder.domain.CustomsDeclaration;
import com.trade.service.trade.salesorder.vo.*;

import java.util.List;

/**
 * <p>
 * 报关单信息 服务类
 * </p>
 *
 * @author zhangchenm
 * @since 2024-09-19
 */
public interface ICustomsDeclarationService extends IService<CustomsDeclaration> {

    void addCustomsDeclaration(CustomsDeclaration customsDeclaration);

    /**
     * 根据订单号查询报关单信息
     * 
     * @param bgdh 报关单号
     * @return 报关单信息
     */
    CustomsDeclaration getByBgdh(String bgdh);

    void updateCustomsDeclaration(CustomsDeclaration customsDeclaration);

    /**
     * 查询需要更新报关单的订单号
     * 
     * @return 需要更新报关单的订单号
     */
    List<SalesOrder4CustomsDeclarationVO> queryOrderNo4UpdateCustomsDeclaration();

    /**
     * 根据条件查询报关单列表
     * 
     * @param search 条件
     * @return 报关单列表
     */
    PageInfo<CustomsDeclarationVO> queryListBySearch(CustomsDeclarationSearch search);

    /**
     * 根据ID查询报关单明细
     * 
     * @param id ID
     * @return 报关单明细
     */
    CustomsDeclarationDtlVO getDetailById(Long id);

    /**
     * 获取待下载文件的数据
     * 
     * @return 待下载的数据
     */
    List<SalesOrder4CustomsFileQueryVO> queryData4DownloadCustomsDeclarationFile();

    /**
     * 根据条件查询报关单列表（用于FilingDoc）
     * 
     * @param search 条件
     * @return 报关单列表
     */
    PageInfo<CustomsDeclaration4FilingDocVO> queryList4FilingDocBySearch(CustomsDeclaration4FilingDocSearch search);

    /**
     * 获取所有报关公司名称
     * 
     * @return 报关公司名称列表
     */
    List<String> queryAllDeclareCompany4Dict();

    /**
     * 根据订单号查询报关单信息
     * 
     * @param orderNo 订单号
     * @return 报关单信息
     */
    List<CustomsDeclaration> queryByOrderNo(String orderNo);

    /**
     * 重定向小图进行报关单下载
     */
    String getDownloadCustomsDeclarationUrl(String xtUserId, String xtEid);
}
