package com.dxhy.core.job.service;

import com.dxhy.api.model.config.CollectionControlModel;
import com.dxhy.api.model.invoice.TDxHttpLog;
import com.dxhy.api.model.invoice.TDxRecordInvoice;
import com.dxhy.core.job.entity.TAcOrg;
import com.dxhy.core.job.entity.TDxSaleRecordInvoiceJobEntity;

import java.util.List;

/**
 * @author user
 */

public interface InvoiceInterfaceService {
    /**
     * 发送请求
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param type
     * @param taxno
     * @param linkName
     * @param aceId
     * @param aceKey
     * @param company
     * @return void
     */
    void sendRequest(String type, String taxno, String linkName, String aceId, String aceKey, String company);

    /**
     * 发送统计请求
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param taxno
     * @param db
     * @param aceId
     * @param aceKey
     * @return void
     */
    void sendStateRequest(String taxno, String db, String aceId, String aceKey);

    /**
     * 发送勾选采集请求
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param string
     * @param db
     * @param aceId
     * @param aceKey
     * @return void
     */
    void sendSelectRequest(String string, String db, String aceId, String aceKey);

    /**
     * 获取税号
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param
     * @return java.util.List<com.dxhy.core.job.entity.TAcOrg>
     */
    List<TAcOrg> getOrgTaxno();

    /**
     * 查询未解析log
     * 
     * @param taxno
     *            税号
     * @param type
     *            类型
     * @return 返回
     */
    List<TDxHttpLog> getNotParseHttpLogs(String taxno, String type);

    /**
     * 查询税号信息
     *
     * @param type
     *            类型
     * @return 税号
     */
    List<String> getNotParseTaxnos(String type);

    /**
     * 更新状态
     *
     * @param logs
     *            日志信息
     */
    void updateNotParseHttpLogsStatus(List<TDxHttpLog> logs);

    /**
     * 发票解析
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param db
     * @param taxno
     * @return void
     */
    void subscribe(String taxno, String db);

    /**
     * 功能描述
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param
     * @return java.util.List<com.dxhy.core.job.entity.TAcOrg>
     */
    List<TAcOrg> getTaxnoForQpm();

    /**
     * 判断发票是否存在
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param invoiceInfo
     * @param db
     * @param sourceSystem
     * @return boolean
     */
    boolean isExistInvoice(TDxRecordInvoice invoiceInfo, String db, String sourceSystem);

    /**
     * 判断发票是否存在
     * 
     * @param invoice
     * @param db
     * @param sourceSystem
     * @return boolean
     */
    boolean isExistSaleInvoice(TDxSaleRecordInvoiceJobEntity invoice, String db, String sourceSystem);

    List<TAcOrg> getTaxnoForDown();

    /**
     * @description 数电票源文件获取--武汉不支持
     * @author  Allen
     * @date    2023/8/15 17:30
     * @param
     * @param jxxxType
     * @return
    */
    void getSdpYwj(String taxno, String linkName, String aceId, String aceKey, String company, String jxxxType);

    /**
     * @description  增值税发票采集
     * @author  Allen
     * @date    2023/8/17 16:12
     * @param
     * @return
    */
    void zzsfpcj(CollectionControlModel ccm, String type);

    /**
     * @description  增值税发票采集结果解析
     * @author  Allen
     * @date    2023/8/17 16:12
     * @param
     * @return
     */
    void zzsfpcjjggj(String type, String taxno, String linkName, String aceId, String aceKey, String company);


    /**
    * @Description 数电票源文件获取--全地区支持
    * @param taxno
    * @param linkName
    * @param aceId
    * @param aceKey
    * @param company
    * @param jxxxType
    * @Return void
    * @Author wangruwei
    * @Date 2024/8/6 9:39
    **/
    void getSdpYwjNew(String taxno, String linkName, String aceId, String aceKey, String company, String jxxxType);
}
