package cn.stylefeng.team.project.modular.filing.service;

import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.team.project.modular.filing.entity.BusinessExcel;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.add.BusinessExcelAddRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.del.BusinessExcelBatchDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.del.BusinessExcelDelRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.edit.BusinessExcelEditRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.edit.BusinessExcelUpdateStatusRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.edit.ExcelContentUpdateRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.query.BusinessExcelDetailRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.query.BusinessExcelListRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.query.BusinessExcelPageRequest;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.response.BusinessExcelDetailResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.response.BusinessExcelListResponse;
import cn.stylefeng.team.project.modular.filing.pojo.businessExcel.response.BusinessExcelPageResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface BusinessExcelService extends IService<BusinessExcel> {

    Long add(BusinessExcelAddRequest businessExcelAddRequest);

    void del(BusinessExcelDelRequest businessExcelDelRequest);

    void batchDelete(BusinessExcelBatchDelRequest businessExcelBatchDelRequest);

    void edit(BusinessExcelEditRequest businessExcelEditRequest);

    BusinessExcelDetailResponse detail(BusinessExcelDetailRequest businessExcelDetailRequest);

    List<BusinessExcelListResponse> findList(BusinessExcelListRequest businessExcelListRequest);

    PageResult<BusinessExcelPageResponse> findPage(BusinessExcelPageRequest businessExcelPageRequest);

    BusinessExcelDetailResponse customDetail(BusinessExcelDetailRequest businessExcelDetailRequest);

    List<BusinessExcelListResponse> customList(BusinessExcelListRequest businessExcelListRequest);

    PageResult<BusinessExcelPageResponse> customPage(BusinessExcelPageRequest businessExcelPageRequest);

    void updateStatus(BusinessExcelUpdateStatusRequest businessExcelUpdateStatusRequest);

    void updateExcelContent(MultipartFile file, ExcelContentUpdateRequest excelContentUpdateRequest);

    Map<Long, Integer> statExcelNumber(Set<Long> businessIds);

    void cleanAndSaveExcel(Long businessId, Long excelFileId);

}