package org.dromara.payment.taxRecords.service;

import org.dromara.payment.bill.domain.vo.MerBillDetailVo;
import org.dromara.payment.bill.domain.vo.MerBillVo;
import org.dromara.payment.common.domain.CommonSelConditionEntity;
import org.dromara.payment.taxRecords.domain.MerTaxRecords;
import org.dromara.payment.taxRecords.domain.vo.MerTaxRecordsVo;
import org.dromara.payment.taxRecords.domain.bo.MerTaxRecordsBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 完税证明Service接口
 *
 * @author LionLi
 * @date 2024-05-06
 */
public interface IMerTaxRecordsService {

    /**
     * 查询完税证明
     */
    MerTaxRecordsVo queryById(Long id);

    /**
     * 查询完税证明列表
     */
    TableDataInfo<MerTaxRecordsVo> queryPageList(CommonSelConditionEntity bo, PageQuery pageQuery);

    /**
     * 查询完税证明列表
     */
    List<MerTaxRecordsVo> queryList(MerTaxRecordsBo bo);

    /**
     * 新增完税证明
     */
    Boolean insertByBo(MerTaxRecordsBo bo);

    /**
     * 修改完税证明
     */
    Boolean updateByBo(MerTaxRecordsBo bo);

    /**
     * 校验并批量删除完税证明信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);


    /***
     * 下载用户身份证信息
     * @param trId
     * @return
     */
    Map downLoadUserworkSfz(Long trId) throws Exception;

    /***
     * 下载合同信息
     * @param trId
     * @return
     */
    Map downLoadUserworkHt(Long trId) throws Exception;

    /***
     * 下载支付凭证信息
     * @param trId
     * @return
     */
    Map downLoadUserworkPayCer(Long trId) throws Exception;


    /***
     * 根据账单编码获取账单详情
     * @param billNo
     * @return
     */
    MerBillVo getMerBillInfo(String billNo);


    /****
     * 根据账单编码获取账单明细
     * @param billNo
     * @param pageQuery
     * @return
     */
    TableDataInfo<MerBillDetailVo> getMerBillDetailList(String billNo, PageQuery pageQuery);

    /***
     * 根据开票流水获取开票详情
     * @param invNo
     * @param pageQuery
     * @return
     */
    TableDataInfo getInvDetailList(String invNo, PageQuery pageQuery);


    /***
     * 根据开票流水号获取开票详情
     * @param invNo
     * @return
     */
    String getInvInfo(String invNo);
}
