From 9b2daf8452d73ba2e8a07157763ed165fd6876b9 Mon Sep 17 00:00:00 2001
From: republicline <1464474399@qq.com>
Date: Tue, 6 Aug 2024 17:30:33 +0800
Subject: [PATCH] =?UTF-8?q?fixed:=20=E4=BF=AE=E6=AD=A3=E7=94=9F=E5=91=BD?=
=?UTF-8?q?=E4=BD=93=E5=BE=81=E8=BF=99=E9=83=A8=E5=88=86=E7=9A=84=E8=BF=94?=
=?UTF-8?q?=E5=9B=9Ejson=E5=86=85=E5=AE=B9=EF=BC=8C=E4=BE=BF=E4=BA=8E?=
=?UTF-8?q?=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 1 -
.../rax/vital/handler/AddMedicineHandler.java | 46 ++++++++++++-------
.../vital/handler/MachineFeedbackHandler.java | 30 ++++++++++--
.../rax/vital/handler/MedicineHandler.java | 2 -
.../controller/MedicineController.java | 43 ++++++++---------
.../medicine/service/AIMedicineService.java | 6 +++
.../service/impl/AIMedicineServiceImpl.java | 34 ++++++++++++++
.../service/impl/FlagServiceImpl.java | 12 +++--
.../service/impl/VitalSignServiceImpl.java | 1 +
.../com/rax/vital/timer/AIMedicineTimer.java | 2 +-
.../com/rax/vital/timer/VitalSignTimerWS.java | 35 ++++++++++----
.../src/main/resources/application.yml | 2 +-
12 files changed, 156 insertions(+), 58 deletions(-)
diff --git a/pom.xml b/pom.xml
index 055ab34..b447e68 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,7 +98,6 @@
upms
common
-
daily-plan
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java
index 59d2b14..a995e9e 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java
@@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.web.socket.*;
+import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -26,7 +27,7 @@ public class AddMedicineHandler implements WebSocketHandler {
private OAuth2AuthorizationService authorizationService;
// 发送心跳任务的定时任务容器
- private Map timerTaskMap = new ConcurrentHashMap();
+ private Map timerTaskMap = new ConcurrentHashMap<>();
@Autowired
private AIMedicineTimer aiMedicineTimer;
@@ -38,6 +39,7 @@ public class AddMedicineHandler implements WebSocketHandler {
startHeartbeat(session);
}
+
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage> message) throws Exception {
// String decode = URLDecoder.decode(session.getUri().getQuery());
@@ -61,6 +63,20 @@ public class AddMedicineHandler implements WebSocketHandler {
aiMedicineTimer.initWeb(databaseName, session);
vitalSignTimerWS.initWeb(databaseName, session);
}
+
+ // 处理网页端接收到消息后的相应内容
+ if ("webResponseConnection".equals(msgType)) {
+ String webConnectionFlag = jsonObject.getString("webConnectionFlag");
+ // 给unity端发送网页端拒绝连接
+ aiMedicineTimer.sendConnectionResponseToUnity(patientName,idNum,date,databaseName, webConnectionFlag);
+ }
+
+ // 处理web端请求或断开连接
+ if ("webRequestConnection".equals(msgType)) {
+ String webRequestFlag = jsonObject.getString("webConnectionFlag");
+ aiMedicineTimer.sendWebRequestConnectionMsg(patientName,idNum,date,databaseName, webRequestFlag);
+ }
+
if (aiMedicineTimer.getUnitySession(databaseName) != null) {
JSONObject result = new JSONObject();
result.put("msg", "unity端已登录");
@@ -84,28 +100,26 @@ public class AddMedicineHandler implements WebSocketHandler {
}
}
- // 处理网页端接收到消息后的相应内容
- if ("webResponseConnection".equals(msgType)) {
- String webConnectionFlag = jsonObject.getString("webConnectionFlag");
- // 给unity端发送网页端拒绝连接
- aiMedicineTimer.sendConnectionResponseToUnity(patientName,idNum,date,databaseName, webConnectionFlag);
- }
-
- // 处理web端请求或断开连接
- if ("webRequestConnection".equals(msgType)) {
- String webRequestFlag = jsonObject.getString("webConnectionFlag");
- aiMedicineTimer.sendWebRequestConnectionMsg(patientName,idNum,date,databaseName, webRequestFlag);
- }
-
// 处理发送给药相关
if ("addMedicine".equals(msgType) && aiMedicineTimer.getWebSession(databaseName) != null && aiMedicineTimer.getUnitySession(databaseName) != null
&& aiMedicineTimer.isReady(databaseName)) {
// todo 注意修改
- // flag 1 代表人工给药, 0代表AI给药
+ // flag 0 代表人工给药, 1代表AI给药
vitalSignTimerWS.changeWSAIFlag(databaseName, "admin", session, jsonObject.getString("flag"),
jsonObject.getString("medicine"), jsonObject.getString("value"));
}
+
+ // 展示网页端延迟信息
+ if ("ping".equals(msgType)) {
+ Long timeStamp = jsonObject.getLong("msg");
+ JSONObject result = new JSONObject();
+ result.put("msgType", "pong");
+ // 当前时间戳
+ result.put("msg", new Date().getTime() - timeStamp);
+ session.sendMessage(new TextMessage(result.toJSONString().getBytes()));
+ }
+
}
}
@@ -144,7 +158,7 @@ public class AddMedicineHandler implements WebSocketHandler {
e.printStackTrace();
stopHeartbeat(session);
}
- }, 0, 10, TimeUnit.SECONDS);
+ }, 0, 30, TimeUnit.SECONDS);
timerTaskMap.put(session.getId(), heartbeatExecutor);
}
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java
index 0c4697f..4869c56 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java
@@ -5,9 +5,11 @@ import com.rax.vital.timer.AIMedicineTimer;
import com.rax.vital.timer.VitalSignTimerWS;
import com.rax.vital.util.DatabaseNameUtil;
import jakarta.annotation.Resource;
+import org.joda.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.socket.*;
+import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -82,12 +84,12 @@ public class MachineFeedbackHandler implements WebSocketHandler {
if (aiMedicineTimer.getWebSession(databaseName) != null) {
JSONObject result = new JSONObject();
- result.put("msg", "网站端已登录");
+ result.put("msg", "网页端已登录");
result.put("msgType", "msg");
session.sendMessage(new TextMessage(result.toJSONString().getBytes()));
} else {
JSONObject result = new JSONObject();
- result.put("msg", "网站端未登录");
+ result.put("msg", "网页端未登录");
result.put("msgType", "msg");
session.sendMessage(new TextMessage(result.toJSONString().getBytes()));
}
@@ -108,6 +110,28 @@ public class MachineFeedbackHandler implements WebSocketHandler {
&& aiMedicineTimer.isReady(databaseName)) {
vitalSignTimerWS.sendMachineFlag(databaseName, code, session);
}
+
+ // 展示unity端延迟信息
+ if ("ping".equals(msgType)) {
+ Long timeStamp = jsonObject.getLong("msg");
+ JSONObject result = new JSONObject();
+ result.put("msgType", "pong");
+ // 当前时间戳
+ result.put("msg", new Date().getTime() - timeStamp);
+ session.sendMessage(new TextMessage(result.toJSONString().getBytes()));
+ }
+
+ // unity收到给药信息后回复把此消息推送给web
+ if ("getMedicine".equals(msgType)) {
+ JSONObject getMedicineMsg = new JSONObject();
+ getMedicineMsg.put("msgType", "getMedicine");
+ getMedicineMsg.put("patientName", patientName);
+ getMedicineMsg.put("idNum", idNum);
+ getMedicineMsg.put("date", date);
+ getMedicineMsg.put(jsonObject.getString("medicine"), jsonObject.getString("value"));
+ WebSocketSession webSession = aiMedicineTimer.getWebSession(databaseName);
+ webSession.sendMessage(new TextMessage(getMedicineMsg.toJSONString().getBytes()));
+ }
}
}
@@ -147,7 +171,7 @@ public class MachineFeedbackHandler implements WebSocketHandler {
e.printStackTrace();
stopHeartbeat(session);
}
- }, 0, 10, TimeUnit.SECONDS);
+ }, 0, 30, TimeUnit.SECONDS);
timerTaskMap.put(session.getId(), heartbeatExecutor);
}
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java
index e877374..14c89f0 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java
@@ -46,9 +46,7 @@ public class MedicineHandler implements WebSocketHandler {
String patientName = jsonObject.getString("patientName");
String idNum = jsonObject.getString("idNum");
String date = jsonObject.getString("date");
- System.out.println("medicineHandler-jsonObject = " + jsonObject.toJSONString());
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
- System.out.println("medicineHandler-databaseName = " + databaseName);
vitalSignTimerWS.createAndSendWSMessageMongo(databaseName, "admin", session);
}
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java
index 43c9804..f531463 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java
@@ -66,30 +66,31 @@ public class MedicineController {
vitalSignTimer.createAndSendMessageMongo(databaseName, username, simpSessionId);
}
- @MessageMapping("/changeAIFlag")
- public void changeAIFlag(MessageHeaders messageHeaders, String body) {
- LinkedMultiValueMap nativeHeaders = (LinkedMultiValueMap) messageHeaders.get("nativeHeaders");
- ArrayList tokenList = (ArrayList) nativeHeaders.get("token");
- String token = (String) tokenList.get(0);
- OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
-
- String username = authorization.getPrincipalName();
- String simpSessionId = messageHeaders.get("simpSessionId", String.class);
-
- JSONObject params = JSONObject.parseObject(body);
- // 病人名
- String patientName = params.getString("patientName");
- // 病人身份证
- String idNum = params.getString("idNum");
- // yyyyMMdd
- String date = params.getString("date");
- String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
- vitalSignTimer.changeAIFlag(databaseName, username, simpSessionId, params.getString("flag"),
- params.getString("medicine"), params.getString("value"));
- }
+// @MessageMapping("/changeAIFlag")
+// public void changeAIFlag(MessageHeaders messageHeaders, String body) {
+// LinkedMultiValueMap nativeHeaders = (LinkedMultiValueMap) messageHeaders.get("nativeHeaders");
+// ArrayList tokenList = (ArrayList) nativeHeaders.get("token");
+// String token = (String) tokenList.get(0);
+// OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
+//
+// String username = authorization.getPrincipalName();
+// String simpSessionId = messageHeaders.get("simpSessionId", String.class);
+//
+// JSONObject params = JSONObject.parseObject(body);
+// // 病人名
+// String patientName = params.getString("patientName");
+// // 病人身份证
+// String idNum = params.getString("idNum");
+// // yyyyMMdd
+// String date = params.getString("date");
+// String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
+// vitalSignTimer.changeAIFlag(databaseName, username, simpSessionId, params.getString("flag"),
+// params.getString("medicine"), params.getString("value"));
+// }
@PostMapping("/getPatientInfo")
public R getPatientInfo(String patientName, String idNum, String date) {
+ // todo : 存疑
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
return vitalSignsService.getPatientInfo(databaseName);
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java
index 8105aa9..7852d8b 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java
@@ -15,4 +15,10 @@ public interface AIMedicineService {
List