package com.yc.ship.module.trade.service.report;

import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.trade.controller.admin.report.vo.*;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;

/**
 * 航次库存看板 Service 接口
 */
public interface VoyageStockBoardService {

    /**
     * 查询航次库存看板分页
     *
     * @param pageReqVO 分页查询条件
     * @return 分页结果
     */
    PageResult<VoyageStockBoardRespVO> getVoyageStockBoardPage(VoyageStockBoardReqVO pageReqVO);

    /**
     * 导出航次库存看板 Excel
     *
     * @param pageReqVO 查询条件
     * @param response  HTTP响应
     * @throws IOException IO异常
     */
    void exportVoyageStockBoardExcel(VoyageStockBoardReqVO pageReqVO, HttpServletResponse response) throws IOException;

    /**
     * 查询全航次库存看板表头信息
     * @param reqVO
     * @return
     */
    List<AllVoyageStockBoardTableHeadRespVO> getAllVoyageStockBoardTableHead(@Valid AllVoyageStockBoardReqVO reqVO);

    /**
     * 查询全航次库存看板分页信息
     * @param reqVO
     * @return
     */
    PageResult<AllVoyageStockBoardRespVO> getAllVoyageStockBoardPage(@Valid AllVoyageStockBoardReqVO reqVO);

    /**
     * 查询客源地分析看板数据
     *
     * @param reqVO 查询条件
     * @return 客源地分析数据
     */
    VisitorSourceDashboardRespVO getVisitorSourceDashboard(@Valid VisitorSourceDashboardReqVO reqVO);

    /**
     * 导出客源地分析看板 Excel
     *
     * @param reqVO    查询条件
     * @param response HTTP响应
     * @throws IOException IO异常
     */
    void exportVisitorSourceDashboardExcel(@Valid VisitorSourceDashboardReqVO reqVO, HttpServletResponse response) throws IOException;
}
