From 815b3d4403661fec3744444b70732bdf56a24139 Mon Sep 17 00:00:00 2001 From: yy <2@2.com> Date: Fri, 31 May 2024 12:48:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E5=91=BD=E4=BD=93=E5=BE=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/common-bom/pom.xml | 5 - pom.xml | 1 - upms/upms-biz/pom.xml | 17 ++- .../com/rax/vital/config/WebSocketConfig.java | 0 .../vital/config/WebSocketStompConfig.java | 0 .../vital/datasource/CustomDataSource.java | 0 .../rax/vital/datasource/MongoDBSource.java | 1 - .../com/rax/vital/datasource/MySQLSource.java | 0 .../rax/vital/handler/AddMedicineHandler.java | 0 .../com/rax/vital/handler/ChatHandler.java | 0 .../vital/handler/MachineFeedbackHandler.java | 0 .../rax/vital/handler/MedicineHandler.java | 1 - .../handler/mysql/AddMedicineHandler.java | 45 +++++--- .../rax/vital/handler/mysql/ChatHandler.java | 94 ++++++++-------- .../handler/mysql/MachineFeedbackHandler.java | 41 ++++--- .../vital/handler/mysql/MedicineHandler.java | 94 ++++++++-------- .../interceptor/WSChannelInterceptor.java | 0 .../interceptor/WebSocketInterceptors.java | 0 .../medicine/controller/ChatController.java | 2 - .../controller/MedicineController.java | 0 .../rax/vital/medicine/dto/MedicineDTO.java | 0 .../rax/vital/medicine/entity/AIMedicine.java | 0 .../vital/medicine/entity/DoctorMedicine.java | 0 .../rax/vital/medicine/entity/Revulsion.java | 0 .../medicine/mapper/AIMedicineMapper.java | 0 .../medicine/mapper/DoctorMedicineMapper.java | 0 .../medicine/service/AIMedicineService.java | 1 - .../vital/medicine/service/ChatService.java | 0 .../service/DoctorMedicineService.java | 2 - .../vital/medicine/service/FlagService.java | 1 - .../medicine/service/RevulsionService.java | 0 .../medicine/service/VitalSignsService.java | 1 - .../service/impl/AIMedicineServiceImpl.java | 29 ++++- .../service/impl/ChatServiceImpl.java | 104 +++++++++--------- .../impl/DoctorMedicineServiceImpl.java | 3 - .../service/impl/FlagServiceImpl.java | 0 .../service/impl/RevulsionServiceImpl.java | 0 .../service/impl/VitalSignServiceImpl.java | 0 .../com/rax/vital/medicine/vo/MedicineVO.java | 0 .../com/rax/vital/timer/VitalSignTimer.java | 1 - .../com/rax/vital/timer/VitalSignTimerWS.java | 16 ++- .../com/rax/vital/util/DatabaseNameUtil.java | 4 +- .../com/rax/vital/util/GetHttpParamUtil.java | 0 vital-signs/pom.xml | 64 ----------- 44 files changed, 247 insertions(+), 280 deletions(-) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/config/WebSocketConfig.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/config/WebSocketStompConfig.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/datasource/CustomDataSource.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/datasource/MongoDBSource.java (99%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/datasource/MySQLSource.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/AddMedicineHandler.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/ChatHandler.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/MedicineHandler.java (98%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java (73%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java (54%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java (71%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java (54%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/interceptor/WSChannelInterceptor.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/interceptor/WebSocketInterceptors.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/controller/ChatController.java (96%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/controller/MedicineController.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/dto/MedicineDTO.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/entity/AIMedicine.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/entity/DoctorMedicine.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/entity/Revulsion.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/mapper/AIMedicineMapper.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/mapper/DoctorMedicineMapper.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java (92%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/ChatService.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java (75%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/FlagService.java (92%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/RevulsionService.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java (96%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java (72%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java (79%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java (95%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/FlagServiceImpl.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/RevulsionServiceImpl.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/service/impl/VitalSignServiceImpl.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/medicine/vo/MedicineVO.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/timer/VitalSignTimer.java (99%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java (95%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/util/DatabaseNameUtil.java (100%) rename {vital-signs => upms/upms-biz}/src/main/java/com/rax/vital/util/GetHttpParamUtil.java (100%) delete mode 100644 vital-signs/pom.xml diff --git a/common/common-bom/pom.xml b/common/common-bom/pom.xml index 48a7513..4486b53 100644 --- a/common/common-bom/pom.xml +++ b/common/common-bom/pom.xml @@ -107,11 +107,6 @@ quartz ${common.version} - - com.rax - vital-signs - ${common.version} - com.rax daily-plan diff --git a/pom.xml b/pom.xml index 70c0aaa..055ab34 100644 --- a/pom.xml +++ b/pom.xml @@ -99,7 +99,6 @@ common - vital-signs daily-plan diff --git a/upms/upms-biz/pom.xml b/upms/upms-biz/pom.xml index 8eb51bf..84ad3f1 100644 --- a/upms/upms-biz/pom.xml +++ b/upms/upms-biz/pom.xml @@ -50,10 +50,6 @@ com.rax common-log - - com.rax - vital-signs - com.rax daily-plan @@ -96,6 +92,19 @@ org.springframework.boot spring-boot-starter-data-mongodb + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.security + spring-security-messaging + + + com.alibaba + druid-spring-boot-starter + 1.2.21 + diff --git a/vital-signs/src/main/java/com/rax/vital/config/WebSocketConfig.java b/upms/upms-biz/src/main/java/com/rax/vital/config/WebSocketConfig.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/config/WebSocketConfig.java rename to upms/upms-biz/src/main/java/com/rax/vital/config/WebSocketConfig.java diff --git a/vital-signs/src/main/java/com/rax/vital/config/WebSocketStompConfig.java b/upms/upms-biz/src/main/java/com/rax/vital/config/WebSocketStompConfig.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/config/WebSocketStompConfig.java rename to upms/upms-biz/src/main/java/com/rax/vital/config/WebSocketStompConfig.java diff --git a/vital-signs/src/main/java/com/rax/vital/datasource/CustomDataSource.java b/upms/upms-biz/src/main/java/com/rax/vital/datasource/CustomDataSource.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/datasource/CustomDataSource.java rename to upms/upms-biz/src/main/java/com/rax/vital/datasource/CustomDataSource.java diff --git a/vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java b/upms/upms-biz/src/main/java/com/rax/vital/datasource/MongoDBSource.java similarity index 99% rename from vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java rename to upms/upms-biz/src/main/java/com/rax/vital/datasource/MongoDBSource.java index ae5edb2..b82cdac 100644 --- a/vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/datasource/MongoDBSource.java @@ -4,7 +4,6 @@ import com.mongodb.ConnectionString; import com.mongodb.MongoClientSettings; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; -import lombok.Getter; import org.springframework.data.mongodb.SpringDataMongoDB; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory; diff --git a/vital-signs/src/main/java/com/rax/vital/datasource/MySQLSource.java b/upms/upms-biz/src/main/java/com/rax/vital/datasource/MySQLSource.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/datasource/MySQLSource.java rename to upms/upms-biz/src/main/java/com/rax/vital/datasource/MySQLSource.java diff --git a/vital-signs/src/main/java/com/rax/vital/handler/AddMedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/handler/AddMedicineHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/AddMedicineHandler.java diff --git a/vital-signs/src/main/java/com/rax/vital/handler/ChatHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/ChatHandler.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/handler/ChatHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/ChatHandler.java diff --git a/vital-signs/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/MachineFeedbackHandler.java diff --git a/vital-signs/src/main/java/com/rax/vital/handler/MedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java similarity index 98% rename from vital-signs/src/main/java/com/rax/vital/handler/MedicineHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java index 9b79513..2e65cbb 100644 --- a/vital-signs/src/main/java/com/rax/vital/handler/MedicineHandler.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/MedicineHandler.java @@ -1,7 +1,6 @@ package com.rax.vital.handler; import com.alibaba.fastjson.JSONObject; -import com.rax.vital.timer.VitalSignTimer; import com.rax.vital.timer.VitalSignTimerWS; import com.rax.vital.util.DatabaseNameUtil; import com.rax.vital.util.GetHttpParamUtil; diff --git a/vital-signs/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java similarity index 73% rename from vital-signs/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java index 8e0cf70..c9627d9 100644 --- a/vital-signs/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/AddMedicineHandler.java @@ -2,7 +2,6 @@ package com.rax.vital.handler.mysql; import com.alibaba.fastjson.JSONObject; import com.rax.vital.timer.VitalSignTimerWS; -import com.rax.vital.util.DatabaseNameUtil; import com.rax.vital.util.GetHttpParamUtil; import jakarta.annotation.Resource; import org.springframework.security.oauth2.server.authorization.OAuth2Authorization; @@ -48,25 +47,33 @@ public class AddMedicineHandler implements WebSocketHandler { OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN); String username = authorization.getPrincipalName(); - if (message.getPayload() instanceof String) { - JSONObject jsonObject = JSONObject.parseObject((String) message.getPayload()); - // 病人名 - String patientName = jsonObject.getString("patientName"); - // 病人身份证 - String idNum = jsonObject.getString("idNum"); - // yyyyMMdd - String date = jsonObject.getString("date"); - String databaseName = patientName + idNum; - vitalSignTimerWS.changeWSAIFlag(databaseName, username, session, jsonObject.getString("flag"), - jsonObject.getString("medicine"), jsonObject.getString("value")); - } else { - session.sendMessage(new PongMessage()); - pingTime--; + String payload = (String) message.getPayload(); + JSONObject jsonObject = JSONObject.parseObject(payload); + synchronized (payload) { + if ("heartbeat".equals(jsonObject.getString("msgType"))) { + jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); + if (pingTime > 0) { + pingTime--; + } + } else { + pingTime = 0; + // 病人名 + String patientName = jsonObject.getString("patientName"); + // 病人身份证 + String idNum = jsonObject.getString("idNum"); + // yyyyMMdd + String date = jsonObject.getString("date"); + String databaseName = patientName + idNum; + vitalSignTimerWS.changeWSAIFlag(databaseName, username, session, jsonObject.getString("flag"), + jsonObject.getString("medicine"), jsonObject.getString("value")); + } } } @Override - public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + public void handleTransportError(WebSocketSession session, Throwable exception) { if (heartbeatTask != null) { heartbeatTask.cancel(true); } @@ -77,7 +84,7 @@ public class AddMedicineHandler implements WebSocketHandler { } @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { + public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) { vitalSignTimerWS.removeWSAIFlagSession(session); System.out.println(this.getClass().getName() + " Connection closed:" + closeStatus.getReason()); if (heartbeatTask != null) { @@ -105,7 +112,9 @@ public class AddMedicineHandler implements WebSocketHandler { } vitalSignTimerWS.removeWSAIFlagSession(session); } else { - session.sendMessage(new PingMessage()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); pingTime++; } } catch (IOException e) { diff --git a/vital-signs/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java similarity index 54% rename from vital-signs/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java index 5b6cc30..2623c81 100644 --- a/vital-signs/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/ChatHandler.java @@ -9,13 +9,11 @@ import org.springframework.security.oauth2.server.authorization.OAuth2Authorizat import org.springframework.security.oauth2.server.authorization.OAuth2TokenType; import org.springframework.web.socket.*; -import java.io.IOException; import java.net.URLDecoder; import java.util.Map; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.ConcurrentHashMap; public class ChatHandler implements WebSocketHandler { @Resource @@ -24,15 +22,11 @@ public class ChatHandler implements WebSocketHandler { @Resource private ChatService chatService; - private static final long HEARTBEAT_INTERVAL = 30; // 心跳间隔秒数 - private ScheduledExecutorService scheduler; - private ScheduledFuture heartbeatTask; - private int pingTime = 0; + private Map timerTaskMap = new ConcurrentHashMap(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { - scheduler = Executors.newScheduledThreadPool(1); - heartbeatTask = scheduler.scheduleAtFixedRate(() -> sendPing(session), 0, HEARTBEAT_INTERVAL, TimeUnit.SECONDS); + startHeartbeat(session); } @Override @@ -44,41 +38,31 @@ public class ChatHandler implements WebSocketHandler { if (authorization != null) { String username = authorization.getPrincipalName(); - if (message.getPayload() instanceof String) { - String payload = (String) message.getPayload(); - JSONObject jsonObject = JSONObject.parseObject(payload); + String payload = (String) message.getPayload(); + JSONObject jsonObject = JSONObject.parseObject(payload); + + if ("heartbeat".equals(jsonObject.getString("msgType"))) { +// session.sendMessage(new TextMessage("")); + } else { String patientName = jsonObject.getString("patientName"); String idNum = jsonObject.getString("idNum"); String date = jsonObject.getString("date"); // 消息内容 String msg = jsonObject.getString("msg"); chatService.sendMessageMysql(username, patientName, idNum, date, session, msg); - } else { - session.sendMessage(new PongMessage()); - pingTime--; } } } @Override - public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { - if (heartbeatTask != null) { - heartbeatTask.cancel(true); - } - if (scheduler != null) { - scheduler.shutdown(); - } - chatService.stopTask(session.getId()); + public void handleTransportError(WebSocketSession session, Throwable exception) { + System.out.println("Error: " + exception.getMessage()); } @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { - if (heartbeatTask != null) { - heartbeatTask.cancel(true); - } - if (scheduler != null) { - scheduler.shutdown(); - } + public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) { + System.out.println("CloseStatus: " + closeStatus.getReason() + closeStatus.getCode()); + stopHeartbeat(session); chatService.stopTask(session.getId()); } @@ -87,24 +71,36 @@ public class ChatHandler implements WebSocketHandler { return false; } - private void sendPing(WebSocketSession session) { - try { - if (pingTime > 3) { - session.close(); - if (heartbeatTask != null) { - heartbeatTask.cancel(true); + private void startHeartbeat(WebSocketSession session) { + if (!timerTaskMap.containsKey(session.getId())) { + TimerTask timerTask = new TimerTask() { + @Override + public void run() { + try { + if (session.isOpen()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); + } else { + stopHeartbeat(session); + chatService.stopTask(session.getId()); + session.close(); + } + } catch (Exception e) { + e.printStackTrace(); + stopHeartbeat(session); + } } - if (scheduler != null) { - scheduler.shutdown(); - } - chatService.stopTask(session.getId()); - } else { - session.sendMessage(new PingMessage()); - pingTime++; - } - } catch (IOException e) { - chatService.stopTask(session.getId()); - e.printStackTrace(); + }; + // 定时任务,设置1秒 + Timer timer = new Timer(); + timer.schedule(timerTask, 0, 1000); + timerTaskMap.put(session.getId(), timerTask); } } + + private void stopHeartbeat(WebSocketSession session) { + TimerTask timerTask = timerTaskMap.get(session.getId()); + timerTask.cancel(); + } } diff --git a/vital-signs/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java similarity index 71% rename from vital-signs/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java index c91fbd7..5c564c4 100644 --- a/vital-signs/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MachineFeedbackHandler.java @@ -2,7 +2,6 @@ package com.rax.vital.handler.mysql; import com.alibaba.fastjson.JSONObject; import com.rax.vital.timer.VitalSignTimerWS; -import com.rax.vital.util.DatabaseNameUtil; import jakarta.annotation.Resource; import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService; import org.springframework.web.socket.*; @@ -37,21 +36,29 @@ public class MachineFeedbackHandler implements WebSocketHandler { @Override public void handleMessage(WebSocketSession session, WebSocketMessage message) throws Exception { - if (message.getPayload() instanceof String) { - JSONObject jsonObject = JSONObject.parseObject((String) message.getPayload()); - // 病人名 - String patientName = jsonObject.getString("patientName"); - // 病人身份证住院号 - String idNum = jsonObject.getString("idNum"); - // yyyyMMdd - String date = jsonObject.getString("date"); - String databaseName = patientName + idNum; - String code = jsonObject.getString("code"); + String payload = (String) message.getPayload(); + JSONObject jsonObject = JSONObject.parseObject(payload); + synchronized (payload) { + if ("heartbeat".equals(jsonObject.getString("msgType"))) { + jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); + if (pingTime > 0) { + pingTime--; + } + } else { + pingTime = 0; + // 病人名 + String patientName = jsonObject.getString("patientName"); + // 病人身份证住院号 + String idNum = jsonObject.getString("idNum"); + // yyyyMMdd + String date = jsonObject.getString("date"); + String databaseName = patientName + idNum; + String code = jsonObject.getString("code"); - vitalSignTimerWS.sendMachineFlag(databaseName, code, session); - } else { - session.sendMessage(new PongMessage()); - pingTime--; + vitalSignTimerWS.sendMachineFlag(databaseName, code, session); + } } } @@ -95,7 +102,9 @@ public class MachineFeedbackHandler implements WebSocketHandler { } vitalSignTimerWS.removeMachineSessionMap(session); } else { - session.sendMessage(new PingMessage()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); pingTime++; } } catch (IOException e) { diff --git a/vital-signs/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java similarity index 54% rename from vital-signs/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java rename to upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java index 216b6a6..e6426eb 100644 --- a/vital-signs/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/handler/mysql/MedicineHandler.java @@ -2,7 +2,6 @@ package com.rax.vital.handler.mysql; import com.alibaba.fastjson.JSONObject; import com.rax.vital.timer.VitalSignTimerWS; -import com.rax.vital.util.DatabaseNameUtil; import com.rax.vital.util.GetHttpParamUtil; import jakarta.annotation.Resource; import org.springframework.security.oauth2.server.authorization.OAuth2Authorization; @@ -13,10 +12,9 @@ import org.springframework.web.socket.*; import java.io.IOException; import java.net.URLDecoder; import java.util.Map; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.*; public class MedicineHandler implements WebSocketHandler { @@ -26,15 +24,11 @@ public class MedicineHandler implements WebSocketHandler { @Resource private OAuth2AuthorizationService authorizationService; - private static final long HEARTBEAT_INTERVAL = 30; // 心跳间隔秒数 - private ScheduledExecutorService scheduler; - private ScheduledFuture heartbeatTask; - private int pingTime = 0; + private Map timerTaskMap = new ConcurrentHashMap(); @Override - public void afterConnectionEstablished(WebSocketSession session) throws Exception { - scheduler = Executors.newScheduledThreadPool(1); - heartbeatTask = scheduler.scheduleAtFixedRate(() -> sendPing(session), 0, HEARTBEAT_INTERVAL, TimeUnit.SECONDS); + public void afterConnectionEstablished(WebSocketSession session) { + startHeartbeat(session); } @Override @@ -45,40 +39,28 @@ public class MedicineHandler implements WebSocketHandler { OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN); String username = authorization.getPrincipalName(); - if (message.getPayload() instanceof String) { - String payload = (String) message.getPayload(); - JSONObject jsonObject = JSONObject.parseObject(payload); + String payload = (String) message.getPayload(); + JSONObject jsonObject = JSONObject.parseObject(payload); + + if ("heartbeat".equals(jsonObject.getString("msgType"))) { +// session.sendMessage(new TextMessage("")); + } else { String patientName = jsonObject.getString("patientName"); String idNum = jsonObject.getString("idNum"); String databaseName = patientName + idNum; vitalSignTimerWS.createAndSendMessageMySQL(databaseName, username, session); - } else { - session.sendMessage(new PongMessage()); - pingTime--; } } @Override - public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + public void handleTransportError(WebSocketSession session, Throwable exception) { System.out.println("Error: " + exception.getMessage()); - if (heartbeatTask != null) { - heartbeatTask.cancel(true); - } - if (scheduler != null) { - scheduler.shutdown(); - } - vitalSignTimerWS.stopTimerTask(session.getId()); } @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { + public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) { System.out.println("MedicineHandler Connection closed:" + closeStatus.getReason()); - if (heartbeatTask != null) { - heartbeatTask.cancel(true); - } - if (scheduler != null) { - scheduler.shutdown(); - } + stopHeartbeat(session); vitalSignTimerWS.stopTimerTask(session.getId()); } @@ -87,24 +69,36 @@ public class MedicineHandler implements WebSocketHandler { return false; } - private void sendPing(WebSocketSession session) { - try { - if (pingTime > 3) { - session.close(); - if (heartbeatTask != null) { - heartbeatTask.cancel(true); + private void startHeartbeat(WebSocketSession session) { + if (!timerTaskMap.containsKey(session.getId())) { + TimerTask timerTask = new TimerTask() { + @Override + public void run() { + try { + if (session.isOpen()) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msgType", "heartbeat"); + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); + } else { + session.close(); + stopHeartbeat(session); + vitalSignTimerWS.stopTimerTask(session.getId()); + } + } catch (Exception e) { + e.printStackTrace(); + stopHeartbeat(session); + } } - if (scheduler != null) { - scheduler.shutdown(); - } - vitalSignTimerWS.stopTimerTask(session.getId()); - } else { - session.sendMessage(new PingMessage()); - pingTime++; - } - } catch (IOException e) { - vitalSignTimerWS.stopTimerTask(session.getId()); - e.printStackTrace(); + }; + // 定时任务,设置1秒 + Timer timer = new Timer(); + timer.schedule(timerTask, 0, 1000); + timerTaskMap.put(session.getId(), timerTask); } } + + private void stopHeartbeat(WebSocketSession session) { + TimerTask timerTask = timerTaskMap.get(session.getId()); + timerTask.cancel(); + } } diff --git a/vital-signs/src/main/java/com/rax/vital/interceptor/WSChannelInterceptor.java b/upms/upms-biz/src/main/java/com/rax/vital/interceptor/WSChannelInterceptor.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/interceptor/WSChannelInterceptor.java rename to upms/upms-biz/src/main/java/com/rax/vital/interceptor/WSChannelInterceptor.java diff --git a/vital-signs/src/main/java/com/rax/vital/interceptor/WebSocketInterceptors.java b/upms/upms-biz/src/main/java/com/rax/vital/interceptor/WebSocketInterceptors.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/interceptor/WebSocketInterceptors.java rename to upms/upms-biz/src/main/java/com/rax/vital/interceptor/WebSocketInterceptors.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/controller/ChatController.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/ChatController.java similarity index 96% rename from vital-signs/src/main/java/com/rax/vital/medicine/controller/ChatController.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/ChatController.java index ba40d17..0569331 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/controller/ChatController.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/ChatController.java @@ -2,7 +2,6 @@ package com.rax.vital.medicine.controller; import com.alibaba.fastjson.JSONObject; import com.rax.vital.medicine.service.ChatService; -import com.rax.vital.util.DatabaseNameUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.handler.annotation.MessageMapping; @@ -14,7 +13,6 @@ import org.springframework.stereotype.Controller; import org.springframework.util.LinkedMultiValueMap; import java.util.ArrayList; -import java.util.HashMap; @Controller public class ChatController { diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/controller/MedicineController.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/dto/MedicineDTO.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/dto/MedicineDTO.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/dto/MedicineDTO.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/dto/MedicineDTO.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/entity/AIMedicine.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/AIMedicine.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/entity/AIMedicine.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/AIMedicine.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/entity/DoctorMedicine.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/DoctorMedicine.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/entity/DoctorMedicine.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/DoctorMedicine.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/entity/Revulsion.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/Revulsion.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/entity/Revulsion.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/entity/Revulsion.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/mapper/AIMedicineMapper.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/mapper/AIMedicineMapper.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/mapper/AIMedicineMapper.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/mapper/AIMedicineMapper.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/mapper/DoctorMedicineMapper.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/mapper/DoctorMedicineMapper.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/mapper/DoctorMedicineMapper.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/mapper/DoctorMedicineMapper.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java similarity index 92% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java index 4dac7f0..8105aa9 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/AIMedicineService.java @@ -1,6 +1,5 @@ package com.rax.vital.medicine.service; -import com.rax.common.core.util.R; import org.springframework.data.mongodb.core.MongoTemplate; import java.sql.Connection; diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/ChatService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/ChatService.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/ChatService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/ChatService.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java similarity index 75% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java index 9211166..241dc4b 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/DoctorMedicineService.java @@ -1,7 +1,5 @@ package com.rax.vital.medicine.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.rax.vital.medicine.entity.DoctorMedicine; import org.springframework.data.mongodb.core.MongoTemplate; import java.sql.Connection; diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/FlagService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/FlagService.java similarity index 92% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/FlagService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/FlagService.java index 503f526..9c65649 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/FlagService.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/FlagService.java @@ -3,7 +3,6 @@ package com.rax.vital.medicine.service; import org.springframework.data.mongodb.core.MongoTemplate; import java.sql.Connection; -import java.util.List; import java.util.Map; public interface FlagService { diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/RevulsionService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/RevulsionService.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/RevulsionService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/RevulsionService.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java similarity index 96% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java index 10170dc..aac38f0 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/VitalSignsService.java @@ -2,7 +2,6 @@ package com.rax.vital.medicine.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.rax.common.core.util.R; -import com.rax.vital.datasource.MongoDBSource; import org.springframework.data.mongodb.core.MongoTemplate; import java.sql.Connection; diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java similarity index 72% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java index 8f7b371..7bb8f21 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/AIMedicineServiceImpl.java @@ -55,7 +55,7 @@ public class AIMedicineServiceImpl implements AIMedicineService { List medicineList = new ArrayList<>(); try { Statement statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery("SELECT id, phase, `丙泊酚`, `舒芬太尼`, `瑞芬太尼`, `顺阿曲库胺`, `尼卡地平`, `艾司洛尔`, `麻黄素`, `阿托品`, time FROM `aimedicinetable` ORDER BY time DESC LIMIT 1;"); + /*ResultSet resultSet = statement.executeQuery("SELECT id, phase, `丙泊酚`, `舒芬太尼`, `瑞芬太尼`, `顺阿曲库胺`, `尼卡地平`, `艾司洛尔`, `麻黄素`, `阿托品`, time FROM `aimedicinetable` ORDER BY time DESC LIMIT 1;"); Map medicine = new HashMap(); while (resultSet.next()) { medicine.put("id", resultSet.getString("id")); @@ -84,8 +84,33 @@ public class AIMedicineServiceImpl implements AIMedicineService { medicine.put("艾司洛尔sum", sumSet.getString("艾司洛尔sum")); medicine.put("麻黄素sum", sumSet.getString("麻黄素sum")); medicine.put("阿托品sum", sumSet.getString("阿托品sum")); - } + }*/ + String sql = " SELECT " + + "rate_1, cumu_1, rate_2, cumu_2,rate_3, cumu_3,rate_4, cumu_4, rate_5, cumu_5,rate_6, cumu_6,rate_7, cumu_7,rate_8, cumu_8, time " + + " FROM fktable " + + " ORDER BY time DESC LIMIT 1; "; + ResultSet resultSet = statement.executeQuery(sql); + Map medicine = new HashMap(); + while (resultSet.next()) { + medicine.put("丙泊酚", resultSet.getString("rate_1")); + medicine.put("丙泊酚sum", resultSet.getString("cumu_1")); + medicine.put("舒芬太尼", resultSet.getString("rate_2")); + medicine.put("舒芬太尼sum", resultSet.getString("cumu_2")); + medicine.put("瑞芬太尼", resultSet.getString("rate_3")); + medicine.put("瑞芬太尼sum", resultSet.getString("cumu_3")); + medicine.put("顺阿曲库胺", resultSet.getString("rate_4")); + medicine.put("顺阿曲库胺sum", resultSet.getString("cumu_4")); + medicine.put("尼卡地平", resultSet.getString("rate_5")); + medicine.put("尼卡地平sum", resultSet.getString("cumu_5")); + medicine.put("艾司洛尔", resultSet.getString("rate_6")); + medicine.put("艾司洛尔sum", resultSet.getString("cumu_6")); + medicine.put("麻黄素", resultSet.getString("rate_7")); + medicine.put("麻黄素sum", resultSet.getString("cumu_7")); + medicine.put("阿托品", resultSet.getString("rate_8")); + medicine.put("阿托品sum", resultSet.getString("cumu_8")); + medicine.put("Time", resultSet.getString("time")); + } medicineList.add(medicine); } catch (SQLException e) { throw new RuntimeException(e); diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java similarity index 79% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java index 572c836..58add7e 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/ChatServiceImpl.java @@ -2,11 +2,9 @@ package com.rax.vital.medicine.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; -import com.rax.admin.api.dto.UserDTO; -import com.rax.admin.api.dto.UserInfo; -import com.rax.admin.api.feign.RemoteUserService; -import com.rax.common.core.constant.SecurityConstants; -import com.rax.common.core.util.R; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.rax.admin.api.entity.SysUser; +import com.rax.admin.service.SysUserService; import com.rax.vital.datasource.CustomDataSource; import com.rax.vital.datasource.MongoDBSource; import com.rax.vital.datasource.MySQLSource; @@ -24,9 +22,14 @@ import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import java.io.IOException; -import java.sql.*; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; @RefreshScope @Service @@ -36,13 +39,13 @@ public class ChatServiceImpl implements ChatService { private SimpMessagingTemplate simpMessagingTemplate; @Autowired - private RemoteUserService remoteUserService; + private SysUserService SysUserService; - private static final Map datasourceMap = new HashMap<>(); + private static final Map datasourceMap = new ConcurrentHashMap<>(); - private static final Map> databaseSessionMap = new HashMap<>(); + private static final Map> databaseSessionMap = new ConcurrentHashMap<>(); - private static final Map sessionDatabaseMap = new HashMap<>(); + private static final Map sessionDatabaseMap = new ConcurrentHashMap<>(); // MongoDB的地址 @Value("${vital-sign.mongodb.host}") @@ -78,10 +81,8 @@ public class ChatServiceImpl implements ChatService { mongoDBSource.open(); } - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(username); - R info = remoteUserService.info(userDTO, SecurityConstants.FROM_IN); - UserInfo userInfo = info.getData(); + + SysUser sysUser = SysUserService.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); Map param = new HashMap(); @@ -93,7 +94,7 @@ public class ChatServiceImpl implements ChatService { document.put("create_time", now); param.put("createTime", now); document.put("create_user", username); - String name = userInfo.getSysUser().getName(); + String name = sysUser.getName(); document.put("create_name", name); param.put("createName", name); document.put("deleted", 0); @@ -127,10 +128,7 @@ public class ChatServiceImpl implements ChatService { } } - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(username); - R info = remoteUserService.info(userDTO, SecurityConstants.FROM_IN); - UserInfo userInfo = info.getData(); + SysUser sysUser = SysUserService.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); if (StringUtils.hasText(msg)) { JSONObject param = new JSONObject(); @@ -142,12 +140,13 @@ public class ChatServiceImpl implements ChatService { document.put("create_time", now); param.put("createTime", now); document.put("create_user", username); - String name = userInfo.getSysUser().getName(); + String name = sysUser.getName(); document.put("create_name", name); param.put("createName", name); document.put("deleted", 0); document.put("revoked", 0); template.insert(document, "t_chat"); + param.put("msgType", "msg"); Map sessionMap = databaseSessionMap.get(databaseName); for (Map.Entry entry : sessionMap.entrySet()) { @@ -161,42 +160,40 @@ public class ChatServiceImpl implements ChatService { public void sendMessageMysql(String username, String patientName, String idNum, String date, WebSocketSession session, String msg) { CustomDataSource dataSource = datasourceMap.get(session.getId()); String databaseName = patientName + idNum; - synchronized (username) { - if (dataSource == null) { - dataSource = new MySQLSource(mysqlHost, mysqlPassword, mysqlUsername, databaseName); - boolean status = dataSource.open(); - if (status) { - datasourceMap.put(session.getId(), dataSource); - sessionDatabaseMap.put(session.getId(), databaseName); - Map sessionMap = databaseSessionMap.get(databaseName); - if (sessionMap == null) { - sessionMap = new HashMap(); - sessionMap.put(session.getId(), session); - databaseSessionMap.put(databaseName, sessionMap); - } else { - if (!sessionMap.containsKey(session.getId())) { - sessionMap.put(session.getId(), session); - } - } + ArrayList history = new ArrayList<>(); + + if (dataSource == null) { + dataSource = new MySQLSource(mysqlHost, mysqlPassword, mysqlUsername, databaseName); + boolean status = dataSource.open(); + if (status) { + datasourceMap.put(session.getId(), dataSource); + sessionDatabaseMap.put(session.getId(), databaseName); + Map sessionMap = databaseSessionMap.get(databaseName); + if (sessionMap == null) { + sessionMap = new HashMap(); + sessionMap.put(session.getId(), session); + databaseSessionMap.put(databaseName, sessionMap); } else { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("status", 1); - jsonObject.put("msg", "数据库未创建, 请重新连接。"); - try { - session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); - session.close(); - } catch (IOException e) { - throw new RuntimeException(e); + if (!sessionMap.containsKey(session.getId())) { + sessionMap.put(session.getId(), session); } - return; } + } else { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("status", 1); + jsonObject.put("msg", "数据库未创建, 请重新连接。"); + jsonObject.put("msgType", "msg"); + try { + session.sendMessage(new TextMessage(jsonObject.toJSONString().getBytes())); + session.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return; } } - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(username); - R info = remoteUserService.info(userDTO, SecurityConstants.FROM_IN); - UserInfo userInfo = info.getData(); + SysUser sysUser = SysUserService.getOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); if (StringUtils.hasText(msg)) { JSONObject param = new JSONObject(); @@ -229,15 +226,16 @@ public class ChatServiceImpl implements ChatService { param.put("createTime", now); preparedStatement.setString(3, username); param.put("createUser", username); - String name = userInfo.getSysUser().getName(); + String name = sysUser.getName(); preparedStatement.setString(4, name); param.put("createName", name); preparedStatement.setInt(5, 0); preparedStatement.setInt(6, 0); + param.put("msgType", "msg"); preparedStatement.execute(); } catch (SQLException e) { - throw new RuntimeException(e); + e.printStackTrace(); } Map sessionMap = databaseSessionMap.get(databaseName); @@ -246,7 +244,7 @@ public class ChatServiceImpl implements ChatService { try { value.sendMessage(new TextMessage(param.toJSONString().getBytes())); } catch (IOException e) { - throw new RuntimeException(e); + e.printStackTrace(); } } } diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java similarity index 95% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java index 3b03d40..1f96ffd 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/DoctorMedicineServiceImpl.java @@ -1,8 +1,5 @@ package com.rax.vital.medicine.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.rax.vital.medicine.entity.DoctorMedicine; -import com.rax.vital.medicine.mapper.DoctorMedicineMapper; import com.rax.vital.medicine.service.DoctorMedicineService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/FlagServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/FlagServiceImpl.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/FlagServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/FlagServiceImpl.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/RevulsionServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/RevulsionServiceImpl.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/RevulsionServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/RevulsionServiceImpl.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/service/impl/VitalSignServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/VitalSignServiceImpl.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/service/impl/VitalSignServiceImpl.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/service/impl/VitalSignServiceImpl.java diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/vo/MedicineVO.java b/upms/upms-biz/src/main/java/com/rax/vital/medicine/vo/MedicineVO.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/medicine/vo/MedicineVO.java rename to upms/upms-biz/src/main/java/com/rax/vital/medicine/vo/MedicineVO.java diff --git a/vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimer.java b/upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimer.java similarity index 99% rename from vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimer.java rename to upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimer.java index b1df6ae..6e59ab3 100644 --- a/vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimer.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimer.java @@ -10,7 +10,6 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Component; -import org.springframework.web.socket.WebSocketSession; import java.sql.Connection; import java.util.*; diff --git a/vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java b/upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java similarity index 95% rename from vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java rename to upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java index 1521150..7c109be 100644 --- a/vital-signs/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/timer/VitalSignTimerWS.java @@ -121,6 +121,7 @@ public class VitalSignTimerWS { jsonObject.put("revulsionList", revulsionList); Map flags = flagService.getFlags(template); jsonObject.put("flags", flags); + jsonObject.put("msgType", "msg"); WebSocketMessage message = new TextMessage(jsonObject.toJSONString().getBytes()); try { @@ -156,10 +157,11 @@ public class VitalSignTimerWS { dataSource = new MySQLSource(mysqlHost, mysqlPassword, mysqlUsername, database); boolean status = dataSource.open(); if (status) { - dataSourceMap.put(database, dataSource); + dataSourceMap.put(sessionId, dataSource); } else { JSONObject jsonObject = new JSONObject(); jsonObject.put("status", 1); + jsonObject.put("msgType", "msg"); jsonObject.put("msg", "数据库未创建, 请重新连接。"); WebSocketMessage message = new TextMessage(jsonObject.toJSONString().getBytes()); try { @@ -182,12 +184,13 @@ public class VitalSignTimerWS { jsonObject.put("vitalSignsList", vitalSignsList); List aiMedicineList = aiMedicineService.getAIMedicine(connection); jsonObject.put("aiMedicineList", aiMedicineList); - List docMedicineList = doctorMedicineService.getDocMedicine(connection); - jsonObject.put("docMedicineList", docMedicineList); +// List docMedicineList = doctorMedicineService.getDocMedicine(connection); +// jsonObject.put("docMedicineList", docMedicineList); List revulsionList = revulsionService.getRevulsionServiceList(connection); jsonObject.put("revulsionList", revulsionList); Map flags = flagService.getFlag(connection); jsonObject.put("flags", flags); + jsonObject.put("msgType", "msg"); WebSocketMessage message = new TextMessage(jsonObject.toJSONString().getBytes()); try { @@ -232,11 +235,13 @@ public class VitalSignTimerWS { if (machineSession != null) { result.put(medicine, value); result.put("flag", flag); + result.put("msgType", "msg"); machineSession.sendMessage(new TextMessage(result.toJSONString().getBytes())); } else { result.put("flag", flag); result.put("msg", "设备端未连接"); result.put("status", 1); + result.put("msgType", "msg"); session.sendMessage(new TextMessage(result.toJSONString().getBytes())); } } else { @@ -244,6 +249,7 @@ public class VitalSignTimerWS { result.put("medicine", medicine); result.put("msg", "设备端未连接"); result.put("status", 1); + result.put("msgType", "msg"); session.sendMessage(new TextMessage(result.toJSONString().getBytes())); } } else { @@ -251,6 +257,7 @@ public class VitalSignTimerWS { result.put("medicine", medicine); result.put("status", 1); result.put("msg", "不是主控人员"); + result.put("msgType", "msg"); session.sendMessage(new TextMessage(result.toJSONString().getBytes())); } } @@ -279,6 +286,7 @@ public class VitalSignTimerWS { JSONObject msg = new JSONObject(); msg.put("status", 1); msg.put("msg", "手术已有设备远程中"); + msg.put("msgType", "msg"); session.sendMessage(new TextMessage(msg.toJSONString().getBytes())); } } else { @@ -294,10 +302,12 @@ public class VitalSignTimerWS { WebSocketSession webSocketSession = userSessionMap.get(userSessionId); result.put("status", code); result.put("msg", ""); + result.put("msgType", "msg"); webSocketSession.sendMessage(new TextMessage(result.toJSONString().getBytes())); } else { result.put("status", 1); result.put("msg", "网站未进行远程"); + result.put("msgType", "msg"); session.sendMessage(new TextMessage(result.toJSONString().getBytes())); } } diff --git a/vital-signs/src/main/java/com/rax/vital/util/DatabaseNameUtil.java b/upms/upms-biz/src/main/java/com/rax/vital/util/DatabaseNameUtil.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/util/DatabaseNameUtil.java rename to upms/upms-biz/src/main/java/com/rax/vital/util/DatabaseNameUtil.java index 2ef52d0..ad72ce9 100644 --- a/vital-signs/src/main/java/com/rax/vital/util/DatabaseNameUtil.java +++ b/upms/upms-biz/src/main/java/com/rax/vital/util/DatabaseNameUtil.java @@ -1,9 +1,9 @@ package com.rax.vital.util; -import java.util.Base64; - import org.springframework.util.StringUtils; +import java.util.Base64; + public class DatabaseNameUtil { private static final String key = "ruianxing112232323"; diff --git a/vital-signs/src/main/java/com/rax/vital/util/GetHttpParamUtil.java b/upms/upms-biz/src/main/java/com/rax/vital/util/GetHttpParamUtil.java similarity index 100% rename from vital-signs/src/main/java/com/rax/vital/util/GetHttpParamUtil.java rename to upms/upms-biz/src/main/java/com/rax/vital/util/GetHttpParamUtil.java diff --git a/vital-signs/pom.xml b/vital-signs/pom.xml deleted file mode 100644 index 91983a2..0000000 --- a/vital-signs/pom.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - com.rax - rax - 3.7.3 - - - 4.0.0 - - vital-signs - jar - - 病人生命特征和用药模块 - - - - - com.rax - common-swagger - - - com.rax - common-mybatis - - - com.rax - common-security - - - - com.rax - quartz - - - - com.rax - common-log - - - - org.springframework.boot - spring-boot-starter-websocket - - - org.springframework.security - spring-security-messaging - - - org.springframework.boot - spring-boot-starter-data-mongodb - - - com.alibaba - druid-spring-boot-starter - 1.2.21 - - - - - \ No newline at end of file