From f355ef485a56e613b71d0262c089b995d7ca10d2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 23 五月 2025 17:38:39 +0800
Subject: [PATCH] 集成MQTT对接公交主防数据

---
 ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/controller/RealVideoMsgController.java |   32 +++++++++++++++++++++-----------
 1 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/controller/RealVideoMsgController.java b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/controller/RealVideoMsgController.java
index 0853c4b..543ba3c 100644
--- a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/controller/RealVideoMsgController.java
+++ b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/controller/RealVideoMsgController.java
@@ -15,7 +15,10 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 
 /**
  * 实时音视频控制器
@@ -48,13 +51,13 @@
 	 */
 	@PostMapping("/startupRealVideo")
 	public R<UPRealvideoMsgStartupAckVo> startupRealVideo(@RequestParam("inferiorPlatformId") Integer inferiorPlatformId, @RequestParam("vehicleNo") String vehicleNo) {
-		R realVideo = downRealvideoMsgStartupService.startupRealVideo(inferiorPlatformId, vehicleNo);
+		R<String> realVideo = downRealvideoMsgStartupService.startupRealVideo(inferiorPlatformId, vehicleNo);
 		if (realVideo.getCode() != 200) {
-			return realVideo;
+			return R.fail(realVideo.getMsg());
 		}
 		//发送成功,定时任务获取响应结果
 		int num = 0;
-		LocalDateTime now = LocalDateTime.now();
+		long now = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
 		while (true) {
 			UPRealvideoMsgStartupAck realvideoMsgStartupAck = upRealvideoMsgStartupAckDao.findByInferiorPlatformIdAndVehicleNoAndCreateTimeAfter(inferiorPlatformId, vehicleNo, now);
 			if (null == realvideoMsgStartupAck) {
@@ -72,23 +75,30 @@
 					case 0:
 						UPRealvideoMsgStartupAckVo vo = new UPRealvideoMsgStartupAckVo();
 						BeanUtils.copyProperties(realvideoMsgStartupAck, vo);
+						String encode = null;
+						try {
+							encode = URLEncoder.encode(vehicleNo, "UTF-8");
+						} catch (UnsupportedEncodingException e) {
+							throw new RuntimeException(e);
+						}
+						vo.setUrl("http://" + vo.getServerIP() + ":" + vo.getServerPort() + "/" + encode + "." + vo.getVehicleColor() + ".1.0." + realVideo.getData());
 						return R.ok(vo);
 					case 1:
-						return R.fail("失败");
+						return R.fail("发起实时音视频失败,可能是车辆离线导致");
 					case 2:
-						return R.fail("不支持");
+						return R.fail("不支持实时音视频");
 					case 3:
-						return R.fail("会话结束");
+						return R.fail("实时音视频会话结束");
 					case 4:
-						return R.fail("失效口令错误");
+						return R.fail("实时音视频口令错误");
 					case 5:
-						return R.fail("不满足跨域条件");
+						return R.fail("实时音视频不满足跨域条件");
 					default:
-						return R.fail("失败");
+						return R.fail("发起实时音视频失败,可能是车辆离线导致");
 				}
 			}
 			if (num >= 30) {
-				return R.fail("失败");
+				return R.fail("发起实时音视频失败,可能是车辆离线导致");
 			}
 		}
 	}
@@ -108,7 +118,7 @@
 		}
 		//发送成功,定时任务获取响应结果
 		int num = 0;
-		LocalDateTime now = LocalDateTime.now();
+		Long now = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));
 		while (true) {
 			UPRealvideoMsgEndAck upRealvideoMsgEndAck = upRealvideoMsgEndAckDao.findByInferiorPlatformIdAndVehicleNoAndCreateTimeAfter(inferiorPlatformId, vehicleNo, now);
 			if (null == upRealvideoMsgEndAck) {

--
Gitblit v1.7.1