package com.dxhy.core.job.dao;

import java.util.Date;
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.TDxCustomsApplyRecord;
import com.dxhy.api.model.custom.TdxCustomsRecord;
import com.dxhy.api.model.custom.TDxExportCustoms;
import com.dxhy.core.job.pojo.LegalizeResult;

/**
 * @author user
 */
@SuppressWarnings("AlibabaClassNamingShouldBeCamel")
@Mapper
public interface TDxExportCustomsJobDao extends BaseMapper<TDxExportCustoms> {
    /**
     * 功能描述
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param taxno
     * @return java.lang.String
     */
    String selectLastExportCustomsDate(@Param("taxno") String taxno);

    /**
     * 根据出口转内销编号查询
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param exportNo
     * @param customsCode
     * @param gfTaxNo
     * @return com.dxhy.api.model.custom.TDxExportCustoms
     */
    TDxExportCustoms getCustomsByExportNo(@Param("exportNo") String exportNo,
        @Param("customsCode") String customsCode, @Param("gfTaxNo") String gfTaxNo);

    /**
     * 根据缴款书号码查询缴款书
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param customsCode
     * @return com.dxhy.api.model.custom.TdxCustomsRecord
     */
    TdxCustomsRecord getCustomsByCode(@Param("customsCode") String customsCode);

    /**
     * 更新出口转内销
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param entity
     * @return void
     */
    void updateExportCustoms(TDxExportCustoms entity);

    /**
     * 更新出口转内销状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param entity
     * @return void
     */
    void updateExportMark(TdxCustomsRecord entity);

    /**
     * 查询需要发送税号
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param
     * @return java.util.List<java.lang.String>
     */
    List<String> getNeedSendTaxNo();

    /**
     * 查询需要发送数量
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param taxno
     * @return int
     */
    int getApplyCustomsCount(@Param("taxno") String taxno);

    /**
     * 查询批次号
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param type
     * @return java.util.List<com.dxhy.core.job.entity.TDxCustomsApplyRecord>
     */
    List<TDxCustomsApplyRecord> getBatchNo(@Param("type") String type);

    /**
     * 申请信息
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param taxno
     * @return java.util.List<com.dxhy.api.model.custom.TDxExportCustoms>
     */
    List<TDxExportCustoms> getApplyExport(@Param("taxno") String taxno);

    /**
     * 出口转内销认证更新
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param exportNo
     * @param rzlx
     * @param customsCode
     * @param gfTaxNo
     * @return void
     */
    void updateExportApply(@Param("exportNo") String exportNo, @Param("rzlx") String rzlx,
        @Param("customsCode") String customsCode, @Param("gfTaxNo") String gfTaxNo);

    /**
     * 更新认证状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param result
     * @param rzhDate
     * @param gfTaxNo
     * @return void
     */
    void updateRecord(@Param("result") LegalizeResult result, @Param("rzhDate") Date rzhDate,
        @Param("gfTaxNo") String gfTaxNo);

    /**
     * 更新申请状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param exportNo
     * @param customsCode
     * @param gfTaxNo
     * @return void
     */
    void updateApply(@Param("exportNo") String exportNo, @Param("customsCode") String customsCode,
        @Param("gfTaxNo") String gfTaxNo);

    /**
     * 更新撤销不抵扣状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param result
     * @param rzhDate
     * @param gfTaxNo
     * @return void
     */
    void updateRecordForRebackNoDeduction(@Param("result") LegalizeResult result, @Param("rzhDate") Date rzhDate,
        @Param("gfTaxNo") String gfTaxNo);

    /**
     * 更新不抵扣状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param result
     * @param rzhDate
     * @param gfTaxNo
     * @return void
     */
    void updateRecordForNoDeduction(@Param("result") LegalizeResult result, @Param("rzhDate") Date rzhDate,
        @Param("gfTaxNo") String gfTaxNo);

    /**
     * 更新撤销认证状态
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param result
     * @param rzhDate
     * @param gfTaxNo
     * @return void
     */
    void updateRecordForRebackRz(@Param("result") LegalizeResult result, @Param("rzhDate") Date rzhDate,
        @Param("gfTaxNo") String gfTaxNo);
}
