feat: 新增取消任务

This commit is contained in:
lifangliang 2025-08-29 16:31:24 +08:00
parent 41ad507f68
commit 478f8c4549
2 changed files with 53 additions and 0 deletions

View File

@ -123,6 +123,35 @@ public class PrintController implements PrintService {
return result;
}
/**
* 取消单个任务
*
* @param taskId 任务ID
* @return 取消结果
*/
@DeleteMapping("queue/task/{taskId}")
public Map<String, Object> cancelTask(@PathVariable String taskId) {
Map<String, Object> result = new HashMap<>();
try {
boolean cancelled = printQueueService.cancelTask(taskId);
if (cancelled) {
result.put("success", true);
result.put("message", "任务已取消");
result.put("taskId", taskId);
} else {
result.put("success", false);
result.put("message", "未找到指定任务");
result.put("taskId", taskId);
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "取消任务失败: " + e.getMessage());
result.put("taskId", taskId);
}
result.put("timestamp", System.currentTimeMillis());
return result;
}
/**
* 搜索打印任务
*

View File

@ -383,6 +383,30 @@ public class PrintQueueService {
return clearedCount;
}
/**
* 取消指定任务
* @param taskId 任务ID
* @return 是否成功取消
*/
public boolean cancelTask(String taskId) {
// 检查当前任务
if (currentTask != null && taskId.equals(currentTask.getId())) {
log.info("取消当前正在执行的任务: {}", taskId);
currentTask.setStatus("cancelled");
currentTask = null;
return true;
}
// 从队列中移除任务
boolean removed = printQueue.removeIf(task -> taskId.equals(task.getId()));
if (removed) {
log.info("成功从队列中取消任务: {}", taskId);
} else {
log.warn("未找到要取消的任务: {}", taskId);
}
return removed;
}
/**
* 获取历史服务实例
*