package com.jkcredit.invoice.service.lowerservice;

import com.jkcredit.invoice.model.entity.customer.CustomerCarRec;
import com.jkcredit.invoice.model.entity.waybill.NoCarWayBill;
import com.jkcredit.invoice.model.vo.MigrateVo;
import com.jkcredit.invoice.service.lowerservice.vo.HcInvoiceQueryVo;
import com.jkcredit.invoice.service.lowerservice.vo.MonthAccountQueryVo;
import com.jkcredit.invoice.util.RespR;

import java.util.List;

/**
 * 无车接口
 * @author mumuxigua
 */
public interface NoCarService {
    /**
     * 车辆备案
     *
     * @param customerCarRec
     * @return
     */
    RespR customerCarRec(List<CustomerCarRec> customerCarRec);

    /**
     * 车辆备案查询查上游
     *
     * @param customerCarRec
     * @return
     */
    RespR customerCarRecQueryUpper(CustomerCarRec customerCarRec);


    /**
     * 无车车辆备案查询
     *
     * @param customerCarRec
     * @return
     */
    RespR customerCarRecQuery(CustomerCarRec customerCarRec);

    /**
     * 运单指令开始
     * @param noCarWayBill
     * @return
     */
    RespR noCarWaybillStart(NoCarWayBill noCarWayBill);

    /**
     * 运单指令结束
     * @param noCarWayBill
     * @return
     */
    RespR noCarWaybillEnd(NoCarWayBill noCarWayBill);

    /**
     * 历史运单指令开始
     * @param noCarWayBill
     * @return
     */
    RespR noCarHisWaybillStart(NoCarWayBill noCarWayBill);

    /**
     * 历史运单指令结束
     * @param noCarWayBill
     * @return
     */
    RespR noCarHisWaybillEnd(NoCarWayBill noCarWayBill);

    /**
     * 获取发票和运单状态 true 实时 false 走本地
     *
     * @param noCarWayBill
     * @param isInterface
     * @return
     */
    RespR getInvoiceByWayBillNumReal(NoCarWayBill noCarWayBill, boolean isInterface);

    /**
     * 红冲发票查询
     *
     * @param hcInvoiceQueryVo
     * @return
     */
    RespR hcinvoicequery(HcInvoiceQueryVo hcInvoiceQueryVo);

    /**
     * 红冲发票查询接口
     *
     * @param hcInvoiceQueryVo
     * @return
     */
    RespR hcinvoicequeryinter(HcInvoiceQueryVo hcInvoiceQueryVo);

    /**
     * 红冲发票更新
     *
     * @param hcInvoiceQueryVo
     * @return
     */
    RespR hcinvoiceupdate(HcInvoiceQueryVo hcInvoiceQueryVo);


    /**
     * 月账单查询
     *
     * @param monthAccountQueryVo
     * @return
     */
    RespR monthAccQuery(MonthAccountQueryVo monthAccountQueryVo);

    /**
     * 月账单查询更新
     *
     * @param monthAccountQueryVo
     * @return
     */
    RespR monthAccQueryUpdate(MonthAccountQueryVo monthAccountQueryVo);

    /**
     * 获取发票和运单状态 true 实时 false 走本地 自用，不对外
     *
     * @param noCarWayBill1
     * @param b
     * @return
     */
    RespR getInvoiceByWayBillOwnerNumReal(NoCarWayBill noCarWayBill1, boolean b);

    /**
     * 根据运单号更新运单信息
     *
     * @param noCarWayBill 运单
     */
    void updateByBillNumEnd(NoCarWayBill noCarWayBill);
    RespR migrateData(MigrateVo migrateVo);
}
