package com.dxhy.extend.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.dxhy.extend.entity.*;

/**
 * @author Bobby
 * @date 2018/4/16 首页-数据层
 */
@Mapper
public interface ExtIndexStatisticsMapper {

    /**
     * 税号
     *
     * @param orgs
     *            税号
     * @return 返回
     */
    Integer getOrgType(@Param("orgs") List<String> orgs);

    /**
     * 今日发票采集情况
     *
     * @param params
     *            {startDate:当天凌晨时间，endDate:当前时间}
     * @return list集合
     */
    Map<String, BigDecimal> getInvoiceCollectionSituationMap(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日缴款书采集情况
     *
     * @param params
     *            {startDate:当天凌晨时间，endDate:当前时间}
     * @return list集合
     */
    Map<String, BigDecimal> getCustomsCollectionSituationMap(@Param("paramsData") Map<String, Object> params);

    /*
      今日发票采集情况

      @param schemaLabel
     *            mycat逻辑数据库名字
     * @param params
     *            {startDate:当天凌晨时间，endDate:当前时间}
     * @return list集合
     *//*
                   *
                   * List<ExtIndexInvoiceCollectionCountModel>
                   * getInvoiceCollectionSituation(@Param("schemaLabel") String schemaLabel,
                   *
                   * @Param("paramsData") Map<String, Object> params);
                   */

    /**
     * 今日发票采集列表
     *
     * @param params
     *            {startDate:当天凌晨时间，endDate:当前时间，invoiceType:发票类型}
     * @return 结果集合
     */

    List<ExtIndexInvoiceCollectionModel>
        getInvoiceCollectionSituationList(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日缴款书采集列表
     *
     * @param params
     *            {startDate:当天凌晨时间，endDate:当前时间，invoiceType:发票类型}
     * @return 结果集合
     */

    List<ExtIndexCustomsCollectionModel>
        getCustomsCollectionSituationList(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日发票扫描情况
     *
     * @param params{start:当天0点时间，end:当前时间}
     * @return 结果集合
     */

    List<ExtIndexInvoiceScanningCountModel>
        getInvoiceScanningSituation(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日缴款书扫描情况
     *
     * @param params{start:当天0点时间，end:当前时间}
     * @return 结果集合
     */
    List<ExtIndexInvoiceScanningCountModel>
        getCustomsScanningSituation(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日发票扫描列表
     *
     * @param params{start:当天0点时间，end:当前时间}
     * @return 结果集合
     */

    List<ExtIndexInvoiceScanningModel> getInvoiceScanningSituationList(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日发票认证情况
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    List<ExtIndexInvoiceAuthenticationCountModel>
        getInvoiceAuthenticationSituation(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日退税认证情况
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    List<ExtIndexInvoiceAuthenticationCountModel>
        getDrawbackAuthenticationSituation(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日发票认证列表
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    List<ExtIndexInvoiceCollectionModel>
        getInvoiceAuthenticationSituationList(@Param("paramsData") Map<String, Object> params);

    /**
     * 今日发票认证列表
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    List<ExtIndexInvoiceCollectionModel> getRzhycList(@Param("paramsData") Map<String, Object> params);

    /**
     * 签收
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    List<ExtIndexInvoiceCollectionModel> getQshycList(@Param("paramsData") Map<String, Object> params);

    /**
     * 本月新增发票信息（新增、认证、发票金额（未税）、发票税额）
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    ExtIndexInvoiceMonthInformationModel
        getInvoiceInformationOfMonthCj(@Param("paramsData") Map<String, Object> params);

    /**
     * 本月新增发票信息（新增、认证、发票金额（未税）、发票税额）
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    ExtIndexInvoiceMonthInformationModel
        getInvoiceInformationOfMonthRz(@Param("paramsData") Map<String, Object> params);

    /**
     * 本月退税
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceMonthInformationModel
        getDrawbackInformationOfMonthRz(@Param("paramsData") Map<String, Object> params);

    /**
     * 本月发票新增、认证成功、认证失败图表
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    List<ExtIndexInvoiceChartStatisticsModel>
        getInvoiceChartStatistics(@Param("paramsData") Map<String, Object> params);

    /**
     * 任务提醒
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceTaskRemindingModel getInvoiceTaskRemindingYq(@Param("paramsData") Map<String, Object> params);

    /**
     * 异常
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceTaskRemindingModel getInvoiceTaskRemindingYc(@Param("paramsData") Map<String, Object> params);

    /**
     * 普票跨年度
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceTaskRemindingModel getInvoiceTaskRemindingPpknd(@Param("paramsData") Map<String, Object> params);

    /**
     * 认证异常
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceTaskRemindingModel getInvoiceTaskRemindingRzyc(@Param("paramsData") Map<String, Object> params);

    /**
     * 签收异常
     *
     * @param params
     *            查询条件
     * @return 返回
     */
    ExtIndexInvoiceTaskRemindingModel getInvoiceTaskRemindingQsyc(@Param("paramsData") Map<String, Object> params);

    /**
     * 本年发票新增、认证成功、认证失败图表
     *
     * @param params
     *            查询条件
     * @return 返回
     */

    List<ExtIndexInvoiceChartStatisticsModel>
        getInvoiceChartStatisticsYear(@Param("paramsData") Map<String, Object> params);

    /**
     * 本月已认证发票列表
     *
     * @param params
     *            参数
     * @return 发票集合
     */
    List<ExtIndexInvoiceCollectionModel> getCurrentMonthAuthList(@Param("paramsData") Map<String, Object> params);

}
