From 537cf9cd1e3ac2e03655cc1d062dad8abc193a9a Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Thu, 05 Feb 2026 20:18:05 +0800
Subject: [PATCH] 1. 最后提交所有修改。
---
ard-route/src/main/java/com/ard/route/domain/route/UpdateMission.java | 25 ++++++++
ard-route/src/main/java/com/ard/route/websocket/handler/MiWebSocketHandler.java | 24 +++++--
ard-route/src/main/java/com/ard/route/websocket/utils/MiWebSocketUtils.java | 24 +++++---
ard-route/src/main/java/com/ard/route/mapper/ArdRouteMissionMapper.java | 2
ard-route/src/main/java/com/ard/route/websocket/MiWebSocketSessionManager.java | 36 ++++++++++++
ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java | 6 +-
ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java | 8 +-
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java | 34 ++++++++++-
ard-route/src/main/resources/mapper/ArdRouteMissionMapper.xml | 4
9 files changed, 133 insertions(+), 30 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java b/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
index e999013..d6b7935 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.ard.route.domain.route.ArdRouteMission;
+import com.ard.route.domain.route.UpdateMission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -110,10 +111,9 @@
*/
@ApiOperation("批量修改航线任务已读状态")
@Log(title = "航线任务", businessType = BusinessType.UPDATE)
- @PutMapping("editIsRead/{ids}/{isRead}")
- public AjaxResult editIsRead(@PathVariable String[] ids,
- @PathVariable String isRead) {
- return toAjax(ardRouteMissionService.updateIsRead(ids,isRead));
+ @PutMapping("editIsRead")
+ public AjaxResult editIsRead(@RequestBody UpdateMission updateMission) {
+ return toAjax(ardRouteMissionService.updateIsRead(updateMission));
}
}
diff --git a/ard-route/src/main/java/com/ard/route/domain/route/UpdateMission.java b/ard-route/src/main/java/com/ard/route/domain/route/UpdateMission.java
new file mode 100644
index 0000000..ba1436f
--- /dev/null
+++ b/ard-route/src/main/java/com/ard/route/domain/route/UpdateMission.java
@@ -0,0 +1,25 @@
+package com.ard.route.domain.route;
+
+import lombok.Data;
+
+/**
+ * 批量修改已读类型实体
+ *
+ * @author xia
+ */
+@Data
+public class UpdateMission {
+
+ /**
+ * 主键集合
+ */
+ private String[] ids;
+
+ /**
+ * 是否已读
+ * 0:否
+ * 1:是
+ * */
+ private String isRead;
+
+}
diff --git a/ard-route/src/main/java/com/ard/route/mapper/ArdRouteMissionMapper.java b/ard-route/src/main/java/com/ard/route/mapper/ArdRouteMissionMapper.java
index 2d55ae3..883db24 100644
--- a/ard-route/src/main/java/com/ard/route/mapper/ArdRouteMissionMapper.java
+++ b/ard-route/src/main/java/com/ard/route/mapper/ArdRouteMissionMapper.java
@@ -77,6 +77,6 @@
* @param isRead 已读状态
* @return 结果
*/
- public int updateIsRead(@Param("id")String[] ids,@Param("isRead")String isRead);
+ public int updateIsRead(@Param("ids")String[] ids, @Param("isRead")String isRead);
}
diff --git a/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java b/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
index e2e55d4..3b85e5e 100644
--- a/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
+++ b/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
@@ -1,6 +1,7 @@
package com.ard.route.service;
import com.ard.route.domain.route.ArdRouteMission;
+import com.ard.route.domain.route.UpdateMission;
import java.util.List;
@@ -72,10 +73,9 @@
/**
* 批量修改航线任务已读状态
*
- * @param ids 主键集合
- * @param isRead 已读状态
+ * @param updateMission 批量修改已读类型实体
* @return 结果
*/
- public int updateIsRead(String[] ids,String isRead);
+ public int updateIsRead(UpdateMission updateMission);
}
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
index e23626c..686d42a 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
@@ -9,11 +9,13 @@
import com.ard.common.utils.uuid.IdUtils;
import com.ard.route.domain.route.ArdRouteMission;
import com.ard.route.domain.route.ArdRoutePoint;
+import com.ard.route.domain.route.UpdateMission;
import com.ard.route.mapper.ArdRoutePointMapper;
import com.ard.route.websocket.utils.MiWebSocketUtils;
import com.ard.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import com.ard.route.mapper.ArdRouteMissionMapper;
import com.ard.route.service.IArdRouteMissionService;
@@ -82,6 +84,7 @@
ardRouteMission.setExecuteStatus("0");
ardRouteMission.setIsRead("0");
ardRouteMission.setCreateTime(DateUtils.getNowDate());
+ ardRouteMission.setIssuerTime(DateUtils.getNowDate());
ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
dataProcessingRoutePoint(ardRouteMission.getMissionDetailList(),ardRouteMission.getId());
try {
@@ -92,6 +95,25 @@
}
return ardRouteMissionMapper.insertArdRouteMission(ardRouteMission);
}
+
+// /**
+// * 定时任务,定时发送新增航线任务消息
+// */
+// @Scheduled(fixedRate = 2000)
+// public void sendMissionMessage() {
+// ArdRouteMission ardRouteMission = new ArdRouteMission();
+// ardRouteMission.setIsRead("0");
+// // 获取所有未读的消息给
+// List<ArdRouteMission> routeMissionLs = ardRouteMissionMapper.selectArdRouteMissionList(ardRouteMission);
+// for (ArdRouteMission routeMissionL : routeMissionLs) {
+// if (routeMissionL.getIssuerId() != null){
+// List<ArdRoutePoint> missionDetailList = ardRoutePointMapper.selectArdRoutePointByMissionId(routeMissionL.getId());
+// routeMissionL.setMissionDetailList(missionDetailList);
+// MiWebSocketUtils.sendMessage(routeMissionL.getIssuerId(),JSON.toJSONString(routeMissionL));
+// }
+// }
+// }
+
/**
* 修改航线任务
@@ -172,13 +194,17 @@
/**
* 批量修改航线任务已读状态
*
- * @param ids 主键集合
- * @param isRead 已读状态
+ * @param updateMission 批量修改已读类型实体
* @return 结果
*/
@Override
- public int updateIsRead(String[] ids, String isRead) {
- return ardRouteMissionMapper.updateIsRead(ids,isRead);
+ public int updateIsRead(UpdateMission updateMission) {
+ if (updateMission == null || updateMission.getIds() == null || updateMission.getIds().length == 0) {
+ return 0;
+ }
+ String[] ids = updateMission.getIds();
+ String isRead = updateMission.getIsRead();
+ return ardRouteMissionMapper.updateIsRead(ids, isRead);
}
}
diff --git a/ard-route/src/main/java/com/ard/route/websocket/MiWebSocketSessionManager.java b/ard-route/src/main/java/com/ard/route/websocket/MiWebSocketSessionManager.java
new file mode 100644
index 0000000..24e0c23
--- /dev/null
+++ b/ard-route/src/main/java/com/ard/route/websocket/MiWebSocketSessionManager.java
@@ -0,0 +1,36 @@
+package com.ard.route.websocket;
+
+import com.ard.work.component.websocket.utils.WebSocketUtil;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+public class MiWebSocketSessionManager {
+ private static final ConcurrentMap<Long, WebSocketSession> ONLINE_USER_SESSIONS = new ConcurrentHashMap<>();
+
+ public static void addSession(Long userId, WebSocketSession session) {
+ ONLINE_USER_SESSIONS.put(userId, session);
+ }
+
+ public static void removeSession(Long userId) {
+ ONLINE_USER_SESSIONS.remove(userId);
+ }
+
+ public static WebSocketSession getSession(Long userId) {
+ return ONLINE_USER_SESSIONS.get(userId);
+ }
+
+ public static void broadcast(String message) {
+ ONLINE_USER_SESSIONS.forEach((userId, session) -> WebSocketUtil.sendMessage(session, message));
+ }
+
+ //返回当前在线用户数
+ public static int getOnlineUserCount() {
+ return ONLINE_USER_SESSIONS.size();
+ }
+
+ public static boolean containsUser(Long userId) {
+ return ONLINE_USER_SESSIONS.containsKey(userId);
+ }
+}
diff --git a/ard-route/src/main/java/com/ard/route/websocket/handler/MiWebSocketHandler.java b/ard-route/src/main/java/com/ard/route/websocket/handler/MiWebSocketHandler.java
index 9228529..d92599e 100644
--- a/ard-route/src/main/java/com/ard/route/websocket/handler/MiWebSocketHandler.java
+++ b/ard-route/src/main/java/com/ard/route/websocket/handler/MiWebSocketHandler.java
@@ -1,5 +1,6 @@
package com.ard.route.websocket.handler;
+import com.ard.route.websocket.MiWebSocketSessionManager;
import com.ard.route.websocket.utils.MiWebSocketUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -17,23 +18,32 @@
// 处理接收到的消息
String payload = message.getPayload();
log.info("【mi_websocket】Received message: " + payload);
- log.info("【mi_websocket】size: " + MiWebSocketUtils.ONLINE_USER_SESSIONS.size());
+ log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount());
}
@Override
public void afterConnectionEstablished(WebSocketSession session) {
+ String userIdStr = (String) session.getAttributes().get("userId");
+ if (userIdStr == null || userIdStr.isBlank()) {
+ return;
+ }
+ Long userId = Long.parseLong(userIdStr);
log.info("【mi_websocket】Connected: " + session.getId());
- String userId = (String) session.getAttributes().get("userId");
- MiWebSocketUtils.ONLINE_USER_SESSIONS.put(userId, session);
- log.info("【mi_websocket】size: " + MiWebSocketUtils.ONLINE_USER_SESSIONS.size());
+ MiWebSocketSessionManager.addSession(userId, session);
+ log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount());
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
+ String userIdStr = (String) session.getAttributes().get("userId");
+ if (userIdStr == null || userIdStr.isBlank()) {
+ return;
+ }
+ Long userId = Long.parseLong(userIdStr);
+ MiWebSocketSessionManager.removeSession(userId);
log.info("【mi_websocket】Disconnected: " + session.getId());
- String userId = (String) session.getAttributes().get("userId");
- MiWebSocketUtils.ONLINE_USER_SESSIONS.remove(userId);
- log.info("【mi_websocket】size: " + MiWebSocketUtils.ONLINE_USER_SESSIONS.size());
+ MiWebSocketSessionManager.removeSession(userId);
+ log.info("【mi_websocket】size: " + MiWebSocketSessionManager.getOnlineUserCount());
}
}
diff --git a/ard-route/src/main/java/com/ard/route/websocket/utils/MiWebSocketUtils.java b/ard-route/src/main/java/com/ard/route/websocket/utils/MiWebSocketUtils.java
index eae6628..7bd1e53 100644
--- a/ard-route/src/main/java/com/ard/route/websocket/utils/MiWebSocketUtils.java
+++ b/ard-route/src/main/java/com/ard/route/websocket/utils/MiWebSocketUtils.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
+import com.ard.route.websocket.MiWebSocketSessionManager;
import com.ard.work.component.websocket.WebSocketSessionManager;
import com.ard.work.component.websocket.utils.WebSocketUtil;
import com.ard.work.domain.message.BaseMessage;
@@ -13,14 +14,9 @@
import java.net.InetSocketAddress;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
@Slf4j
public class MiWebSocketUtils {
-
- // 用于存储所有打开的WebSocket会话
- public static final ConcurrentMap<String, WebSocketSession> ONLINE_USER_SESSIONS = new ConcurrentHashMap<>();
/**
* @param session 用户 session
@@ -45,7 +41,7 @@
}
public static void sendMessage(Long userId, String message) {
- WebSocketSession session = WebSocketSessionManager.getSession(userId);
+ WebSocketSession session = MiWebSocketSessionManager.getSession(userId);
sendMessage(session, message);
}
@@ -93,7 +89,7 @@
* @param message
*/
public static void sendMessageAll(String message) {
- ONLINE_USER_SESSIONS.forEach((sessionId, session) -> sendMessage(session, message));
+ MiWebSocketSessionManager.broadcast(message);
}
/**
@@ -103,7 +99,17 @@
*/
public static void sendMessageAll(Map message) {
JSONObject jsonObject = new JSONObject(message);
- ONLINE_USER_SESSIONS.forEach((sessionId, session) -> sendMessage(session, jsonObject.toString()));
+ MiWebSocketSessionManager.broadcast(jsonObject.toString());
+ }
+
+ /**
+ * 推送消息到其他客户端
+ *
+ * @param message
+ */
+ public static void sendMessageAll(Object message) {
+ String jsonMessage = JSONObject.toJSONString(message); // 确保对象转换为 JSON 字符串
+ WebSocketSessionManager.broadcast(jsonMessage);
}
/**
@@ -112,7 +118,7 @@
* @param message
*/
public static void sendMessageAll(List message) {
- ONLINE_USER_SESSIONS.forEach((sessionId, session) -> sendMessage(session, JSON.toJSONString(message)));
+ WebSocketSessionManager.broadcast(JSON.toJSONString(message));
}
// 发送消息到所有 WebSocket 客户端
diff --git a/ard-route/src/main/resources/mapper/ArdRouteMissionMapper.xml b/ard-route/src/main/resources/mapper/ArdRouteMissionMapper.xml
index b3c6aef..cdd6096 100644
--- a/ard-route/src/main/resources/mapper/ArdRouteMissionMapper.xml
+++ b/ard-route/src/main/resources/mapper/ArdRouteMissionMapper.xml
@@ -164,10 +164,10 @@
<update id="updateIsRead">
update ard_route_mission
<trim prefix="SET" suffixOverrides=",">
- <if test="isRead != null">is_read = #{isRead},</if>
+ <if test="isRead != null and isRead != ''">is_read = #{isRead},</if>
</trim>
where id in
- <foreach item="id" collection="array" open="(" separator="," close=")">
+ <foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</update>
--
Gitblit v1.9.3