package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.SysExportTask;

/**
 * 导出任务Service接口
 */
public interface ISysExportTaskService
{
    /**
     * 创建导出任务
     * 
     * @param task 导出任务对象
     * @return 任务ID
     */
    public Long createExportTask(SysExportTask task);

    /**
     * 更新导出任务
     * 
     * @param task 导出任务对象
     * @return 结果
     */
    public int updateExportTask(SysExportTask task);

    /**
     * 根据ID查询导出任务
     * 
     * @param taskId 任务ID
     * @return 导出任务对象
     */
    public SysExportTask selectExportTaskById(Long taskId);

    /**
     * 查询导出任务列表
     * 
     * @param task 导出任务对象
     * @return 导出任务集合
     */
    public List<SysExportTask> selectExportTaskList(SysExportTask task);

    /**
     * 删除导出任务
     * 
     * @param taskId 任务ID
     * @return 结果
     */
    public int deleteExportTaskById(Long taskId);

    /**
     * 批量删除导出任务
     * 
     * @param taskIds 任务ID数组
     * @return 结果
     */
    public int deleteExportTaskByIds(Long[] taskIds);

    /**
     * 更新任务进度
     * 
     * @param taskId 任务ID
     * @param processedCount 已处理数量
     * @param totalCount 总数量
     */
    public void updateProgress(Long taskId, int processedCount, int totalCount);

    /**
     * 标记任务成功
     * 
     * @param taskId 任务ID
     * @param filePath 文件路径
     * @param fileName 文件名
     * @param fileSize 文件大小
     */
    public void markSuccess(Long taskId, String filePath, String fileName, Long fileSize);

    /**
     * 标记任务失败
     * 
     * @param taskId 任务ID
     * @param errorMsg 错误信息
     */
    public void markFailed(Long taskId, String errorMsg);

    /**
     * 查询过期的导出任务
     * 
     * @param expireDays 过期天数
     * @return 导出任务集合
     */
    public List<SysExportTask> selectExpiredExportTasks(int expireDays);
}
