package org.springblade.file.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.file.pojo.dto.BusinessUnzipTaskAddDTO;
import org.springblade.file.pojo.dto.BusinessUnzipTaskQueryDTO;
import org.springblade.file.pojo.dto.BusinessUnzipTaskUpdateDTO;
import org.springblade.file.pojo.entity.BusinessUnzipTask;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.file.pojo.vo.BusinessUnzipDetailListVO;
import org.springblade.file.pojo.vo.BusinessUnzipTaskListVO;
import org.springblade.file.pojo.vo.FileVO;

import java.util.List;

/**
 * <p>
 * 业务解压任务表 服务类
 * </p>
 *
 * @author bfhuange
 * @since 2024-10-28
 */
public interface IBusinessUnzipTaskService extends IService<BusinessUnzipTask> {

    /**
     *  保存业务解压任务
     * @param param
     * @return
     */
    boolean save(BusinessUnzipTaskAddDTO param);

    /**
     *  获取obs对象存储的key
     * @param task
     * @return
     */
    String getObjectKey(BusinessUnzipTask task);

    /**
     *  获取文件对象
     * @param task
     * @return
     */
    FileVO getFile(BusinessUnzipTask task);

    /**
     *  业务解压任务分页查询
     * @param page
     * @param param
     * @return
     */
    IPage<BusinessUnzipTaskListVO> selectPage(IPage<BusinessUnzipTask> page, BusinessUnzipTaskQueryDTO param);

    /**
     *  业务文件解压任务更新（重新上传）
     * @param param
     * @return
     */
    boolean updateReupload(BusinessUnzipTaskUpdateDTO param);

    /**
     *  根据业务id删除业务文件解压任务
     * @param bizId
     * @param cancelFile 是否取消文件，如果取消，上传完成后取消会报错
     * @return
     */
    boolean cancelBusinessUnzipTask(Long bizId, boolean cancelFile);

    /**
     *  根据业务id查询解压明细
     * @param bizId
     * @return
     */
    List<BusinessUnzipDetailListVO> queryBusinessUnzipDetail(Long bizId);

    /**
     *  根据业务id列表查询解压任务列表
     * @param bizIds
     * @return
     */
    List<BusinessUnzipTaskListVO> getBusinessUnzipTasksByBizIds(List<Long> bizIds);
}
