From 8c6849d98fc168369d6de2d94d2f42a6d67cd9c5 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 26 五月 2025 11:51:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java |  246 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 235 insertions(+), 11 deletions(-)

diff --git a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
index 4951ede..2932e7e 100644
--- a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
+++ b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
@@ -1,12 +1,17 @@
 package com.ruoyi.dataInterchange.server;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.dataInterchange.dao.UPExgMsgRealLocationDao;
 import com.ruoyi.dataInterchange.dao.UPWarnMsgAdptInfoDao;
 import com.ruoyi.dataInterchange.dao.UPWarnMsgUrgeTodoAckDao;
 import com.ruoyi.dataInterchange.model.*;
 import com.ruoyi.dataInterchange.model.enu.DataType;
 import com.ruoyi.dataInterchange.netty.client.ChannelMap;
+import com.ruoyi.dataInterchange.util.haikang.model.Alarm;
+import com.ruoyi.dataInterchange.util.haikang.model.AlarmPic;
+import com.ruoyi.dataInterchange.util.haikang.model.Event;
+import com.ruoyi.dataInterchange.util.haikang.model.SubscriptionEvent;
 import com.ruoyi.dataInterchange.util.jtt809.common.Jtt809Util;
 import com.ruoyi.dataInterchange.util.jtt809.packet.common.OuterPacket;
 import io.netty.buffer.ByteBuf;
@@ -16,10 +21,12 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.List;
 
@@ -45,7 +52,8 @@
 	
 	@Resource
 	private UPExgMsgRealLocationDao upExgMsgRealLocationDao;
-	
+	//走川标的公司
+	private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394);
 	
 	public void up_warn_msg(ChannelHandlerContext ctx, OuterPacket out) {
 		if (!redisTemplate.hasKey("login:" + out.getGnsscenterId())) {
@@ -68,7 +76,6 @@
 				break;
 		}
 	}
