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;
+ }
}