From fbc7429688da8f592d47e3350572a49cb0386e3f Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Thu, 6 Jul 2023 10:59:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=9C=A8=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iflytop/nuclear/controller/TaskController.java | 2 +- .../nuclear/service/impl/CheckServiceImpl.java | 24 +++++++++++++-------- .../nuclear/service/impl/TaskServiceImpl.java | 1 + src/main/java/com/iflytop/nuclear/vo/TaskVO.java | 2 ++ .../iflytop/nuclear/websocket/WebSocketServer.java | 4 ++-- uploadfiles/xlsx/20230706/堆芯模版.xlsx | Bin 0 -> 12789 bytes 6 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 uploadfiles/xlsx/20230706/堆芯模版.xlsx diff --git a/src/main/java/com/iflytop/nuclear/controller/TaskController.java b/src/main/java/com/iflytop/nuclear/controller/TaskController.java index ef33712..cd5a854 100644 --- a/src/main/java/com/iflytop/nuclear/controller/TaskController.java +++ b/src/main/java/com/iflytop/nuclear/controller/TaskController.java @@ -87,7 +87,7 @@ public class TaskController { nuclearCoreConfigQueryWrapper.eq("task_id", id); boolean remove = nuclearCoreConfigService.remove(nuclearCoreConfigQueryWrapper); // 将当前任务状态修改为0 - checkServiceImpl.updateCoordAndStatus(id, null, 0); + checkServiceImpl.updateCoordAndStatus(id, null, 0, false, false); JSONObject jo = new JSONObject(); jo.put("result", remove); return ResponseData.success(jo); 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 51a58cf..20a18f6 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java @@ -55,13 +55,19 @@ public class CheckServiceImpl implements CheckService { return checkInfo; } - public boolean updateCoordAndStatus(int taskId, String currentCoord, int status) throws IOException { + public boolean updateCoordAndStatus(int taskId, String currentCoord, int status, boolean updateStartTime, boolean updateEndTime) throws IOException { UpdateWrapper taskUpdateWrapper = new UpdateWrapper<>(); taskUpdateWrapper.eq("id",taskId); Task task = new Task(); if (currentCoord != null){ task.setCurrentCoord(currentCoord); } + if (updateStartTime) { + task.setStartTime(new Date()); + } + if (updateEndTime) { + task.setEndTime(new Date()); + } task.setStatus(status); boolean update = taskService.update(task, taskUpdateWrapper); this.sendMessageToPage(); @@ -88,7 +94,7 @@ public class CheckServiceImpl implements CheckService { public void initCheck(String initNextCoord,int order, int taskId) throws IOException { // 指定初始化index为1-6 String nextCoord = initNextCoord; - this.updateCoordAndStatus(taskId, nextCoord, 1); + this.updateCoordAndStatus(taskId, nextCoord, 1, true, false); // 开始检测 this.sendMessageToDevice(nextCoord, taskId); // 如果中间终止 则退出返回 与messagehandler 处理逻辑相同 外部控制while的终止 @@ -100,7 +106,7 @@ public class CheckServiceImpl implements CheckService { while (true) { if (this.breakOff) { breakFirst = true; - this.updateCoordAndStatus(taskId, nextCoord, 2); + this.updateCoordAndStatus(taskId, nextCoord, 2, false, false); break; } if (this.isMessageReceived()) { @@ -113,10 +119,10 @@ public class CheckServiceImpl implements CheckService { } // 检测完毕后获取下一个坐标 nextCoord = this.getNextCoord(nextCoord, order); - this.updateCoordAndStatus(taskId, nextCoord, 1); + this.updateCoordAndStatus(taskId, nextCoord, 1, false, false); this.sendMessageToDevice(nextCoord, taskId); if ("finish".equals(nextCoord)) { - this.updateCoordAndStatus(taskId, nextCoord, 3); + this.updateCoordAndStatus(taskId, nextCoord, 3, false, true); } } } @@ -135,7 +141,7 @@ public class CheckServiceImpl implements CheckService { while (true) { if (this.breakOff) { breakFirst = true; - this.updateCoordAndStatus(taskId, nextCoord, 2); + this.updateCoordAndStatus(taskId, nextCoord, 2, false, false); break; } if (this.isMessageReceived()) { @@ -148,10 +154,10 @@ public class CheckServiceImpl implements CheckService { } // 检测完毕后获取下一个坐标 nextCoord = this.getNextCoord(nextCoord, order); - this.updateCoordAndStatus(taskId, nextCoord, 1); + this.updateCoordAndStatus(taskId, nextCoord, 1, false, false); this.sendMessageToDevice(nextCoord, taskId); if ("finish".equals(nextCoord)) { - this.updateCoordAndStatus(taskId, nextCoord, 3); + this.updateCoordAndStatus(taskId, nextCoord, 3, false, true); } } } @@ -159,7 +165,7 @@ public class CheckServiceImpl implements CheckService { @Override public CheckResult autoCheck(int order, String startIndex, int taskId) throws IOException { this.changeBreakOff(false); - this.updateCoordAndStatus(taskId, null, 1); + this.updateCoordAndStatus(taskId, null, 1, false, false); currentTaskId = taskId; if (order == 0) { if (startIndex == null || "".equals(startIndex)) { diff --git a/src/main/java/com/iflytop/nuclear/service/impl/TaskServiceImpl.java b/src/main/java/com/iflytop/nuclear/service/impl/TaskServiceImpl.java index 82d3dbe..62e0788 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/TaskServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/TaskServiceImpl.java @@ -59,6 +59,7 @@ public class TaskServiceImpl extends ServiceImpl implements Ta .taskName(task.getTaskName()) .checkOrder(task.getCheckOrder()) .id(task.getId()) + .currentCoord(task.getCurrentCoord()) .status(task.getStatus()) .nuclearCoreName(nuclearCore.getName()) .nuclearStationName(nuclearStation.getName()) diff --git a/src/main/java/com/iflytop/nuclear/vo/TaskVO.java b/src/main/java/com/iflytop/nuclear/vo/TaskVO.java index f941c2f..39009a9 100644 --- a/src/main/java/com/iflytop/nuclear/vo/TaskVO.java +++ b/src/main/java/com/iflytop/nuclear/vo/TaskVO.java @@ -38,4 +38,6 @@ public class TaskVO { private boolean canUpload; private Date endTime; + + private String currentCoord; } diff --git a/src/main/java/com/iflytop/nuclear/websocket/WebSocketServer.java b/src/main/java/com/iflytop/nuclear/websocket/WebSocketServer.java index c79be53..38f866a 100644 --- a/src/main/java/com/iflytop/nuclear/websocket/WebSocketServer.java +++ b/src/main/java/com/iflytop/nuclear/websocket/WebSocketServer.java @@ -106,8 +106,8 @@ public class WebSocketServer { log.info("用户消息:" + userId + ",报文:" + message); if (!StringUtils.isEmpty(message)) { try { - JSONObject jsonObject = JSON.parseObject(message); - String command = jsonObject.getString("command"); + // JSONObject jsonObject = JSON.parseObject(message); + // String command = jsonObject.getString("command"); // 根据command类型,分发给不同的handler和detection // if (!command.isEmpty()) { // messageHandler.dispatcher(command, jsonObject, session); diff --git a/uploadfiles/xlsx/20230706/堆芯模版.xlsx b/uploadfiles/xlsx/20230706/堆芯模版.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1b0a04e1edad8c464d54d87e2e26cb8631e968c8 GIT binary patch literal 12789 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 SHCfR?|40A}l3QSW(ffbJqoJSx literal 0 HcmV?d00001