diff --git a/pom.xml b/pom.xml
index b447e68..d234320 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,7 +91,7 @@
- quartz
+
auth
diff --git a/upms/upms-biz/pom.xml b/upms/upms-biz/pom.xml
index d293642..3316ef9 100644
--- a/upms/upms-biz/pom.xml
+++ b/upms/upms-biz/pom.xml
@@ -21,10 +21,10 @@
auth
-
- com.rax
- quartz
-
+
+
+
+
com.rax
diff --git a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java
index 2445f62..67b3b5f 100644
--- a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java
+++ b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysHospitalServiceImpl.java
@@ -126,17 +126,27 @@ public class SysHospitalServiceImpl extends ServiceImpl roleCodeList = user.getRoleCodeList();
+ // 管理员
+ if (roleCodeList.contains(RoleRecord.ADMIN_ROLE_CODE)) {
+ String key = CacheConstants.CURRENT_HOSPITAL + ":" + user.getId();
+ if (RedisUtils.hasKey(key)) {
+ return Convert.toStr(RedisUtils.get(key));
+ }
RedisUtils.set(key, user.getHospitalId());
return Convert.toStr(user.getHospitalId());
+
}
+ // 其余角色
+ return Convert.toStr(user.getHospitalId());
}
@Override
diff --git a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysLogServiceImpl.java b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysLogServiceImpl.java
index 053cda5..97a4d25 100644
--- a/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysLogServiceImpl.java
+++ b/upms/upms-biz/src/main/java/com/rax/admin/service/impl/SysLogServiceImpl.java
@@ -13,6 +13,7 @@ import com.rax.admin.service.SysLogService;
import com.rax.admin.utils.AuthUtils;
import com.rax.common.security.service.RaxUser;
import com.rax.common.security.util.SecurityUtils;
+import org.jacoco.agent.rt.internal_3570298.core.internal.flow.IFrame;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -114,12 +115,14 @@ public class SysLogServiceImpl extends ServiceImpl impleme
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean saveLog(SysLog sysLog) {
- // 获取到医院ID
- LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>();
- userLambdaQueryWrapper.eq(SysUser::getUsername, sysLog.getCreateBy());
- SysUser sysUser = sysUserMapper.selectOne(userLambdaQueryWrapper);
- // 设置到日志对象中
- sysLog.setHospitalId(sysUser.getHospitalId());
+ if (sysLog.getHospitalId() == null) {
+ // 获取到医院ID
+ LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ userLambdaQueryWrapper.eq(SysUser::getUsername, sysLog.getCreateBy());
+ SysUser sysUser = sysUserMapper.selectOne(userLambdaQueryWrapper);
+ // 设置到日志对象中
+ sysLog.setHospitalId(sysUser.getHospitalId());
+ }
baseMapper.insert(sysLog);
return Boolean.TRUE;
}
diff --git a/upms/upms-biz/src/main/java/com/rax/admin/timmer/LogTimerTask.java b/upms/upms-biz/src/main/java/com/rax/admin/timmer/LogTimerTask.java
new file mode 100644
index 0000000..bcbf627
--- /dev/null
+++ b/upms/upms-biz/src/main/java/com/rax/admin/timmer/LogTimerTask.java
@@ -0,0 +1,71 @@
+package com.rax.admin.timmer;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.mapper.SysLogMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * project_name: remote-control-backend
+ * author republicline
+ * time: 2024/9/4 16:20
+ * description: 日志定时任务清除
+ */
+@Slf4j
+@Component
+@Service
+public class LogTimerTask {
+
+ @Autowired
+ private SysLogMapper sysLogMapper;
+
+
+ //每天晚上12:00定时删除30天之前的数据
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void scheduled() {
+ // 查询系统的全部用户的集合
+ QueryWrapper sysLogQueryWrapper = new QueryWrapper<>();
+ sysLogQueryWrapper.select("distinct create_by");
+ List userList = sysLogMapper.selectList(sysLogQueryWrapper)
+ .stream().map(SysLog::getCreateBy).toList();
+ // 获取30天前的时间
+ String agoDate = getDate(new Date(), 30);
+ for (String user : userList) {
+ // 查询指定用户的日志集合id
+ List idList = sysLogMapper.selectListByTime(user, agoDate)
+ .stream()
+ .map(SysLog::getId)
+ .toList();
+ if (!idList.isEmpty()) {
+ sysLogMapper.deleteBatchByIds(idList);
+ }
+ }
+ }
+
+ /**
+ * @Description: 获取时间
+ * @param: [now, days]
+ * @return: java.lang.String
+ */
+ public static String getDate(Date now, int days) {
+ // 将 java.util.Date 转换为 java.time.LocalDateTime
+ LocalDateTime localDateTime = now.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+
+ // 计算 days 天前的日期时间
+ LocalDateTime daysAgo = localDateTime.minusDays(days);
+
+ // 格式化为年月日时分秒
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ return daysAgo.format(formatter);
+ }
+}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/common/util/SysLoggerBuilder.java b/upms/upms-biz/src/main/java/com/rax/vital/common/util/SysLoggerBuilder.java
index d6b3bfc..74293bb 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/common/util/SysLoggerBuilder.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/common/util/SysLoggerBuilder.java
@@ -12,25 +12,30 @@ import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
+import java.net.URI;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
- * project_name:remote-control-backend
- * time:2024/9/3 15:17
- * 根据解析到的Token, 构造一个日志对象, 添加日志表中
+ * project_name: remote-control-backend
+ * time: 2024/9/3 15:17
+ * author: republicline
+ * description: 日志对象构造, 根据解析到的Token, 构造一个日志对象, 添加日志表中
*/
@Component
public class SysLoggerBuilder {
@Autowired
- private OAuth2AuthorizationService authorizationService;
+ private TokenUtil tokenUtil;
+
+ public SysLog buildSysLog(String title, String logType, WebSocketSession session) {
+
+ String query = session.getUri().getQuery();
+ String token = GetHttpParamUtil.getParam(query, "token");
- public SysLog buildSysLog(String token, String title, String logType, WebSocketSession session) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 从session中获取一些信息
String ip = session.getRemoteAddress() != null ? session.getRemoteAddress().toString() : "unknown";
String uri = session.getUri() != null ? session.getUri().toString() : "unknown";
@@ -40,11 +45,9 @@ public class SysLoggerBuilder {
session.getUri().getQuery() : "unknown";
// 解析token
- OAuth2Authorization byToken = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
- Map stringObjectMap = parseToken(token);
+ Map stringObjectMap = tokenUtil.parseToken(token);
Long hospitalId = (Long) stringObjectMap.get("hospitalId");
- String userName = (String) stringObjectMap.get("userName");
-
+ String userName = (String) stringObjectMap.get("username");
// 填充属性
SysLog sysLog = new SysLog();
@@ -52,6 +55,7 @@ public class SysLoggerBuilder {
sysLog.setTitle(title);
sysLog.setCreateTime(LocalDateTime.now());
sysLog.setRemoteAddr(ip);
+ sysLog.setMethod("ws");
sysLog.setDelFlag("0");
sysLog.setParams(params);
sysLog.setUserAgent(userAgent);
@@ -65,15 +69,15 @@ public class SysLoggerBuilder {
// 获取信息
HttpHeaders headers = request.getHeaders();
- String req_url = headers.getFirst("origin");
String agent = headers.getFirst("User-Agent");
+ String req_addr = request.getRemoteAddress().toString();
// 获取解析token
String query = request.getURI().getQuery();
String token = GetHttpParamUtil.getParam(query, "token");
- Map stringObjectMap = parseToken(token);
+ Map stringObjectMap = tokenUtil.parseToken(token);
- String userName = (String) stringObjectMap.get("userName");
+ String userName = (String) stringObjectMap.get("username");
Long hospitalId = (Long) stringObjectMap.get("hospitalId");
// 填充属性
@@ -83,24 +87,30 @@ public class SysLoggerBuilder {
sysLog.setDelFlag("0");
sysLog.setCreateBy(userName);
sysLog.setParams(query);
- sysLog.setRemoteAddr(req_url);
+ sysLog.setRemoteAddr(req_addr);
sysLog.setMethod("ws");
sysLog.setHospitalId(hospitalId);
sysLog.setCreateTime(LocalDateTime.now());
+ sysLog.setUserAgent(agent);
return sysLog;
}
- private Map parseToken(String token) {
- HashMap map = new HashMap<>();
- OAuth2Authorization byToken = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
- String userName = byToken.getPrincipalName();
- map.put("userName", userName);
- OAuth2Authorization.Token accessToken = byToken.getAccessToken();
- RaxUser o = (RaxUser) accessToken.getClaims().get("user_info");
- Long hospitalId = o.getHospitalId();
- map.put("hospitalId", hospitalId);
- return map;
+ public SysLog buildLongWithLogType(ServerHttpRequest request){
+ URI uri = request.getURI();
+ String uriStr = uri.toString();
+ if (uriStr.contains("/rax/vitalSignsMedicine")) {
+ return buildSysLog("连接生命体征接口","0",request);
+ }
+ if (uriStr.contains("/rax/chatRoom")) {
+ return buildSysLog("连接聊天室接口","0",request);
+ }
+ if (uriStr.contains("/rax/addMedicine")){
+ return buildSysLog("网页端连接给药接口","0",request);
+ }
+ if (uriStr.contains("/rax/getMedicine")){
+ return buildSysLog("仪器端连接收药接口","0",request);
+ }
+ return null;
}
-
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/common/util/TokenUtil.java b/upms/upms-biz/src/main/java/com/rax/vital/common/util/TokenUtil.java
new file mode 100644
index 0000000..2c1b588
--- /dev/null
+++ b/upms/upms-biz/src/main/java/com/rax/vital/common/util/TokenUtil.java
@@ -0,0 +1,37 @@
+package com.rax.vital.common.util;
+
+import com.rax.common.security.service.RaxUser;
+import jakarta.annotation.Resource;
+import org.springframework.security.oauth2.core.OAuth2AccessToken;
+import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
+import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
+import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * project_name: remote-control-backend
+ * time: 2024/9/4 14:56
+ * author: republicline
+ * description:
+ */
+@Component
+public class TokenUtil {
+
+ @Resource
+ private OAuth2AuthorizationService authorizationService;
+
+ public Map parseToken(String token) {
+ HashMap map = new HashMap<>();
+ OAuth2Authorization byToken = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
+ String username = byToken.getPrincipalName();
+ map.put("username", username);
+ OAuth2Authorization.Token accessToken = byToken.getAccessToken();
+ RaxUser o = (RaxUser) accessToken.getClaims().get("user_info");
+ Long hospitalId = o.getHospitalId();
+ map.put("hospitalId", hospitalId);
+ return map;
+ }
+}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/config/WebSocketConfig.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/config/WebSocketConfig.java
index c3eab0c..7823960 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/config/WebSocketConfig.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/config/WebSocketConfig.java
@@ -6,9 +6,7 @@ import com.rax.vital.v2.handler.MachineFeedbackHandler;
import com.rax.vital.v2.handler.MedicineHandler;
import com.rax.vital.v2.interceptor.WebSocketInterceptors;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@@ -21,37 +19,28 @@ public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private WebSocketInterceptors webSocketInterceptors;
+ @Autowired
+ private AddMedicineHandler addMedicineHandler;
+
+ @Autowired
+ private ChatHandler chatHandler;
+
+ @Autowired
+ private MachineFeedbackHandler machineFeedbackHandler;
+
+ @Autowired
+ private MedicineHandler medicineHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
- registry.addHandler(medicineHandler(), "/rax/vitalSignsMedicine")
- .addHandler(chatHandler(), "/rax/chatRoom")
- .addHandler(addMedicineHandler(), "/rax/addMedicine")
- .addHandler(machineFeedbackHandler(),"/rax/getMedicine")
+ registry.addHandler(medicineHandler, "/rax/vitalSignsMedicine")
+ .addHandler(chatHandler,"/rax/chatRoom")
+ .addHandler(addMedicineHandler, "/rax/addMedicine")
+ .addHandler(machineFeedbackHandler,"/rax/getMedicine")
.addInterceptors(new HttpSessionHandshakeInterceptor())
.addInterceptors(webSocketInterceptors)
.setAllowedOrigins("*");
}
- @Bean
- public WebSocketHandler medicineHandler() {
- return new MedicineHandler();
- }
-
- @Bean
- public WebSocketHandler chatHandler() {
- return new ChatHandler();
- }
-
- @Bean
- public WebSocketHandler addMedicineHandler() {
- return new AddMedicineHandler();
- }
-
- @Bean
- public WebSocketHandler machineFeedbackHandler() {
- return new MachineFeedbackHandler();
- }
-
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/AddMedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/AddMedicineHandler.java
index 40d3918..81c3cc4 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/AddMedicineHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/AddMedicineHandler.java
@@ -1,20 +1,18 @@
package com.rax.vital.v2.handler;
import com.alibaba.fastjson.JSONObject;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.service.SysLogService;
import com.rax.vital.common.util.DatabaseNameUtil;
import com.rax.vital.common.util.GetHttpParamUtil;
+import com.rax.vital.common.util.SysLoggerBuilder;
+import com.rax.vital.common.util.TokenUtil;
import com.rax.vital.v2.timer.AIMedicineTimer;
import com.rax.vital.v2.timer.VitalSignTimerV2;
-import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
-import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
-import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
+import org.springframework.stereotype.Component;
import org.springframework.web.socket.*;
-
-import java.net.URI;
-import java.net.URLDecoder;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.*;
@@ -23,38 +21,37 @@ import java.util.concurrent.*;
* 网站发送给仪器给药信息
*/
@Slf4j
+@Component
public class AddMedicineHandler implements WebSocketHandler {
@Autowired
private VitalSignTimerV2 vitalSignTimerV2;
- @Resource
- private OAuth2AuthorizationService authorizationService;
+ @Autowired
+ private SysLoggerBuilder sysLoggerBuilder;
+
+ @Autowired
+ private SysLogService sysLogService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
+
+ @Autowired
+ private AIMedicineTimer aiMedicineTimer;
// 发送心跳任务的定时任务容器
private Map timerTaskMap = new ConcurrentHashMap<>();
- @Autowired
- private AIMedicineTimer aiMedicineTimer;
-
-
@Override
public void afterConnectionEstablished(WebSocketSession session) {
- URI uri = session.getUri();
- System.out.println("uri = " + uri);
startHeartbeat(session);
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage> message) throws Exception {
- String decode = URLDecoder.decode(session.getUri().getQuery());
- Map params = GetHttpParamUtil.getParams(decode);
- String token = (String) params.get("token");
- OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
- String username = authorization.getPrincipalName();
JSONObject jsonObject = JSONObject.parseObject((String) message.getPayload());
String msgType = jsonObject.getString("msgType");
@@ -88,7 +85,12 @@ public class AddMedicineHandler implements WebSocketHandler {
// 处理发送给药相关
if ("addMedicine".equals(msgType) && aiMedicineTimer.getWebSession(databaseName) != null && aiMedicineTimer.getUnitySession(databaseName) != null
&& aiMedicineTimer.isReady(databaseName)) {
- // todo 注意修改
+ // 解析获取username
+ String query = session.getUri().getQuery();
+ String token = GetHttpParamUtil.getParam(query, "token");
+ Map map = tokenUtil.parseToken(token);
+ String username = (String) map.get("username");
+
// flag 0 代表人工给药, 1代表AI给药
vitalSignTimerV2.sendMedicalMessageToUnity(databaseName, username, session, jsonObject.getString("flag"),
jsonObject.getString("medicine"), jsonObject.getString("value"));
@@ -123,12 +125,16 @@ public class AddMedicineHandler implements WebSocketHandler {
public void handleTransportError(WebSocketSession session, Throwable exception) {
stopHeartbeat(session);
aiMedicineTimer.closeConnection(session);
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("给药接口异常中断:"+exception.getMessage(), "4", session);
+ sysLogService.saveLog(sysLog);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
stopHeartbeat(session);
aiMedicineTimer.closeConnection(session);
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("给药接口客户端,断开连接", "0", session);
+ sysLogService.saveLog(sysLog);
}
@Override
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/ChatHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/ChatHandler.java
index 025e64d..351807b 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/ChatHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/ChatHandler.java
@@ -1,25 +1,42 @@
package com.rax.vital.v2.handler;
import com.alibaba.fastjson.JSONObject;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.service.SysLogService;
import com.rax.vital.common.util.DatabaseNameUtil;
+import com.rax.vital.common.util.GetHttpParamUtil;
+import com.rax.vital.common.util.SysLoggerBuilder;
+import com.rax.vital.common.util.TokenUtil;
import com.rax.vital.v2.medicine.service.ChatService;
import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
+import org.springframework.stereotype.Component;
import org.springframework.web.socket.*;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+@Component
public class ChatHandler implements WebSocketHandler {
- @Resource
- private OAuth2AuthorizationService authorizationService;
@Resource
private ChatService chatService;
+ @Autowired
+ private SysLoggerBuilder sysLoggerBuilder;
+
+ @Autowired
+ private SysLogService sysLogService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
+
+
private Map timerTaskMap = new ConcurrentHashMap();
@Override
@@ -29,35 +46,40 @@ public class ChatHandler implements WebSocketHandler {
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage> message) throws Exception {
-// String decode = URLDecoder.decode(session.getUri().getQuery());
-// Map params = GetHttpParamUtil.getParams(decode);
-// String token = (String) params.get("token");
-// OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
-// if (authorization != null) {
-// String username = authorization.getPrincipalName();
- String payload = (String) message.getPayload();
- JSONObject jsonObject = JSONObject.parseObject(payload);
- if (!"heartbeat".equals(jsonObject.getString("msgType"))) {
- String patientName = jsonObject.getString("patientName");
- String idNum = jsonObject.getString("idNum");
- String date = jsonObject.getString("date");
- // 消息内容
- String msg = jsonObject.getString("msg");
- String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
- chatService.sendMessage(databaseName,"admin",session, msg);
- }
-// }
+
+ String payload = (String) message.getPayload();
+
+ JSONObject jsonObject = JSONObject.parseObject(payload);
+ if (!"heartbeat".equals(jsonObject.getString("msgType"))) {
+
+ String query = Objects.requireNonNull(session.getUri()).getQuery();
+ String token = GetHttpParamUtil.getParam(query, "token");
+ Map map = tokenUtil.parseToken(token);
+ String username = (String) map.get("username");
+
+ String patientName = jsonObject.getString("patientName");
+ String idNum = jsonObject.getString("idNum");
+ String date = jsonObject.getString("date");
+ // 消息内容
+ String msg = jsonObject.getString("msg");
+ String databaseName = DatabaseNameUtil.encrypt(patientName) + "_" + DatabaseNameUtil.encrypt(idNum) + "_" + date;
+ chatService.sendMessage(databaseName, username, session, msg);
+ }
+
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) {
- System.out.println("Error: " + exception.getMessage());
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("聊天室接口异常中断:"+exception.getMessage(), "4", session);
+ sysLogService.saveLog(sysLog);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
stopHeartbeat(session);
chatService.stopTask(session.getId());
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("聊天室接口关闭", "0", session);
+ sysLogService.saveLog(sysLog);
}
@Override
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MachineFeedbackHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MachineFeedbackHandler.java
index d934a32..bbe2bc6 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MachineFeedbackHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MachineFeedbackHandler.java
@@ -1,11 +1,16 @@
package com.rax.vital.v2.handler;
import com.alibaba.fastjson.JSONObject;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.service.SysLogService;
import com.rax.vital.common.util.DatabaseNameUtil;
+import com.rax.vital.common.util.SysLoggerBuilder;
+import com.rax.vital.common.util.TokenUtil;
import com.rax.vital.v2.timer.AIMedicineTimer;
import com.rax.vital.v2.timer.VitalSignTimerV2;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import org.springframework.web.socket.*;
import java.io.IOException;
@@ -17,11 +22,21 @@ import java.util.concurrent.*;
* 仪器获取网站给药信息
*/
@Slf4j
+@Component
public class MachineFeedbackHandler implements WebSocketHandler {
@Autowired
private VitalSignTimerV2 vitalSignTimerV2;
+ @Autowired
+ private SysLoggerBuilder sysLoggerBuilder;
+
+ @Autowired
+ private SysLogService sysLogService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
+
private Map timerTaskMap = new ConcurrentHashMap();
@Autowired
@@ -54,7 +69,6 @@ public class MachineFeedbackHandler implements WebSocketHandler {
if ("init".equals(msgType)) {
aiMedicineTimer.initUnity(databaseName, session);
-// vitalSignTimerWS.initUnity(databaseName, session);
}
// Unity获取到给药信息后回复
@@ -79,7 +93,7 @@ public class MachineFeedbackHandler implements WebSocketHandler {
// u3d相应网页端的请求
if ("unityResponseConnection".equals(msgType)) {
String unityConnectionFlag = jsonObject.getString("unityConnectionFlag");
- aiMedicineTimer.sendConnectionResponseToWeb(patientName, idNum, date,databaseName, unityConnectionFlag);
+ aiMedicineTimer.sendConnectionResponseToWeb(patientName, idNum, date, databaseName, unityConnectionFlag);
}
if (aiMedicineTimer.getUnitySession(databaseName) != null && aiMedicineTimer.getWebSession(databaseName) != null
@@ -106,7 +120,7 @@ public class MachineFeedbackHandler implements WebSocketHandler {
if (aiMedicineTimer.getUnitySession(databaseName) != null) {
result.put("unityMsg", "unity端已登录");
- }else {
+ } else {
result.put("unityMsg", "unity端未登录");
}
// 当前时间戳
@@ -135,12 +149,16 @@ public class MachineFeedbackHandler implements WebSocketHandler {
public void handleTransportError(WebSocketSession session, Throwable exception) {
stopHeartbeat(session);
aiMedicineTimer.closeConnection(session);
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("仪器端获取收药口异常中断", "4", session);
+ sysLogService.saveLog(sysLog);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) {
stopHeartbeat(session);
aiMedicineTimer.closeConnection(session);
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("仪器端收药接口关闭", "0", session);
+ sysLogService.saveLog(sysLog);
}
@Override
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MedicineHandler.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MedicineHandler.java
index a83649d..cedea82 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MedicineHandler.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/handler/MedicineHandler.java
@@ -1,17 +1,19 @@
package com.rax.vital.v2.handler;
import com.alibaba.fastjson.JSONObject;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.service.SysLogService;
import com.rax.vital.common.util.DatabaseNameUtil;
import com.rax.vital.common.util.GetHttpParamUtil;
+import com.rax.vital.common.util.SysLoggerBuilder;
+import com.rax.vital.common.util.TokenUtil;
import com.rax.vital.v2.timer.VitalSignTimerV2;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
-import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
-import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import org.springframework.web.socket.*;
-import java.net.URLDecoder;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -23,14 +25,20 @@ import java.util.concurrent.TimeUnit;
*/
@Slf4j
+@Component
public class MedicineHandler implements WebSocketHandler {
-
- @Resource
+ @Autowired
private VitalSignTimerV2 vitalSignTimerV2;
- @Resource
- private OAuth2AuthorizationService authorizationService;
+ @Autowired
+ private SysLoggerBuilder sysLoggerBuilder;
+
+ @Autowired
+ private SysLogService sysLogService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
private Map timerTaskMap = new ConcurrentHashMap<>();
@@ -41,16 +49,18 @@ public class MedicineHandler implements WebSocketHandler {
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage> message) {
- String decode = URLDecoder.decode(session.getUri().getQuery());
- Map params = GetHttpParamUtil.getParams(decode);
- String token = (String) params.get("token");
- OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
- String username = authorization.getPrincipalName();
+
String payload = (String) message.getPayload();
JSONObject jsonObject = JSONObject.parseObject(payload);
if (!"heartbeat".equals(jsonObject.getString("msgType"))) {
+
+ String query = session.getUri().getQuery();
+ String token = GetHttpParamUtil.getParam(query, "token");
+ Map map = tokenUtil.parseToken(token);
+ String username = (String) map.get("username");
+
String patientName = jsonObject.getString("patientName");
String idNum = jsonObject.getString("idNum");
String date = jsonObject.getString("date");
@@ -63,12 +73,16 @@ public class MedicineHandler implements WebSocketHandler {
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
stopHeartbeat(session);
vitalSignTimerV2.stopTimerTask(session.getId());
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("生命体征接口异常中断", "4", session);
+ sysLogService.saveLog(sysLog);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
stopHeartbeat(session);
vitalSignTimerV2.stopTimerTask(session.getId());
+ SysLog sysLog = sysLoggerBuilder.buildSysLog("生命体征接口连接关闭", "0", session);
+ sysLogService.saveLog(sysLog);
}
@Override
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/interceptor/WebSocketInterceptors.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/interceptor/WebSocketInterceptors.java
index 4353072..96f18a9 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/interceptor/WebSocketInterceptors.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/interceptor/WebSocketInterceptors.java
@@ -1,7 +1,11 @@
package com.rax.vital.v2.interceptor;
+import com.rax.admin.api.entity.SysLog;
+import com.rax.admin.service.SysLogService;
import com.rax.vital.common.util.GetHttpParamUtil;
+import com.rax.vital.common.util.SysLoggerBuilder;
import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
@@ -20,8 +24,16 @@ public class WebSocketInterceptors implements HandshakeInterceptor {
@Resource
private OAuth2AuthorizationService authorizationService;
+ @Autowired
+ private SysLoggerBuilder sysLoggerBuilder;
+
+
+ @Autowired
+ private SysLogService sysLogService;
+
/**
* 在这里做一个全局的日志插入根据路径匹配不同的操作title
+ *
* @param request
* @param response
* @param wsHandler
@@ -34,14 +46,17 @@ public class WebSocketInterceptors implements HandshakeInterceptor {
String query = request.getURI().getQuery();
String token = GetHttpParamUtil.getParam(query, "token");
OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
- if (authorization == null ) {
+ if (authorization == null) {
return false;
}
+ // 适配一下,根据req中不同的路径做不同的操作title
+ SysLog sysLog = sysLoggerBuilder.buildLongWithLogType(request);
+ sysLogService.saveLog(sysLog);
return true;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
- System.out.println("request = " + request + ", response = " + response + ", wsHandler = " + wsHandler + ", exception = " + exception);
+
}
}
diff --git a/upms/upms-biz/src/main/java/com/rax/vital/v2/timer/VitalSignTimerV2.java b/upms/upms-biz/src/main/java/com/rax/vital/v2/timer/VitalSignTimerV2.java
index a723669..f9cffe9 100644
--- a/upms/upms-biz/src/main/java/com/rax/vital/v2/timer/VitalSignTimerV2.java
+++ b/upms/upms-biz/src/main/java/com/rax/vital/v2/timer/VitalSignTimerV2.java
@@ -22,9 +22,9 @@ import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
- * project_name:remote-control-backend
- * time:2024/8/20 15:09
- * author:republicline
+ * project_name: remote-control-backend
+ * time: 2024/8/20 15:09
+ * author: republicline
* 新的计时器任务, 和一期代码解耦
*/
@RefreshScope