package com.dxhy.core.job.dao;

import java.util.List;

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

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.core.job.entity.TAcOrg;
import com.dxhy.core.job.entity.TDxHttpLogDataPlatform;
import com.dxhy.core.job.pojo.DataPlatformInvoiceDetailInfo;
import com.dxhy.core.job.pojo.DataPlatformInvoiceInfo;

/**
 * @author user
 */

@Mapper
public interface DataPlatformDao extends BaseMapper<TDxHttpLogDataPlatform> {
    /**
     * 查询税号
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @return
     */
    List<TAcOrg> getTaxno();

    /**
     * 查询最后采集时间
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param linkName
     * @param taxno
     * @param type
     * @return
     */
    String selectLastInvoiceDate(@Param("taxno") String taxno, @Param("reqType") String linkName,
        @Param("type") String type);

    /**
     * 查询未解析log
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param s
     * @return java.util.List<com.dxhy.core.job.entity.TDxHttpLogDataPlatform>
     */
    List<TDxHttpLogDataPlatform> getNotParseHttpLogs(String s);

    /**
     * 更新httplog状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param tDxHttpLog
     * @return void
     */
    void updateHttpLogById(TDxHttpLogDataPlatform tDxHttpLog);

    /**
     * 删除明细
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param s
     * @return
     */
    void delDetailIncome(@Param("uuid") String s);

    /**
     * 删除明细
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param s
     * @return
     */
    void delDetailSales(@Param("uuid") String s);

    /**
     * 明细入库
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoiceDetailInfo
     * @return void
     */
    void insertDetailIncome(@Param("entity") DataPlatformInvoiceDetailInfo invoiceDetailInfo);

    /**
     * 明细入库
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoiceDetailInfo
     * @return void
     */
    void insertDetailSales(@Param("entity") DataPlatformInvoiceDetailInfo invoiceDetailInfo);

    /**
     * 统计明细数量
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param s
     * @return int
     */
    int getDetailCount(@Param("uuid") String s);

    /**
     * 更新抵账信息 --进项
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoice
     * @return void
     */
    void updateRecordInvoice(DataPlatformInvoiceInfo invoice);

    /**
     * 更新抵账信息 --销项
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoice
     * @return void
     */
    void updateSaleRecordInvoice(DataPlatformInvoiceInfo invoice);

    /**
     * 更新状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoice
     * @return void
     */
    void updateState(@Param("entity") DataPlatformInvoiceInfo invoice);

    /**
     * 失败日志入库
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param dataPlatformInvoiceInfo
     * @param message
     * @return void
     */
    void insertFailLog(@Param("entity") DataPlatformInvoiceInfo dataPlatformInvoiceInfo,
        @Param("message") String message);

    /**
     * 根据税号查询机构
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param taxno
     *            税号
     * @return com.dxhy.core.job.entity.TAcOrg
     */
    TAcOrg getDeptByTaxno(@Param("taxno") String taxno);

    /**
     * 获取税号信息
     * 
     * @return 返回
     */
    List<String> getNeedParseTaxno();

    /**
     * 更新日志信息
     * 
     * @param taxno
     *            税号
     * @return 返回
     */
    List<TDxHttpLogDataPlatform> getHttpLogsByTaxno(String taxno);

    /**
     * 获取第一次采集日期
     * 
     * @param taxno
     *            税号信息
     * @return 返回
     */
    String getFirstCollectDate(String taxno);

    /**
     * 获取开票日期
     * 
     * @param taxno
     *            税号
     * @param type
     *            类型
     * @return 返回
     */
    String selectLastInvoiceDateState(@Param("taxno") String taxno, @Param("reqType") String type);

    /**
     * 更新状态
     * 
     * @param info
     *            信息
     */
    void updateSaleState(@Param("entity") DataPlatformInvoiceInfo info);
}
