diff --git a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/controller/admin/autoTools/AutoToolsController.java b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/controller/admin/autoTools/AutoToolsController.java index 2e5c84cd..dae72a38 100644 --- a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/controller/admin/autoTools/AutoToolsController.java +++ b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/controller/admin/autoTools/AutoToolsController.java @@ -402,6 +402,8 @@ public class AutoToolsController { stringRedisTemplate.opsForValue().set(key, JsonUtils.toJsonString(info)); monitorMapper.updateById(info); } + // 删除对应任务 + taskManager.stopTaskByUserId(userId); return CommonResult.success(true); } @@ -412,13 +414,9 @@ public class AutoToolsController { * @return true */ @GetMapping("/stopExamForAdmin") - public CommonResult stopExamForAdmin(@RequestParam("userId") String userId, @RequestParam("taskId") String taskId, @RequestParam("paperNum") String paperNum) { - String paperId = educationPaperService.selectPaperByPaperNum(paperNum); - // 将userId 拼接 taskId 作为key - // 防止不同试卷ID冲突 - userId += "_" + taskId + "_" + paperId; + public CommonResult stopExamForAdmin(@RequestParam("userId") String userId) { // 删除对应的线程池 - taskManager.stopTask(userId); + taskManager.stopTaskByUserId(userId); return CommonResult.success(true); } diff --git a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/TaskManager.java b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/TaskManager.java index 241d86d6..57c2c17c 100644 --- a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/TaskManager.java +++ b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/TaskManager.java @@ -95,9 +95,13 @@ public class TaskManager { /**通过ID结束任务*/ public void stopTaskByUserId(String userId) { - tasks.keySet().stream() + String taskId = tasks.keySet().stream() .filter(key -> key.startsWith(userId + "_")) - .findFirst().ifPresent(this::stopTask); + .findFirst() + .orElse(null); + if (taskId != null) { + stopTask(taskId); + } }