From f9cf92bd026924760937fcc4cc1fb081507607aa Mon Sep 17 00:00:00 2001 From: tangw Date: Tue, 17 Mar 2026 17:44:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websocket/ChatWebSocketServer.java | 26 +++++++++++++++++++ .../websocket/WebSocketMsgServiceImpl.java | 3 +++ .../websocket/WebSocketUser.java | 9 +++++++ .../zycx/service/impl/ZycxServiceImpl.java | 18 +++++++++++++ 4 files changed, 56 insertions(+) diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/ChatWebSocketServer.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/ChatWebSocketServer.java index 32be492..1cd2518 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/ChatWebSocketServer.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/ChatWebSocketServer.java @@ -255,6 +255,32 @@ public class ChatWebSocketServer { } return roleUsers; } + /** + * 根据WebId筛选在线用户(如仅获取管理员) + */ + public static List getOnlineUsersByWebId(String webId) { + List roleUsers = new ArrayList<>(); + if (webId == null || webId.trim().isEmpty()) { + return roleUsers; + } + for (WebSocketUser user : ONLINE_USER_MAP.values()) { + if (webId.equals(user.getWebId()) && user.isConnected()) { + roleUsers.add(user); + } + } + return roleUsers; + } + public static String getUsersByWebId(String webId) { + if (webId == null || webId.trim().isEmpty()) { + return null; + } + for (WebSocketUser user : ONLINE_USER_MAP.values()) { + if (webId.equals(user.getWebId())) { + return user.getUserId(); + } + } + return null; + } /** * 新增:通过IP快速查询对应的userId(核心效率方法) */ diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketMsgServiceImpl.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketMsgServiceImpl.java index 608ad5b..7ce65fd 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketMsgServiceImpl.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketMsgServiceImpl.java @@ -231,6 +231,9 @@ public class WebSocketMsgServiceImpl implements WebSocketMsgService { case "username": user.setUsername(value); break; + case "webid": + user.setWebId(value); + break; case "role": user.setRole(value); break; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketUser.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketUser.java index 563cf9c..1d12cc0 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketUser.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketUser.java @@ -12,6 +12,7 @@ public class WebSocketUser { // 核心字段:用户唯一标识(仍保持final,不建议修改) private final String userId; // 身份属性(移除final修饰符,支持修改) + private String webId; private String username; // 用户名 private String role; // 角色(如ADMIN/USER) private String loginIp; // 登录IP @@ -46,7 +47,15 @@ public class WebSocketUser { public void setUsername(String username) { this.username = username; } + // ========== 可修改属性(getter + setter) ========== + public String getWebId() { + return webId; + } + // 添加username的setter方法 + public void setWebId(String webId) { + this.webId = webId; + } public String getRole() { return role; } diff --git a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java index 5a2609a..97583da 100644 --- a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java +++ b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.SysLoginParam; import com.czlis.common.core.domain.entity.lis.LabIntersendList; import com.czlis.common.core.domain.entity.lis.LabReqdetail; import com.czlis.common.core.domain.entity.lis.LabReqmain; @@ -374,6 +375,10 @@ public class ZycxServiceImpl implements ZycxService { String ip= IpUtils.getIpAddr(); System.out.println("请求业务的IP:"+ip); List printUsers = ChatWebSocketServer.getOnlineUsersByLoginIp(ip); + if (printUsers.isEmpty()) { + String webid=getLocalid(); + printUsers= ChatWebSocketServer.getOnlineUsersByWebId(webid); + } if (printUsers.isEmpty()) { System.out.println("当前客户端打印插件不在线"); return new Result("-1","当前客户端打印插件不在线"); @@ -383,6 +388,7 @@ public class ZycxServiceImpl implements ZycxService { System.out.println("已给客户端[" + webSocketUser.getUsername() + "]推送打印通知,IP:" + webSocketUser.getLoginIp()); return new Result("0","打印成功"); } + @Override public Result printsetup(){ WebSocketMessage wsMessage=new WebSocketMessage(); @@ -396,8 +402,20 @@ public class ZycxServiceImpl implements ZycxService { String ip= IpUtils.getIpAddr(); String UserId = ChatWebSocketServer.getUserIdByIp(ip); if(UserId==null||"".equals(UserId)){ + String webid=getLocalid(); + UserId=ChatWebSocketServer.getUsersByWebId(webid); + if(UserId!=null&&!"".equals(UserId)){ + return new Result("0","客户端插件正常"); + } return new Result("-1","当前客户端打印插件不在线或未安装"); } return new Result("0","客户端插件正常"); } + private String getLocalid() { + SysLoginParam user= SecurityUtils.getLoginUser().getSysLoginParam(); + if(user!=null) { + return user.getLocalid(); + } + return null; + } }