diff --git a/src/main/java/com/goeing/printserver/main/PrintController.java b/src/main/java/com/goeing/printserver/main/PrintController.java index 977b0f7..3c20085 100644 --- a/src/main/java/com/goeing/printserver/main/PrintController.java +++ b/src/main/java/com/goeing/printserver/main/PrintController.java @@ -123,6 +123,35 @@ public class PrintController implements PrintService { return result; } + /** + * 取消单个任务 + * + * @param taskId 任务ID + * @return 取消结果 + */ + @DeleteMapping("queue/task/{taskId}") + public Map cancelTask(@PathVariable String taskId) { + Map 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; + } + /** * 搜索打印任务 * diff --git a/src/main/java/com/goeing/printserver/main/service/PrintQueueService.java b/src/main/java/com/goeing/printserver/main/service/PrintQueueService.java index 69cfdfe..f15cd17 100644 --- a/src/main/java/com/goeing/printserver/main/service/PrintQueueService.java +++ b/src/main/java/com/goeing/printserver/main/service/PrintQueueService.java @@ -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; + } + /** * 获取历史服务实例 *