From c88213a8f9e4b49adef46086445bc06fcbca168f Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Mon, 3 Jul 2023 15:10:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=AA=E5=90=91=E8=B7=AF=E5=BE=84=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 +++++ .../iflytop/nuclear/entity/DetectionMessage.java | 24 ++++++++++++++++++++++ .../iflytop/nuclear/handler/MessageHandler.java | 19 ++++++++++++++--- .../com/iflytop/nuclear/service/CheckService.java | 1 - .../nuclear/service/NuclearCoreConfigService.java | 2 ++ .../nuclear/service/impl/CheckServiceImpl.java | 21 ++++++++++++++++--- .../service/impl/NuclearCoreConfigServiceImpl.java | 13 ++++++++++++ 7 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/iflytop/nuclear/entity/DetectionMessage.java diff --git a/pom.xml b/pom.xml index 4ae6751..df88023 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,11 @@ 1.2.83 + cn.hutool + hutool-all + 5.3.5 + + javax.websocket javax.websocket-api 1.1 diff --git a/src/main/java/com/iflytop/nuclear/entity/DetectionMessage.java b/src/main/java/com/iflytop/nuclear/entity/DetectionMessage.java new file mode 100644 index 0000000..c1b0a8f --- /dev/null +++ b/src/main/java/com/iflytop/nuclear/entity/DetectionMessage.java @@ -0,0 +1,24 @@ +package com.iflytop.nuclear.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 检测消息体 + * @author cool + * @date 2023/7/3 14:54 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DetectionMessage { + + private String messageId; + + private int taskId; + + private String coord; +} diff --git a/src/main/java/com/iflytop/nuclear/handler/MessageHandler.java b/src/main/java/com/iflytop/nuclear/handler/MessageHandler.java index 1c3bd9a..ffe9560 100644 --- a/src/main/java/com/iflytop/nuclear/handler/MessageHandler.java +++ b/src/main/java/com/iflytop/nuclear/handler/MessageHandler.java @@ -2,9 +2,11 @@ package com.iflytop.nuclear.handler; import com.alibaba.fastjson.JSONObject; import com.iflytop.nuclear.service.CheckService; +import com.iflytop.nuclear.service.NuclearCoreConfigService; import com.iflytop.nuclear.service.impl.CheckServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.websocket.Session; @@ -18,8 +20,11 @@ import java.io.IOException; @Slf4j public class MessageHandler { + @Lazy @Autowired CheckServiceImpl checkServiceImpl; + @Autowired + NuclearCoreConfigService nuclearCoreConfigService; /** * dispatcher分发器 @@ -29,9 +34,17 @@ public class MessageHandler { */ public void dispatcher(String command, JSONObject data, Session session) throws IOException { switch (command){ - case "cmd1": - session.getBasicRemote().sendText("123"); - checkServiceImpl.changeMessageReceived(true); + case "detection_completed": + // 需要把当前的检测结果进行保存 + JSONObject result = data.getJSONObject("result"); + String imgUrl = result.getString("imgUrl"); + String coord = result.getString("coord"); + int taskId = Integer.parseInt(result.getString("taskId")); + String detectionResult = result.getString("detection_result"); + boolean updateResult = nuclearCoreConfigService.updateDetectionResult(imgUrl, detectionResult, coord, taskId); + if (updateResult) { + checkServiceImpl.changeMessageReceived(true); + } break; default: System.out.println("No match!"); diff --git a/src/main/java/com/iflytop/nuclear/service/CheckService.java b/src/main/java/com/iflytop/nuclear/service/CheckService.java index 235107b..6e750f8 100644 --- a/src/main/java/com/iflytop/nuclear/service/CheckService.java +++ b/src/main/java/com/iflytop/nuclear/service/CheckService.java @@ -10,7 +10,6 @@ import java.io.IOException; * @author cool * @date 2023/7/2 09:43 */ -@Transactional public interface CheckService { CheckInfo getCheckInfoByTaskId(int taskId); diff --git a/src/main/java/com/iflytop/nuclear/service/NuclearCoreConfigService.java b/src/main/java/com/iflytop/nuclear/service/NuclearCoreConfigService.java index dd816d1..7b85037 100644 --- a/src/main/java/com/iflytop/nuclear/service/NuclearCoreConfigService.java +++ b/src/main/java/com/iflytop/nuclear/service/NuclearCoreConfigService.java @@ -14,4 +14,6 @@ import java.util.List; public interface NuclearCoreConfigService extends IService { List getNuclearCoreConfigByTaskid(String taskId); + + boolean updateDetectionResult(String imgUrl, String detectionResult, String coord, int taskId); } 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 5f5a01d..b7a3121 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/CheckServiceImpl.java @@ -1,8 +1,11 @@ package com.iflytop.nuclear.service.impl; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.iflytop.nuclear.entity.CheckInfo; import com.iflytop.nuclear.entity.CheckResult; +import com.iflytop.nuclear.entity.DetectionMessage; import com.iflytop.nuclear.model.Task; import com.iflytop.nuclear.service.CheckService; import com.iflytop.nuclear.service.TaskService; @@ -22,8 +25,8 @@ public class CheckServiceImpl implements CheckService { @Autowired TaskService taskService; - // @Autowired - // WebSocketServer webSocketServer; + @Autowired + WebSocketServer webSocketServer; private static boolean messageReceived = false; @@ -76,7 +79,12 @@ public class CheckServiceImpl implements CheckService { this.updateCoordAndStatus(taskId, "1-6", 1); String nextCoord = "1-6"; // 开始检测 - // webSocketServer.sendMessage("开始检测 1-6"); + DetectionMessage startMessage = DetectionMessage.builder() + .messageId(IdUtil.randomUUID()) + .coord(nextCoord) + .taskId(taskId) + .build(); + webSocketServer.sendMessage(startMessage.toString()); // 如果中间终止 则退出返回 与messagehandler 处理逻辑相同 外部控制while的终止 // 下一次进入后则进入其他流程 while (!"finish".equals(nextCoord)) { @@ -95,6 +103,13 @@ public class CheckServiceImpl implements CheckService { // 检测完毕后获取下一个坐标 nextCoord = this.getNextCoord(nextCoord, 0); this.updateCoordAndStatus(taskId, nextCoord, 1); + DetectionMessage detectionMessage = DetectionMessage.builder() + .messageId(IdUtil.randomUUID()) + .coord(nextCoord) + .taskId(taskId) + .build(); + JSONObject from = JSONObject.from(detectionMessage); + webSocketServer.sendMessage(from.toString()); if ("finish".equals(nextCoord)) { this.updateCoordAndStatus(taskId, nextCoord, 3); } diff --git a/src/main/java/com/iflytop/nuclear/service/impl/NuclearCoreConfigServiceImpl.java b/src/main/java/com/iflytop/nuclear/service/impl/NuclearCoreConfigServiceImpl.java index 6548291..62e73ac 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/NuclearCoreConfigServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/NuclearCoreConfigServiceImpl.java @@ -22,4 +22,17 @@ public class NuclearCoreConfigServiceImpl extends ServiceImpl list = this.list(nuclearCoreConfigQueryWrapper); return list; } + + /** + * 保存检测结果 + * @param imgUrl + * @param detectionResult + * @param coord + * @param taskId + * @return + */ + @Override + public boolean updateDetectionResult(String imgUrl, String detectionResult, String coord, int taskId) { + return true; + } }