|
@@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
+import thyyxxk.webserver.entity.inpatient.patient.Patient;
|
|
|
import thyyxxk.webserver.utils.TokenUtil;
|
|
|
|
|
|
import javax.websocket.*;
|
|
|
import javax.websocket.server.PathParam;
|
|
|
import javax.websocket.server.ServerEndpoint;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
@@ -23,12 +26,22 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|
|
public class WebSocketServer {
|
|
|
private static final AtomicInteger ONLINE_COUNT = new AtomicInteger();
|
|
|
private static final ConcurrentHashMap<String, Session> SESSION_MAP = new ConcurrentHashMap<>();
|
|
|
+ private static final ConcurrentHashMap<String, Session> EMR_MAP = new ConcurrentHashMap<>();
|
|
|
+ private static final AtomicInteger EMR_COUNT = new AtomicInteger();
|
|
|
|
|
|
@OnOpen
|
|
|
public void onOpen(Session session, @PathParam("sid") String sid) {
|
|
|
if ("update".equals(sid)) {
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ if (sid.endsWith("Emr")) {
|
|
|
+ EMR_MAP.put(sid, session);
|
|
|
+ EMR_COUNT.incrementAndGet();
|
|
|
+ log.info("有新的电子病历连接加入:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (!sid.endsWith("Screen")) {
|
|
|
SESSION_MAP.forEach((item, index) -> {
|
|
|
if (sid.split("-")[0].equals(item.split("-")[0])) {
|
|
@@ -36,6 +49,7 @@ public class WebSocketServer {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
SESSION_MAP.put(sid, session);
|
|
|
ONLINE_COUNT.incrementAndGet();
|
|
|
log.info("有新连接加入:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
|
|
@@ -43,6 +57,11 @@ public class WebSocketServer {
|
|
|
|
|
|
@OnClose
|
|
|
public void onClose(@PathParam("sid") String sid) {
|
|
|
+ if (sid.endsWith("Emr")) {
|
|
|
+ EMR_MAP.remove(sid);
|
|
|
+ EMR_COUNT.decrementAndGet();
|
|
|
+ return;
|
|
|
+ }
|
|
|
SESSION_MAP.remove(sid);
|
|
|
ONLINE_COUNT.decrementAndGet();
|
|
|
log.info("有一连接关闭:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
|
|
@@ -58,6 +77,16 @@ public class WebSocketServer {
|
|
|
log.error("【session id: " + session.getId() + "】Socket连接发生错误", error);
|
|
|
}
|
|
|
|
|
|
+ public static List<Patient> getEditorUsersByPatNo() {
|
|
|
+ List<Patient> p = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Map.Entry<String, Session> item : EMR_MAP.entrySet()) {
|
|
|
+ log.info("数据:{}", item.getKey());
|
|
|
+ }
|
|
|
+
|
|
|
+ return p;
|
|
|
+ }
|
|
|
+
|
|
|
public static String getSid() {
|
|
|
String token = TokenUtil.getTokenUserId();
|
|
|
for (Map.Entry<String, Session> entry : SESSION_MAP.entrySet()) {
|
|
@@ -69,7 +98,6 @@ public class WebSocketServer {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
public static int sendMessage(String sid, String message) {
|
|
|
Session session = SESSION_MAP.get(sid);
|
|
|
if (null == session) {
|