package com.ruoyi.hywz.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.hywz.entity.AdsMatHyxtStampTaxInvoiceD;
import com.ruoyi.hywz.entity.po.HomeStampTaxCountPO;
import com.ruoyi.hywz.entity.po.IdsPO;
import com.ruoyi.hywz.entity.po.StampTaxBatchUpdateBusinessTypePO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 发票信息表 服务类
 * </p>
 *
 * @author mybatisplus-generator
 * @date 2024-07-14 10:07:56
 */
public interface IAdsMatHyxtStampTaxInvoiceDService extends IService<AdsMatHyxtStampTaxInvoiceD> {

    List<AdsMatHyxtStampTaxInvoiceD> getList(String startDate, String endDate, String orgNo);

    /**
     * 分页查询
     */
    Page<AdsMatHyxtStampTaxInvoiceD> queryPage(@RequestParam(defaultValue = "10") Long pageSize,
                                               @RequestParam(defaultValue = "1") Long pageNo,
                                               @RequestBody(required = false) AdsMatHyxtStampTaxInvoiceD param);

    /**
     * 列表查询
     */
    R queryList(AdsMatHyxtStampTaxInvoiceD param);

    /**
     * 下载模板
     */
    void downloadTemplate(HttpServletResponse response);

    /**
     * 数据导出
     */
    void exportData(String warningType, HttpServletResponse response) throws IOException;

    /**
     * 逻辑删除
     */
    R delete(IdsPO param);

    /**
     * 逻辑删除
     */
    R deleteOne(IdsPO param);

    /**
     * 批量删除
     */
    R batchDelete(IdsPO param);

    /**
     * 发票导入
     */
    R invoiceImport(MultipartFile file, HomeStampTaxCountPO param) throws IOException;

    /**
     * 更新是否预警
     */
    void updateIsWarning(String id, Integer isWarning, String warningRemark);

    /**
     * 批量更新是否预警
     */
    void batchUpdateIsWarning(Integer isWarning);

    /**
     * 更新
     */
    R updateBusinessType(AdsMatHyxtStampTaxInvoiceD invoiceD);

    /**
     * 批量更新业务类型
     */
    R batchUpdateBusinessType(StampTaxBatchUpdateBusinessTypePO param);

    List<AdsMatHyxtStampTaxInvoiceD> getByBusinessCode(String businessTypeCode, List<AdsMatHyxtStampTaxInvoiceD> list);

    int countNum(String orgNo, String date);

    int countWarningNum(String orgNo, String date);

}
