mirror of
https://gitee.com/republicline/rax-remote-v2.git
synced 2025-08-24 04:04:57 +08:00
修正BUG -- 添加"init".equals(msgType)
This commit is contained in:
parent
7a1e31517b
commit
48a763cf10
|
@ -56,8 +56,11 @@ public class MySQLSource extends CustomDataSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Connection getConnection() {
|
public Connection getConnection() {
|
||||||
connection = druidPooledConnection.getConnection();
|
if (druidPooledConnection != null) {
|
||||||
return connection;
|
connection = druidPooledConnection.getConnection();
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
|
|
|
@ -47,7 +47,6 @@ public class AddMedicineHandler implements WebSocketHandler {
|
||||||
// String username = authorization.getPrincipalName();
|
// String username = authorization.getPrincipalName();
|
||||||
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject((String) message.getPayload());
|
JSONObject jsonObject = JSONObject.parseObject((String) message.getPayload());
|
||||||
|
|
||||||
String msgType = jsonObject.getString("msgType");
|
String msgType = jsonObject.getString("msgType");
|
||||||
if (!"heartbeat".equals(msgType)) {
|
if (!"heartbeat".equals(msgType)) {
|
||||||
// 病人名
|
// 病人名
|
||||||
|
@ -56,13 +55,12 @@ public class AddMedicineHandler implements WebSocketHandler {
|
||||||
String idNum = jsonObject.getString("idNum");
|
String idNum = jsonObject.getString("idNum");
|
||||||
// yyyyMMdd
|
// yyyyMMdd
|
||||||
String date = jsonObject.getString("date");
|
String date = jsonObject.getString("date");
|
||||||
System.out.println("addMedicineHandler-json = " + jsonObject.toJSONString());
|
|
||||||
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
|
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
|
||||||
System.out.println("addMedicineHandler-databaseName = " + databaseName);
|
|
||||||
// 将网站端的dbName作为key session作为Value存入Map 以便后续判断状态
|
// 将网站端的dbName作为key session作为Value存入Map 以便后续判断状态
|
||||||
aiMedicineTimer.initWeb(databaseName, session, false);
|
if ("init".equals(msgType)) {
|
||||||
|
aiMedicineTimer.initWeb(databaseName, session);
|
||||||
|
vitalSignTimerWS.initWeb(databaseName, session);
|
||||||
|
}
|
||||||
if (aiMedicineTimer.getUnitySession(databaseName) != null) {
|
if (aiMedicineTimer.getUnitySession(databaseName) != null) {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("msg", "unity端已登录");
|
result.put("msg", "unity端已登录");
|
||||||
|
@ -95,14 +93,15 @@ public class AddMedicineHandler implements WebSocketHandler {
|
||||||
|
|
||||||
// 处理web端请求或断开连接
|
// 处理web端请求或断开连接
|
||||||
if ("webRequestConnection".equals(msgType)) {
|
if ("webRequestConnection".equals(msgType)) {
|
||||||
String webRequestFlag = jsonObject.getString("webRequestFlag");
|
String webRequestFlag = jsonObject.getString("webConnectionFlag");
|
||||||
aiMedicineTimer.sendWebRequestConnectionMsg(databaseName, webRequestFlag);
|
aiMedicineTimer.sendWebRequestConnectionMsg(databaseName, webRequestFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理发送给药相关
|
// 处理发送给药相关
|
||||||
if (aiMedicineTimer.getWebSession(databaseName) != null && aiMedicineTimer.getUnitySession(databaseName) != null
|
if ("addMedicine".equals(msgType) && aiMedicineTimer.getWebSession(databaseName) != null && aiMedicineTimer.getUnitySession(databaseName) != null
|
||||||
&& aiMedicineTimer.isReady(databaseName)) {
|
&& aiMedicineTimer.isReady(databaseName)) {
|
||||||
// todo 注意修改
|
// todo 注意修改
|
||||||
|
// flag 1 代表人工给药, 0代表AI给药
|
||||||
vitalSignTimerWS.changeWSAIFlag(databaseName, "admin", session, jsonObject.getString("flag"),
|
vitalSignTimerWS.changeWSAIFlag(databaseName, "admin", session, jsonObject.getString("flag"),
|
||||||
jsonObject.getString("medicine"), jsonObject.getString("value"));
|
jsonObject.getString("medicine"), jsonObject.getString("value"));
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,21 @@ public class MachineFeedbackHandler implements WebSocketHandler {
|
||||||
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
|
String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
|
||||||
String code = jsonObject.getString("code");
|
String code = jsonObject.getString("code");
|
||||||
|
|
||||||
|
if ("init".equals(msgType)) {
|
||||||
|
aiMedicineTimer.initUnity(databaseName, session);
|
||||||
|
vitalSignTimerWS.initUnity(databaseName, session);
|
||||||
|
}
|
||||||
|
|
||||||
aiMedicineTimer.initUnity(databaseName, session, session);
|
// Unity获取到给药信息后回复
|
||||||
|
if ("getMedicine".equals(msgType)) {
|
||||||
|
JSONObject msg = new JSONObject();
|
||||||
|
msg.put("msgType", msgType);
|
||||||
|
msg.put("patientName", patientName);
|
||||||
|
msg.put("idNum", idNum);
|
||||||
|
msg.put("date", date);
|
||||||
|
WebSocketSession webSession = aiMedicineTimer.getWebSession(databaseName);
|
||||||
|
webSession.sendMessage(new TextMessage(msg.toJSONString().getBytes()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// u3d发送表示请求与网页端的连接
|
// u3d发送表示请求与网页端的连接
|
||||||
|
|
|
@ -21,7 +21,7 @@ public class AIMedicineTimer {
|
||||||
private static final Map<String, WebSocketSession> webDbSessionMap = new ConcurrentHashMap();
|
private static final Map<String, WebSocketSession> webDbSessionMap = new ConcurrentHashMap();
|
||||||
|
|
||||||
// 存放sessionId的状态
|
// 存放sessionId的状态
|
||||||
private static final Map<WebSocketSession, Boolean> webSessionStatusMap = new ConcurrentHashMap();
|
private static final Map<WebSocketSession, Boolean> webStatusMap = new ConcurrentHashMap();
|
||||||
|
|
||||||
// unity 端的dbname 和 sessionId 映射
|
// unity 端的dbname 和 sessionId 映射
|
||||||
private static final Map<String, WebSocketSession> u3DDbSessionMap = new ConcurrentHashMap<>();
|
private static final Map<String, WebSocketSession> u3DDbSessionMap = new ConcurrentHashMap<>();
|
||||||
|
@ -42,14 +42,13 @@ public class AIMedicineTimer {
|
||||||
webSession.sendMessage(new TextMessage(unityMsg.toJSONString().getBytes()));
|
webSession.sendMessage(new TextMessage(unityMsg.toJSONString().getBytes()));
|
||||||
}
|
}
|
||||||
if ("0".equals(flag)) {
|
if ("0".equals(flag)) {
|
||||||
// 网页端拒绝连接
|
// unity拒绝连接
|
||||||
setU3DStatus(databaseName, false);
|
setU3DStatus(databaseName, false);
|
||||||
|
setWebStatus(databaseName, false);
|
||||||
unityMsg = new JSONObject();
|
unityMsg = new JSONObject();
|
||||||
unityMsg.put("msgType", "unityResponseConnection");
|
unityMsg.put("msgType", "unityResponseConnection");
|
||||||
unityMsg.put("unityConnectionFlag", "0");
|
unityMsg.put("unityConnectionFlag", "0");
|
||||||
webSession.sendMessage(new TextMessage(unityMsg.toJSONString().getBytes()));
|
webSession.sendMessage(new TextMessage(unityMsg.toJSONString().getBytes()));
|
||||||
// 把网页端的sessionStatus置为false
|
|
||||||
setWebStatus(databaseName, false);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 告知u3d网页端
|
// 告知u3d网页端
|
||||||
|
@ -62,6 +61,7 @@ public class AIMedicineTimer {
|
||||||
// unity端请求网页端连接或断开连接
|
// unity端请求网页端连接或断开连接
|
||||||
public void sendUnityRequestConnectionMsg(String databaseName, String flag) throws IOException {
|
public void sendUnityRequestConnectionMsg(String databaseName, String flag) throws IOException {
|
||||||
WebSocketSession webSession = getWebSession(databaseName);
|
WebSocketSession webSession = getWebSession(databaseName);
|
||||||
|
System.out.println("webSession = " + webSession);
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
if ("1".equals(flag)) {
|
if ("1".equals(flag)) {
|
||||||
jsonObject.put("msgType", "unityRequestConnection");
|
jsonObject.put("msgType", "unityRequestConnection");
|
||||||
|
@ -94,18 +94,20 @@ public class AIMedicineTimer {
|
||||||
|
|
||||||
// web端请求unity端连接或断开连接
|
// web端请求unity端连接或断开连接
|
||||||
public void sendWebRequestConnectionMsg(String databaseName, String flag) throws IOException {
|
public void sendWebRequestConnectionMsg(String databaseName, String flag) throws IOException {
|
||||||
WebSocketSession webSession = getWebSession(databaseName);
|
WebSocketSession unitySession = getUnitySession(databaseName);
|
||||||
|
System.out.println("unitySession = " + unitySession);
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
if ("1".equals(flag)) {
|
if ("1".equals(flag)) {
|
||||||
|
System.out.println("网站端请求连接");
|
||||||
jsonObject.put("msgType", "webRequestConnection");
|
jsonObject.put("msgType", "webRequestConnection");
|
||||||
jsonObject.put("webConnectionFlag", "1");
|
jsonObject.put("webConnectionFlag", "1");
|
||||||
webSession.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes()));
|
unitySession.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes()));
|
||||||
setWebStatus(databaseName,true);
|
setWebStatus(databaseName,true);
|
||||||
}
|
}
|
||||||
if ("0".equals(flag)) {
|
if ("0".equals(flag)) {
|
||||||
jsonObject.put("msgType", "webRequestConnection");
|
jsonObject.put("msgType", "webRequestConnection");
|
||||||
jsonObject.put("webConnectionFlag", "0");
|
jsonObject.put("webConnectionFlag", "0");
|
||||||
webSession.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes()));
|
unitySession.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes()));
|
||||||
setU3DStatus(databaseName, false);
|
setU3DStatus(databaseName, false);
|
||||||
// 把网页端的sessionStatus置为false
|
// 把网页端的sessionStatus置为false
|
||||||
setWebStatus(databaseName, false);
|
setWebStatus(databaseName, false);
|
||||||
|
@ -135,7 +137,6 @@ public class AIMedicineTimer {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 告知网页端U3d尚未初始化
|
// 告知网页端U3d尚未初始化
|
||||||
System.out.println("U3d尚未初始化,无法发送连接响应消息");
|
|
||||||
WebSocketSession webSocketSession = webDbSessionMap.get(databaseName);
|
WebSocketSession webSocketSession = webDbSessionMap.get(databaseName);
|
||||||
webSocketSession.sendMessage(new TextMessage("U3d尚未初始化,无法发送连接响应消息".getBytes()));
|
webSocketSession.sendMessage(new TextMessage("U3d尚未初始化,无法发送连接响应消息".getBytes()));
|
||||||
}
|
}
|
||||||
|
@ -143,26 +144,23 @@ public class AIMedicineTimer {
|
||||||
|
|
||||||
public void setWebStatus(String dbName, Boolean status) {
|
public void setWebStatus(String dbName, Boolean status) {
|
||||||
WebSocketSession webSocketSession = webDbSessionMap.get(dbName);
|
WebSocketSession webSocketSession = webDbSessionMap.get(dbName);
|
||||||
webSessionStatusMap.put(webSocketSession, status);
|
webStatusMap.put(webSocketSession, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getWebConnectionStatus(String dbName) {
|
public boolean getWebConnectionStatus(String dbName) {
|
||||||
return webSessionStatusMap.getOrDefault(webDbSessionMap.get(dbName),false);
|
return webStatusMap.getOrDefault(webDbSessionMap.get(dbName),false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WebSocketSession getWebSession(String databaseName) {
|
public WebSocketSession getWebSession(String databaseName) {
|
||||||
webDbSessionMap.forEach((key, value) -> {
|
|
||||||
System.out.println("key = " + key + ", value = " + value);
|
|
||||||
});
|
|
||||||
return webDbSessionMap.getOrDefault(databaseName, null);
|
return webDbSessionMap.getOrDefault(databaseName, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initWeb(String databaseName, WebSocketSession session, boolean b) {
|
public void initWeb(String databaseName, WebSocketSession session) {
|
||||||
webDbSessionMap.put(databaseName, session);
|
webDbSessionMap.put(databaseName, session);
|
||||||
webSessionStatusMap.put(session, false);
|
webStatusMap.put(session, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initUnity(String databaseName, WebSocketSession session, WebSocketSession session1) {
|
public void initUnity(String databaseName, WebSocketSession session) {
|
||||||
u3DDbSessionMap.put(databaseName, session);
|
u3DDbSessionMap.put(databaseName, session);
|
||||||
u3DStatusMap.put(session, false);
|
u3DStatusMap.put(session, false);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +171,7 @@ public class AIMedicineTimer {
|
||||||
|
|
||||||
public void closeConnection(WebSocketSession session) {
|
public void closeConnection(WebSocketSession session) {
|
||||||
webDbSessionMap.values().remove(session);
|
webDbSessionMap.values().remove(session);
|
||||||
webSessionStatusMap.remove(session);
|
webStatusMap.remove(session);
|
||||||
u3DDbSessionMap.values().remove(session);
|
u3DDbSessionMap.values().remove(session);
|
||||||
u3DStatusMap.remove(session);
|
u3DStatusMap.remove(session);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,16 +83,9 @@ public class VitalSignTimerWS {
|
||||||
private final RevulsionService revulsionService;
|
private final RevulsionService revulsionService;
|
||||||
|
|
||||||
public void createAndSendWSMessageMongo(String database, String username, WebSocketSession session) {
|
public void createAndSendWSMessageMongo(String database, String username, WebSocketSession session) {
|
||||||
|
|
||||||
for (String s : masterControlMap.keySet()) {
|
|
||||||
System.out.println("s = " + s + " masterControlMap.get(s) = " + masterControlMap.get(s));
|
|
||||||
}
|
|
||||||
// synchronized (this) {
|
|
||||||
if (!masterControlMap.containsKey(database)) {
|
if (!masterControlMap.containsKey(database)) {
|
||||||
masterControlMap.put(database, username);
|
masterControlMap.put(database, username);
|
||||||
}
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
String sessionId = session.getId();
|
String sessionId = session.getId();
|
||||||
|
|
||||||
TimerTask task = timerTaskMap.get(sessionId);
|
TimerTask task = timerTaskMap.get(sessionId);
|
||||||
|
@ -232,13 +225,14 @@ public class VitalSignTimerWS {
|
||||||
if (!userDatabaseSessionMap.containsKey(database)) {
|
if (!userDatabaseSessionMap.containsKey(database)) {
|
||||||
userDatabaseSessionMap.put(database, session.getId());
|
userDatabaseSessionMap.put(database, session.getId());
|
||||||
}
|
}
|
||||||
|
// machineDatabaseSessionMap.containsKey(database)
|
||||||
if (machineDatabaseSessionMap.containsKey(database)) {
|
if (machineDatabaseSessionMap.containsKey(database)) {
|
||||||
String sessionId = machineDatabaseSessionMap.get(database);
|
String sessionId = machineDatabaseSessionMap.get(database);
|
||||||
WebSocketSession machineSession = machineSessionMap.get(sessionId);
|
WebSocketSession machineSession = machineSessionMap.get(sessionId);
|
||||||
if (machineSession != null) {
|
if (machineSession != null) {
|
||||||
result.put(medicine, value);
|
result.put(medicine, value);
|
||||||
result.put("flag", flag);
|
result.put("flag", flag);
|
||||||
result.put("msgType", "msg");
|
result.put("msgType", "addMedicine");
|
||||||
machineSession.sendMessage(new TextMessage(result.toJSONString().getBytes()));
|
machineSession.sendMessage(new TextMessage(result.toJSONString().getBytes()));
|
||||||
} else {
|
} else {
|
||||||
result.put("flag", flag);
|
result.put("flag", flag);
|
||||||
|
@ -267,7 +261,7 @@ public class VitalSignTimerWS {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void setMachineSessionMap(WebSocketSession session) {
|
public synchronized void setMachineSessionMap(WebSocketSession session) {
|
||||||
machineSessionMap.put(session.getId(), session);
|
// machineSessionMap.put(session.getId(), session);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeMachineSessionMap(WebSocketSession session) {
|
public void removeMachineSessionMap(WebSocketSession session) {
|
||||||
|
@ -331,4 +325,13 @@ public class VitalSignTimerWS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initUnity(String databaseName, WebSocketSession session) {
|
||||||
|
machineDatabaseSessionMap.put(databaseName, session.getId());
|
||||||
|
machineSessionMap.put(session.getId(), session);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initWeb(String databaseName, WebSocketSession session) {
|
||||||
|
userDatabaseSessionMap.put(databaseName, session.getId());
|
||||||
|
userSessionMap.put(session.getId(), session);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,6 @@ package com.rax.vital.util;
|
||||||
|
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
|
||||||
public class DatabaseNameUtil {
|
public class DatabaseNameUtil {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user