From 3cc3d0a10593c109a015d01ee05de8da73443778 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 14 四月 2026 20:39:03 +0800
Subject: [PATCH] [feat]事故任务分派逻辑完善、转派工单
---
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java | 42 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
index 030bdd3..21eecdb 100644
--- a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
+++ b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
@@ -2,11 +2,17 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
import com.xiaopeng.pushMessage.webSocket.service.WebSocketUserConnectionManager;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.socket.CloseStatus;
@@ -14,6 +20,7 @@
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
+import javax.annotation.PostConstruct;
import java.time.LocalDateTime;
import java.util.UUID;
@@ -31,6 +38,16 @@
@Autowired
private WebSocketAuthHandler authHandler;
+
+ private ObjectMapper om;
+
+ @PostConstruct
+ void setupObjectMapper() {
+ // 允许对象忽略json中不存在的属性
+ om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ om.registerModule(new JavaTimeModule());
+ om = new ObjectMapper();
+ }
// ==================== 连接生命周期 ====================
@@ -61,6 +78,12 @@
log.info("[服务器] 收到消息 -> {}", payload);
try {
+ if (payload.startsWith("pos:")) {
+ if (log.isDebugEnabled())
+ log.debug("收到运维人员位置上报消息:{}",payload);
+ XpOperationsUserPositionDTO xpOperationsUserPositionDTO = om.readValue(payload.substring(4), XpOperationsUserPositionDTO.class);
+ saveToMongo(xpOperationsUserPositionDTO);
+ }
JSONObject messageObj = JSON.parseObject(payload);
String messageType = messageObj.getString("type");
@@ -77,6 +100,21 @@
}
}
+ @Autowired
+ private MongoTemplate mongoTemplate;
+ private void saveToMongo(XpOperationsUserPositionDTO dto) {
+ XpOperationsUserPositionDTO vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("id").is(dto.getId())), XpOperationsUserPositionDTO.class);
+ if (null == vehiclePosition) {
+ mongoTemplate.save(dto);
+ }else{
+ Update update = new Update()
+ .set("id",dto.getId())
+ .set("latitude", dto.getLatitude())
+ .set("latitude", dto.getLongitude());
+ mongoTemplate.updateFirst(new Query(Criteria.where("id").is(dto.getId())), update, XpOperationsUserPositionDTO.class);
+ }
+ }
+
// ==================== 业务处理 ====================
/**
--
Gitblit v1.7.1