From d753ffd629d9a0e2e4c17f14029ebf888391845b Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Tue, 4 Jul 2023 11:26:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=98=E8=B4=B4=E4=B8=80=E4=BB=BD=E6=A0=91?= =?UTF-8?q?=E5=9E=8B=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuclear/service/impl/CheckServiceImpl.java | 68 +++++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java b/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java index d3676b3..ee52d23 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java @@ -86,8 +86,8 @@ public class CheckServiceImpl implements CheckService { if (order == 0) { if (startIndex == null || "".equals(startIndex)) { // 指定初始化index为1-6 - this.updateCoordAndStatus(taskId, "1-6", 1); String nextCoord = "1-6"; + this.updateCoordAndStatus(taskId, nextCoord, 1); // 开始检测 this.sendMessageToClient(nextCoord, taskId); // 如果中间终止 则退出返回 与messagehandler 处理逻辑相同 外部控制while的终止 @@ -155,9 +155,71 @@ public class CheckServiceImpl implements CheckService { }else if (order == 1) { if (startIndex == null || "".equals(startIndex)) { // 指定初始化index为6-1 - this.updateCoordAndStatus(taskId, "6-1", 1); + String nextCoord = "6-1"; + this.updateCoordAndStatus(taskId, nextCoord, 1); + // 开始检测 + this.sendMessageToClient(nextCoord, taskId); + // 如果中间终止 则退出返回 与messagehandler 处理逻辑相同 外部控制while的终止 + // 下一次进入后则进入其他流程 + while (!"finish".equals(nextCoord)) { + // 需要一个中断的接口, 中途暂停本次流程 + // 用messagehandler处理检测完毕的消息 从而启动以下流程 + boolean breakFirst = false; + while (true) { + if (this.breakOff) { + breakFirst = true; + this.updateCoordAndStatus(taskId, nextCoord, 2); + break; + } + if (this.isMessageReceived()) { + messageReceived = false; + break; // 跳出循环 + } + } + if (breakFirst) { + break; + } + // 检测完毕后获取下一个坐标 + nextCoord = this.getNextCoord(nextCoord, 1); + this.updateCoordAndStatus(taskId, nextCoord, 1); + this.sendMessageToClient(nextCoord, taskId); + if ("finish".equals(nextCoord)) { + this.updateCoordAndStatus(taskId, nextCoord, 3); + } + } }else { - + // 被中断过,需要从中断的currentCoord坐标继续 + // 首先需要读取数据库,获得当前taskId的信息 + Task task = taskService.getById(taskId); + String nextCoord = task.getCurrentCoord(); + this.sendMessageToClient(nextCoord, taskId); + // 得到的currentCoord已经检测过,直接进入下一流程 + while (!"finish".equals(nextCoord)) { + // 需要一个中断的接口, 中途暂停本次流程 + // 用messagehandler处理检测完毕的消息 从而启动以下流程 + boolean breakFirst = false; + while (true) { + if (this.breakOff) { + breakFirst = true; + this.updateCoordAndStatus(taskId, nextCoord, 2); + break; + } + if (this.isMessageReceived()) { + messageReceived = false; + break; // 跳出循环 + } + } + if (breakFirst){ + break; + } + // 检测完毕后获取下一个坐标 + nextCoord = this.getNextCoord(nextCoord, 1); + this.updateCoordAndStatus(taskId, nextCoord, 1); + this.sendMessageToClient(nextCoord, taskId); + if ("finish".equals(nextCoord)) { + this.updateCoordAndStatus(taskId, nextCoord, 3); + } + } } } return null;