package com.dxhy.core.job.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.api.model.db.TDxDkCountEntity;
import com.dxhy.core.job.entity.TAcOrg;
import com.dxhy.core.job.pojo.ApplyStatRecord;
import com.dxhy.core.job.pojo.ApplyStatResult;
import com.dxhy.core.job.pojo.StatResult;
import com.dxhy.core.job.pojo.TaxCurrent;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author user
 */

@Mapper
public interface ApplyStatDao  extends BaseMapper<TDxDkCountEntity> {
    /**
     * 获取申请数据
     *
     * @return 抵扣统计信息
     */
    List<TDxDkCountEntity> getApplyData();

    /**
     * 更新申请状态
     *
     * @param dkentity
     *            抵扣信息
     * @return void
     */
    void updateApplyStatus(TDxDkCountEntity dkentity);

    /**
     * 保存申请记录
     *
     * @param batchNo
     *            批次号
     * @param buyerTaxNo
     *            税号
     * @param statisticSymbol
     *            统计信息
     * @param skssq
     *            属期
     * @param interfaceType
     *            接口类型
     * @return void
     */
    void insertApplyRecord(@Param("batchNo") String batchNo, @Param("buyerTaxNo") String buyerTaxNo,
        @Param("statisticSymbol") String statisticSymbol, @Param("skssq") String skssq,
        @Param("interfaceType") String interfaceType);

    /**
     * 获取申请记录
     *
     * @return java.util.List<com.dxhy.core.job.pojo.ApplyStatRecord>
     */
    List<ApplyStatRecord> getApplyRecord();

    /**
     * 查询所有税号
     *
     * @return java.util.List<com.dxhy.core.job.entity.TDxDkCount>
     */
    List<TDxDkCountEntity> getAllOrg();

    /**
     * 更新失败状态
     *
     * @param result
     *            统计状态
     * @param skssq
     *            属期
     * @return void
     */
    void updateFailStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新成功状态
     *
     * @param result
     *            统计状态
     * @param skssq
     *            属期
     * @return void
     */
    void updateSuccessStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新统计信息
     *
     * @param result
     *            统计信息
     * @param skssq
     *            属期
     * @return void
     */
    void updateCountMsg(@Param("result") TDxDkCountEntity result, @Param("skssq") String skssq);

    /**
     * 更新确认信息
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateConfirmMsg(@Param("result") TDxDkCountEntity result, @Param("skssq") String skssq);

    /**
     * 更新撤销统计
     *
     * @param taxno
     * @param skssq
     * @return void
     */
    void updateCxCount(@Param("taxno") String taxno, @Param("skssq") String skssq);

    /**
     * 更新申请记录
     *
     * @param id
     * @return void
     */
    void updateApplyRecord(@Param("id") Long id);

    /**
     * 保存抵扣明细
     *
     * @param result
     * @param reslist
     * @return void
     */
    void insertDkDetail(@Param("result") ApplyStatResult result, @Param("reslist") List<StatResult> reslist);

    /**
     * 查询申请确认数据
     *
     * @param
     * @return java.util.List<com.dxhy.core.job.entity.TDxDkCount>
     */
    List<TDxDkCountEntity> getApplyConfirmData();

    /**
     * 更新申请确认状态
     *
     * @param dkentity
     * @return void
     */
    void updateApplyConfrimStatus(TDxDkCountEntity dkentity);

    /**
     * 查询申请确认记录
     *
     * @param
     * @return java.util.List<com.dxhy.core.job.pojo.ApplyStatRecord>
     */
    List<ApplyStatRecord> getApplyConfirmRecord();

    /**
     * 更新确认成功状态
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateConfirmSuccessStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新撤销统计成功
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateCxtjSuccess(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 删除明细
     *
     * @param result
     * @param skssq
     * @return void
     */
    void deleteDetail(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 根据属期删除明细
     *
     * @param result
     * @param skssq
     * @return void
     */
    void deleteDetailBySkssq(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新失败状态
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateRebackFailStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新确认失败状态
     *
     * @param result
     * @param skssq
     */
    void updateComfirmFailStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新撤销确认失败状态
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateCxComfirmFailStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新撤销确认成功状态
     *
     * @param result
     * @param skssq
     * @return void
     */
    void updateCxConfirmSuccessStatus(@Param("result") ApplyStatResult result, @Param("skssq") String skssq);

    /**
     * 更新密码
     *
     * @param current
     * @return void
     */
    void updatePwd(TaxCurrent current);

    /**
     * 更新业务密码
     *
     * @param org
     * @return void
     */
    void updateYwmm(TAcOrg org);

    /**
     * 重置密码
     *
     * @param current
     */
    void resetPwd(TaxCurrent current);

    /**
     * 重置业务密码
     *
     * @author 陈刚扬
     * @date 2020/10/30
     * @param org
     * @return void
     */
    void resetYwmm(TAcOrg org);
}
