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

import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableBalanceQueryParam;
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.*;

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

public interface ReceivableStatisticsMapper {


	/**
	 * 查询应收明细数据
	 * @return
	 */
	List<ReceivableDetailDataVo> queryReceivableDetailData(ReceivableDetailDataQueryParam queryParam);


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



	List<ReceivableStatisticsPageVo> getReceivableStatisticsPageVoList(ReceivableStatisticsPageQueryParam queryParam);


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


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

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

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

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


	List<Long> getSettlementIdsPage(ReceivableBalanceQueryParam param);

	List<ReceivableBalanceDetail> getReceivableBalanceVOList(ReceivableBalanceQueryParam param);

	/**
	 * 应收余额 excel导出 应收账款数据查询
	 * @param param
	 * @return
	 */
	List<ReceivableStatisticsDetailDataByExcelVo> selectReceivableBalanceByCondition(ReceivableBalanceQueryParam param);
}
