package cn.superdesk.uniorder.dao.mapper._statistics;

import cn.superdesk.uniorder.dto.param.accounting.statistics.PayableBalanceQueryParam;
import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableDetailDataQueryParam;
import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableStatisticsPageQueryParam;
import cn.superdesk.uniorder.dto.vo._statistics.payable.*;

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

public interface PayableStatisticsMapper {


	/**
	 * 查询应付明细数据
	 *  * 在明细数据基础上 有分组
	 * @return
	 */
	List<PayableDetailDataVo> queryPayableDetailData(ReceivableDetailDataQueryParam queryParam);



	/**
	 * 运费
	 * 查询应付运费明细数据
	 * 在明细数据基础上 有分组
	 * @return
	 */
	List<PayableDetailDataVo> queryPayableFreightDetailData(ReceivableDetailDataQueryParam queryParam);


	/**
	 * 查询应收每日数据
	 * 在明细数据基础上 有分组
	 * @return
	 */
	List<PayableDayDataVo> queryPrayableDayData(ReceivableDetailDataQueryParam queryParam);







	List<PayableStatisticsPageVo> getPayableStatisticsPageVoList(ReceivableStatisticsPageQueryParam queryParam);


	/**
	 * 获得应收报表分页后的settlementId
	 * @param queryParam
	 * @return
	 */
	List<Integer> getPayableStatisticsPageLimitSettlementId(ReceivableStatisticsPageQueryParam queryParam);


	/**
	 * 查询应收报表总页数
	 * @param queryParam
	 * @return
	 */
	Integer getPayableStatisticsTotalPageNum(ReceivableStatisticsPageQueryParam queryParam);

	List<Map<String, Object>> getPayableStatisticsTotalData(ReceivableStatisticsPageQueryParam queryParam);


	/**
	 * 每日数数据
	 * 导出Excel使用
	 * 不用分页
	 * @param queryParam
	 * @return
	 */
	List<PayableStatisticsDayDataByExcelVo> getPayableStatisticsDayDataByExcel(ReceivableStatisticsPageQueryParam queryParam);

	/**
	 * 明细数据
	 * 导出Excel使用
	 * 不用分页
	 * @param queryParam
	 * @return
	 */
	List<PayableStatisticsDetailDataByExcelVo> getPayableStatisticsDetailDataByExcel(ReceivableStatisticsPageQueryParam queryParam);


	/**
	 * 应付回款对冲数据
	 * @return
	 */
	List<PayableDetailDataVo> queryPayableReturnedMoneyDetailData(ReceivableDetailDataQueryParam queryParam);

	/**
	 * 应付余额列表查询
	 * @param param
	 * @return
	 */
    List<PayableBalanceDetail> getPayableBalanceVOList(PayableBalanceQueryParam param);

	/**
	 * 导出应付余额数据excel 根据条件查询
	 * @param param
	 * @return
	 */
    List<PayableStatisticsDayDataByExcelVo> selectPayableBalanceByCondition(PayableBalanceQueryParam param);

	/**
	 * 获取分页供应商id
	 * @param param
	 * @return
	 */
	List<Long> getSettlementIdsPage(PayableBalanceQueryParam param);
}
