package com.jkcredit.invoice.service.lowerservice;

import cn.com.taiji.sdk.model.comm.protocol.tts.invoice.server.B2BInvoiceListModel;
import cn.com.taiji.sdk.model.comm.protocol.tts.invoice.server.B2BInvoiceQueryByApplyModel;
import cn.com.taiji.sdk.model.comm.protocol.tts.invoice.server.B2bInvoicePackageModel;
import cn.com.taiji.sdk.model.comm.protocol.tts.trade.service.CardTradeModel;
import com.jkcredit.invoice.model.entity.customer.CustomerCarRec;
import com.jkcredit.invoice.model.entity.customer.CustomerRec;
import com.jkcredit.invoice.model.vo.CardChangeQueryVo;
import com.jkcredit.invoice.model.vo.CardChangeVo;
import com.jkcredit.invoice.service.lowerservice.vo.*;
import com.jkcredit.invoice.util.RespR;

import java.util.List;

/**
 * 自有车掉上游接口服务
 * @author mumuxigua
 */
public interface SelfCarCustService {
    /**
     * 获取交易列表
     *
     * @param tradeRequestVo
     * @return
     */
    RespR<List<CardTradeModel>> getTradeList(TradeRequestVo tradeRequestVo);

    /**
     * 开票申请接口
     *
     * @param invoiceApplVo
     * @return
     */
    RespR<String> applInvoice(InvoiceApplVo invoiceApplVo);

    /**
     *  按申请id取发票
     * @param applQueryInvVo
     * @return
     */
    RespR<List<B2BInvoiceQueryByApplyModel>> getSelfCarInvoicesByApplyIds(ApplQueryInvVo applQueryInvVo);

    /**
     *  按申请id取发票
     * @param applQueryInvVo
     * @return
     */
    void getSelfCarInvoicesByApplyIdsDb(ApplQueryInvVo applQueryInvVo);
    /**
     * 已开发票查询接口
     * @param selfCarDueQueryVo
     * @param customerRec
     * @return
     */
    RespR<List<B2BInvoiceListModel>> getSelfCarInvoicesByTime(SelfCarDueQueryVo selfCarDueQueryVo, CustomerRec customerRec);

    /**
     * 发票打包下载
     * @param invoicePackageVo
     * @return
     */
    RespR<List<B2bInvoicePackageModel>> getInvoicePackge(InvoicePackageVo invoicePackageVo);

    /**
     * 根据车牌获取ETC卡信息
     *
     * @param etcQueryVo
     * @return
     */
    RespR getEtcInfo(EtcQueryVo etcQueryVo);

    /**
     * etc备案查询
     *
     * @param etcBindVo
     * @return
     */
    RespR queryEtcInfo(EtcBindVo etcBindVo);

    /**
     *  ETC备案
     * @param etcBindVo
     * @return
     */
    RespR customerEtcRec(EtcBindVo etcBindVo);


    /**
     *  ETC校验
     * @param etcValidVo
     * @return
     */
    RespR customerEtcRecValid(EtcValidVo etcValidVo);

    /**
     * 车辆解绑
     * @param customerCarRec
     * @return
     */
    RespR customerCarUnRec(List<CustomerCarRec> customerCarRec);


    /**
     * 自有车 卡换绑绑接口
     * @param cardChangeVo
     * @return
     */
    RespR customerCardChange(CardChangeVo cardChangeVo);


    /**
     * 自有车 卡换绑绑查询接口。
     * @param cardChangeQueryVo
     * @return
     */
    RespR customerCardChangeQuery(CardChangeQueryVo cardChangeQueryVo);


    /**
     *  5.6按交易查申请 接口使用
     * @param tradeApplyQueryInvVo
     * @return
     */
    RespR getApplyQueryByTradeId(TradeApplyQueryInvVo tradeApplyQueryInvVo);

    /**
     * 5.6按交易查申请 平台使用
     * @param tradeApplyQueryInvVos
     * @return
     */
    RespR getApplyQueryByTradeIds(List<TradeApplyQueryInvVo> tradeApplyQueryInvVos);
}