-	
 	
 	/**
 	 * 解析子业务数据
@@ -98,8 +105,7 @@
 		warnMsg.setData(data);
 		return warnMsg;
 	}
-	
-	
+
 	/**
 	 * 报警督办应答消息
 	 *
@@ -114,13 +120,6 @@
 		upWarnMsgUrgeTodoAckDao.save(upWarnMsgUrgeTodoAck);
 	}
 
-
-
-
-	//走川标的公司
-	private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394);
-
-	
 	/**
 	 * 上报报警信息
 	 *
@@ -182,4 +181,229 @@
 		upWarnMsgAdptInfo.setPushTime(LocalDateTime.now().plusDays(7).toEpochSecond(ZoneOffset.ofHours(8)));
 		upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
 	}
+	
+	
+	/**
+	 * 存储mqtt协议报警信息
+	 */
+	public void saveWarnMsgService(JSONObject jsonObject) {
+		SubscriptionEvent subscriptionEvent = jsonObject.getObject("", SubscriptionEvent.class);
+		List<Event> events = subscriptionEvent.getEvents();
+		events.forEach(event -> {
+			//车牌号
+			String srcName = event.getSrcName();
+			Alarm data = JSONObject.parseObject(event.getData(), Alarm.class);
+			UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(data.getAlarmId());
+			if(null == upWarnMsgAdptInfo){
+				upWarnMsgAdptInfo = new UPWarnMsgAdptInfo();
+			}
+			upWarnMsgAdptInfo.setVehicleNo(srcName);
+			upWarnMsgAdptInfo.setVehicleColor(data.getVehicleLicenseColor());
+			upWarnMsgAdptInfo.setWarnSrc(data.getSourceType() + 1);
+			upWarnMsgAdptInfo.setWarnType(getAlarmType(data.getEventType()));
+			upWarnMsgAdptInfo.setWarnTime(LocalDateTime.parse(data.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).toEpochSecond(ZoneOffset.ofHours(8)));
+			upWarnMsgAdptInfo.setInfoId(data.getAlarmId());
+			upWarnMsgAdptInfo.setLevel(getLevel(data.getLevel()));
+			upWarnMsgAdptInfo.setLongitude(data.getLongitude().intValue());
+			upWarnMsgAdptInfo.setLatitude(data.getLatitude().intValue());
+			upWarnMsgAdptInfo.setAltitude(data.getHeight().intValue() / 10);
+			upWarnMsgAdptInfo.setSpeed(data.getSpeed().intValue() / 10000);
+			upWarnMsgAdptInfo.setVec2(data.getSpeed().intValue());
+			upWarnMsgAdptInfo.setStatus(data.getStatus());
+			upWarnMsgAdptInfo.setDirection(data.getDirection() / 100);
+			upWarnMsgAdptInfo.setInfoContent(data.getAlarmInfo());
+			upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
+		});
+	}
+	
+	public int getAlarmType(long eventType){
+		switch ((int) eventType){
+			case 0x00020501:
+				return 0x0301;
+			case 0x00020502:
+				return 0x0201;
+			case 0x00020503:
+				return 0x0202;
+			case 0x00020504:
+				return 0x0202;
+			case 0x00020505:
+				return 0x0202;
+			case 0x00020506:
+				return 0x0202;
+			case 0x00020507:
+				return 0x0203;
+			case 0x00020508:
+				return 0x0203;
+			case 0x00020509:
+				return 0x0204;
+			case 0x00020510:
+				return 0x0204;
+			case 0x00037017:
+				return 0x00FF;
+			case 0x00020511:
+				return 0x00FF;
+			case 0x00037005:
+				return 0x00FF;
+			case 0x00020512:
+				return 0x0002;
+			case 0x00020513:
+				return 0x0002;
+			case 0x00020514:
+				return 0x00FF;
+			case 0x00020515:
+				return 0x00FF;
+			case 0x00020516:
+				return 0x0214;
+			case 0x00020517:
+				return 0x0213;
+			case 0x00020519:
+				return 0x0215;
+			case 0x00020520:
+				return 0x0234;
+			case 0x00020521:
+				return 0x0234;
+			case 0x00020522:
+				return 0x0234;
+			case 0x00020523:
+				return 0x0241;
+			case 0x00020524:
+				return 0x0242;
+			case 0x00020525:
+				return 0x0243;
+			case 0x00020526:
+				return 0x0243;
+			case 0x00020531:
+				return 0x00FF;
+			case 0x00020532:
+				return 0x00FF;
+			case 0x00020533:
+				return 0x00FF;
+			case 0x00020534:
+				return 0x0218;
+			case 0x00020518:
+				return 0xA0FF;
+			case 0x00037001:
+				return 0xA0FF;
+			case 0x00037002:
+				return 0x0216;
+			case 0x00037006:
+				return 0x0216;
+			case 0x00020535:
+				return 0x0001;
+			case 0x00020536:
+				return 0x0001;
+			case 0x00020537:
+				return 0x000D;
+			case 0x00020102:
+				return 0x0102;
+			case 0x00020538:
+				return 0x0005;
+			case 0x00020539:
+				return 0x0004;
+			case 0x00020540:
+				return 0x0304;
+			case 0x00020541:
+				return 0x0304;
+			case 0x00020542:
+				return 0x000B;
+			case 0x00020543:
+				return 0x0001;
+			case 0x00020544:
+				return 0x0001;
+			case 0x00020545:
+				return 0xA001;
+			case 0x00020546:
+				return 0x0305;
+			case 0x00020547:
+				return 0x0305;
+			case 0x00020548:
+				return 0xA0FF;
+			case 0x00010202:
+				return 0x0103;
+			case 0x00010206:
+				return 0x0103;
+			case 0x00020101:
+				return 0x0101;
+			case 0x00020103:
+				return 0x000C;
+			case 0x00020549:
+				return 0xA00A;
+			case 0x00020550:
+				return 0xA00A;
+			case 0x00020551:
+				return 0xA00A;
+			case 0x00020552:
+				return 0x0308;
+			case 0x00020553:
+				return 0x0308;
+			case 0x00020554:
+				return 0x0308;
+			case 0x00020555:
+				return 0x0308;
+			case 0x00020556:
+				return 0x0308;
+			case 0x00020557:
+				return 0x0308;
+			case 0x00020558:
+				return 0x0308;
+			case 0x00020559:
+				return 0x0003;
+			case 0x00020527:
+				return 0x0301;
+			case 0x00020528:
+				return 0x0201;
+			case 0x00020529:
+				return 0x0302;
+			case 0x00020530:
+				return 0x0302;
+			case 0x00020560:
+				return 0x0009;
+			case 0x00020561:
+				return 0x0306;
+			case 0x00020562:
+				return 0x0307;
+			case 0x00090001:
+				return 0x00FF;
+				default:
+					return 0x00FF;
+		}
+	}
+	
+	public int getLevel(String level){
+		switch (level){
+			case "h":
+			case "m":
+				return 1;
+			case "l":
+			case "w":
+				return 2;
+			default:
+				return 0;
+		}
+	}
+	
+	/**
+	 * 存储mqtt协议报警图片信息
+	 */
+	public void saveWarnMsgPicService(JSONObject jsonObject) {
+		SubscriptionEvent subscriptionEvent = jsonObject.getObject("", SubscriptionEvent.class);
+		List<Event> events = subscriptionEvent.getEvents();
+		events.forEach(event -> {
+			AlarmPic data = JSONObject.parseObject(event.getData(), AlarmPic.class);
+			if(StringUtils.hasLength(data.getAlarmId())){
+				UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(data.getAlarmId());
+				if(null != upWarnMsgAdptInfo){
+					upWarnMsgAdptInfo.setPicUrl(data.getUrl());
+					upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
+				}else{
+					upWarnMsgAdptInfo = new UPWarnMsgAdptInfo();
+					upWarnMsgAdptInfo.setInfoId(data.getAlarmId());
+					upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
+				}
+			}
+		});
+	}
+	
+	
+	
 }

--
Gitblit v1.7.1