package cn.ezhizao.project.websocket.service;

import cn.ezhizao.project.websocket.domain.BizExportTask;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Service
public class AsyncTaskService {
    private final Map<String, BizExportTask> taskStore = new ConcurrentHashMap<>();
    @Async
    public void processTask(String taskId) {
//        BizExportTask task = createNewTask(taskId, request);
//
//        try (SXSSFWorkbook workbook = new SXSSFWorkbook(1000)) {
//            while (task.getCurrentPage() < task.getTotalPages()) {
//                // 检查任务状态
//                if (checkPausedOrCancelled(task)) break;
//
//                // 处理当前分页
//                List<Data> data = fetchData(task.getCurrentPage(), request);
//                writeToSheet(workbook, data);
//
//                // 更新进度
//                task.setCurrentPage(task.getCurrentPage() + 1);
//                updateProgress(taskId, calculateProgress(task));
//            }
//
//            // 处理最终状态
//            if (task.getStatus() == ExportTaskStatus.PAUSED) {
//                saveTempFile(workbook, task); // 保存临时文件
//            } else if (task.getStatus() == ExportTaskStatus.PROCESSING) {
//                completeTask(task, workbook);
//            }
//        }
    }

//    private boolean checkPausedOrCancelled(ExportTask task) {
//        synchronized (task.getTaskId().intern()) {
//            if (task.getStatus() == ExportTaskStatus.PAUSED) {
//                return true;
//            }
//            if (task.getStatus() == ExportTaskStatus.CANCELLED) {
//                cleanupTask(task);
//                return true;
//            }
//        }
//        return false;
//    }
}
