package com.dxhy.erp.dao;

import java.util.List;

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

import com.alibaba.fastjson.JSONObject;
import com.dxhy.erp.entity.AmortizeData;
import com.dxhy.erp.entity.InAccountData;
import com.dxhy.erp.entity.PoolCollectPo;
import com.dxhy.erp.entity.PoolStatePo;
import com.dxhy.erp.entity.TdxRecordInvoice;
import com.dxhy.erp.model.InvoiceDetailInfo;
import com.dxhy.erp.model.State;
import com.dxhy.erp.model.VehicleSaleInvoices;

/**
 * @author dxhy
 */
@Mapper
public interface InvoicePoolDao {

    /**
     * 待填
     *
     * @param batchNo
     * @return
     */
    int countBatChno(@Param("batchNo") String batchNo);

    /**
     * 待填
     *
     * @param uuid
     * @return
     */
    JSONObject getRecordJson(@Param("uuid") String uuid);

    /**
     * 待填
     *
     * @param inAccountData
     * @return
     */
    int updateRecAccount(@Param("item") InAccountData inAccountData);

    /**
     * 待填
     *
     * @param accountReturnList
     * @param batchNo
     */
    void saveAccountBat(@Param("list") List<InAccountData> accountReturnList, @Param("batchNo") String batchNo);

    /**
     * 待填
     *
     * @param batchNo
     * @return
     */
    int countAmortizeBatChno(@Param("batchNo") String batchNo);

    /**
     * 待填
     *
     * @param amortizeData
     * @return
     */
    int updateRecAmortize(@Param("item") AmortizeData amortizeData);

    /**
     * 待填
     *
     * @param amortizeReturnList
     * @param batchNo
     */
    void saveAmortizeBat(@Param("list") List<AmortizeData> amortizeReturnList, @Param("batchNo") String batchNo);

    /**
     * 待填
     *
     * @param data
     * @return
     */
    Integer countBuyerInvoice(@Param("data") PoolCollectPo data);

    /**
     * 待填
     *
     * @param data
     * @param startRow
     * @param num
     * @return
     */
    List<TdxRecordInvoice> listBuyerInvoice(@Param("data") PoolCollectPo data, @Param("startRow") int startRow,
        @Param("num") int num);

    /**
     * 待填
     *
     * @param uuid
     * @return
     */
    List<VehicleSaleInvoices> selectVehicle(@Param("dataType") String dataType, @Param("uuid") String uuid);

    /**
     * 待填
     *
     * @param uuid
     * @return
     */
    List<InvoiceDetailInfo> listInvoiceDetail(@Param("dataType") String dataType, @Param("uuid") String uuid);

    /**
     * 待填
     *
     * @param data
     * @return
     */
    Integer countState(@Param("data") PoolStatePo data);

    /**
     * 待填
     *
     * @param data
     * @param startRow
     * @param num
     * @return
     */
    List<State> listInvoiceState(@Param("data") PoolStatePo data, @Param("startRow") int startRow,
        @Param("num") int num);

    /**
     * 待填
     *
     * @param s
     * @param documentNumber
     * @return
     */
    int countDocumentNo(@Param("uuid") String s, @Param("documentNumber") String documentNumber);
}
