This commit is contained in:
tangw 2026-03-17 17:44:11 +08:00
parent 4c7a5ab963
commit f9cf92bd02
4 changed files with 56 additions and 0 deletions

View File

@ -255,6 +255,32 @@ public class ChatWebSocketServer {
} }
return roleUsers; return roleUsers;
} }
/**
* 根据WebId筛选在线用户(如仅获取管理员)
*/
public static List<WebSocketUser> getOnlineUsersByWebId(String webId) {
List<WebSocketUser> 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(核心效率方法) * 新增:通过IP快速查询对应的userId(核心效率方法)
*/ */

View File

@ -231,6 +231,9 @@ public class WebSocketMsgServiceImpl implements WebSocketMsgService {
case "username": case "username":
user.setUsername(value); user.setUsername(value);
break; break;
case "webid":
user.setWebId(value);
break;
case "role": case "role":
user.setRole(value); user.setRole(value);
break; break;

View File

@ -12,6 +12,7 @@ public class WebSocketUser {
// 核心字段:用户唯一标识(仍保持final,不建议修改) // 核心字段:用户唯一标识(仍保持final,不建议修改)
private final String userId; private final String userId;
// 身份属性(移除final修饰符,支持修改) // 身份属性(移除final修饰符,支持修改)
private String webId;
private String username; // 用户名 private String username; // 用户名
private String role; // 角色(如ADMIN/USER) private String role; // 角色(如ADMIN/USER)
private String loginIp; // 登录IP private String loginIp; // 登录IP
@ -46,7 +47,15 @@ public class WebSocketUser {
public void setUsername(String username) { public void setUsername(String username) {
this.username = username; this.username = username;
} }
// ========== 可修改属性(getter + setter) ==========
public String getWebId() {
return webId;
}
// 添加username的setter方法
public void setWebId(String webId) {
this.webId = webId;
}
public String getRole() { public String getRole() {
return role; return role;
} }

View File

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.czlis.common.core.domain.Result; 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.LabIntersendList;
import com.czlis.common.core.domain.entity.lis.LabReqdetail; import com.czlis.common.core.domain.entity.lis.LabReqdetail;
import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.core.domain.entity.lis.LabReqmain;
@ -374,6 +375,10 @@ public class ZycxServiceImpl implements ZycxService {
String ip= IpUtils.getIpAddr(); String ip= IpUtils.getIpAddr();
System.out.println("请求业务的IP:"+ip); System.out.println("请求业务的IP:"+ip);
List<WebSocketUser> printUsers = ChatWebSocketServer.getOnlineUsersByLoginIp(ip); List<WebSocketUser> printUsers = ChatWebSocketServer.getOnlineUsersByLoginIp(ip);
if (printUsers.isEmpty()) {
String webid=getLocalid();
printUsers= ChatWebSocketServer.getOnlineUsersByWebId(webid);
}
if (printUsers.isEmpty()) { if (printUsers.isEmpty()) {
System.out.println("当前客户端打印插件不在线"); System.out.println("当前客户端打印插件不在线");
return new Result("-1","当前客户端打印插件不在线"); return new Result("-1","当前客户端打印插件不在线");
@ -383,6 +388,7 @@ public class ZycxServiceImpl implements ZycxService {
System.out.println("已给客户端[" + webSocketUser.getUsername() + "]推送打印通知,IP:" + webSocketUser.getLoginIp()); System.out.println("已给客户端[" + webSocketUser.getUsername() + "]推送打印通知,IP:" + webSocketUser.getLoginIp());
return new Result("0","打印成功"); return new Result("0","打印成功");
} }
@Override @Override
public Result printsetup(){ public Result printsetup(){
WebSocketMessage wsMessage=new WebSocketMessage(); WebSocketMessage wsMessage=new WebSocketMessage();
@ -396,8 +402,20 @@ public class ZycxServiceImpl implements ZycxService {
String ip= IpUtils.getIpAddr(); String ip= IpUtils.getIpAddr();
String UserId = ChatWebSocketServer.getUserIdByIp(ip); String UserId = ChatWebSocketServer.getUserIdByIp(ip);
if(UserId==null||"".equals(UserId)){ 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("-1","当前客户端打印插件不在线或未安装");
} }
return new Result("0","客户端插件正常"); return new Result("0","客户端插件正常");
} }
private String getLocalid() {
SysLoginParam user= SecurityUtils.getLoginUser().getSysLoginParam();
if(user!=null) {
return user.getLocalid();
}
return null;
}
} }