package com.jianshui.income.service;


import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.income.domain.IncomeInvoiceAuthStatus;
import com.jianshui.income.domain.dto.*;
import com.jianshui.income.domain.entity.IncomeInvoiceAuth;
import com.jianshui.income.domain.entity.IncomeInvoiceAuthStatistics;

import javax.validation.Valid;
import java.util.List;

/**
 * 发票认证抽象类
 */
public interface IAuthInvoice {

    /**
     * 状态采集
     * @author xkng
     * @date 2022/9/14 19:54
     * @param statusCollectionDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
     AjaxResult statusAcquisition(IncomeStatusCollectionDTO statusCollectionDTO, Companyservice companyservice,List<IncomeInvoiceAuth> allIncomeInvoiceList, List<IncomeInvoiceAuthStatus> allIncomeInvoiceTwoStatusList) throws Exception;


    /**
      * 申请认证
      * @author xkng
      * @date 2022/9/17 11:30
      * @param incomeApplyLegalizePrimaryDTO
      * @param companyservice
      * @return com.jianshui.common.core.domain.AjaxResult
      */
    AjaxResult applyLegalize(IncomeApplyLegalizePrimaryDTO incomeApplyLegalizePrimaryDTO, Companyservice companyservice) throws Exception;


    /**
     * 发票认证结果查询
     * @author xkng
     * @date 2022/9/17 11:49
     * @param incomeApplyLegalizeResultDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult applyLegalizeResult(IncomeApplyLegalizeResultDTO incomeApplyLegalizeResultDTO, Companyservice companyservice) throws Exception;


    /**
     * 申请确认
     * @author xkng
     * @date 2022/9/17 12:03
     * @param incomeApplyConfirmDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult applyConfirm(IncomeApplyConfirmDTO incomeApplyConfirmDTO, Companyservice companyservice) throws Exception;

    /**
     * 获取确认结果
     * @author xkng
     * @date 2022/9/17 12:17
     * @param incomeApplyConfirmDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult applyConfirmResult(IncomeApplyConfirmResultDTO incomeApplyConfirmDTO, Companyservice companyservice) throws Exception;

    /**
     * 获取企业档案
     * @author xkng
     * @date 2022/9/17 12:22
     * @param incomeGetCompanyInfoDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult getCompanyInfo(IncomeGetCompanyInfoDTO incomeGetCompanyInfoDTO, Companyservice companyservice) throws Exception;

    /**
     * 重置密码
     * @author xkng
     * @date 2022/9/17 12:26
     * @param incomeResetPasswordDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult resetPassword(IncomeResetPasswordDTO incomeResetPasswordDTO, Companyservice companyservice) throws Exception;

    /**
     * 设置密码
     * @author xkng
     * @date 2022/9/17 12:32
     * @param incomeSetPasswordDTO
     * @param companyservice
     * @return com.jianshui.common.core.domain.AjaxResult
     */
    AjaxResult setPassword(IncomeSetPasswordDTO incomeSetPasswordDTO, Companyservice companyservice) throws Exception;







    //=========================发票采集-ql====================================================/
    // TODO: 2022/9/22



    /**
     * 全票面采集
     *
     * @param incomeGetInvoiceDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult getInvoice(IncomeGetInvoiceDTO incomeGetInvoiceDTO, Companyservice companyservice) throws Exception;

    /**
     * 主信息采集
     *
     * @param incomeMasterInformationDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult masterInformation(@Valid IncomeMasterInformationDTO incomeMasterInformationDTO, Companyservice companyservice) throws Exception;

    /**
     * 获取统计信息
     *
     * @param incomeCountInfoDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult getCountInfo(IncomeCountInfoDTO incomeCountInfoDTO, Companyservice companyservice) throws Exception;

    /**
     * 申请统计
     *
     * @param incomeCountInfoDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult applyCount(IncomeApplyCountDTO incomeCountInfoDTO, Companyservice companyservice) throws Exception;

    /**
     * 获取统计结果
     *
     * @param incomeCountInfoDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult applyCountResult(IncomeApplyCountResultDTO incomeCountInfoDTO, Companyservice companyservice) throws Exception;

    /**
     * 状态采集
     *
     * @param incomeStatusAcquisitionDTO
     * @param companyservice
     * @return
     * @throws Exception
     */
    public AjaxResult statusAcquisition(@Valid IncomeStatusAcquisitionDTO incomeStatusAcquisitionDTO, Companyservice companyservice) throws Exception;













}
