From 41c64a5680521bf1d41fa6b9caadc55feac68ca3 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 05 六月 2025 16:12:59 +0800
Subject: [PATCH] 优化报警

---
 ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java |   87 ++++++++++++++++++++++++++++++-------------
 1 files changed, 60 insertions(+), 27 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 9b7cc4a..1d3791a 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
@@ -197,8 +197,10 @@
 		upWarnMsgOperationInfoDao.save(upWarnMsgOperationInfo);
 		//修改报警处理结果
 		UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(upWarnMsgOperationInfo.getInfoId());
-		upWarnMsgAdptInfo.setResult(upWarnMsgOperationInfo.getResult());
-		upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
+		if(null != upWarnMsgAdptInfo){
+			upWarnMsgAdptInfo.setResult(upWarnMsgOperationInfo.getResult());
+			upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
+		}
 	}
 	
 	
@@ -213,22 +215,26 @@
 		upWarnMsgFileListAck.setInferiorPlatformId(inferiorPlatformId);
 		upWarnMsgFileListAck.setCreateTime(LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
 		upWarnMsgFileListAckDao.save(upWarnMsgFileListAck);
-		//修改报警处理结果
+		//修改报警附件数据
 		UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(upWarnMsgFileListAck.getInfoId());
-		StringJoiner joiner = new StringJoiner(",");
-		upWarnMsgFileListAck.getFileList().forEach(file->{
-			if(file.getFileType() == 0x00){
-				joiner.add(file.getFileUrl());
-			}
-		});
-		upWarnMsgAdptInfo.setPicUrl(joiner.toString());
+		if(upWarnMsgFileListAck.getFileList().size() > 0){
+			StringJoiner joiner = new StringJoiner(",");
+			upWarnMsgFileListAck.getFileList().forEach(file->{
+				if(file.getFileType() == 0x00){
+					joiner.add(file.getFileUrl());
+				}
+			});
+			upWarnMsgAdptInfo.setPicUrl(joiner.toString());
+		}else{
+			upWarnMsgAdptInfo.setPicUrl("*");
+		}
 		upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
 	}
 	
 	
 	
 	/**
-	 * 定时任务督办报警请求
+	 * 定时任务督办报警请求和附件请求
 	 */
 	public void taskUrgeTodo() {
 		List<UPWarnMsgAdptInfo> list = upWarnMsgAdptInfoDao.findByResultIsAndLevelNotNullAndPushTimeBefore(0x00, LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
@@ -237,11 +243,13 @@
 			//海康威视直接走接口
 			if(25439966 == inferiorPlatformId){
 				try {
-					if("***".equals(upWarnMsgAdptInfo.getPicUrl())){
+					if(!StringUtils.hasLength(upWarnMsgAdptInfo.getPicUrl())){
 						FindPicturesByAlarmIdRequest findPicturesByAlarmIdRequest = new FindPicturesByAlarmIdRequest();
 						findPicturesByAlarmIdRequest.setAlarmId(upWarnMsgAdptInfo.getInfoId());
 						long warnTime = upWarnMsgAdptInfo.getWarnTime();
-						findPicturesByAlarmIdRequest.setAlarmTime(LocalDateTime.ofEpochSecond(warnTime, 0, ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+						String format = LocalDateTime.ofEpochSecond(warnTime, 0, ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
+						format = format.replace(" ", "T") + "+08:00";
+						findPicturesByAlarmIdRequest.setAlarmTime(format);
 						String pictures = Artemis.findPicturesByAlarmId(findPicturesByAlarmIdRequest);
 						JSONObject jsonObject = JSONObject.parseObject(pictures);
 						Integer code = jsonObject.getInteger("code");
@@ -253,20 +261,31 @@
 								String url = jsonObject1.getString("url");
 								joiner.add(url);
 							}
-							upWarnMsgAdptInfo.setPicUrl(joiner.toString());
+							upWarnMsgAdptInfo.setPicUrl(joiner.length() > 0 ? joiner.toString() : "*");
 							upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
 						}
 					}
-					
-					
-					
-					
-					
 				}catch (Exception e){
 					e.printStackTrace();
 				}
 			}
-			
+			//请求报警附件(川标协议)
+			if(enterprise.contains(inferiorPlatformId) && !StringUtils.hasLength(upWarnMsgAdptInfo.getPicUrl())){
+				DOWNWarnMsgFileListReq downWarnMsgFileListReq = new DOWNWarnMsgFileListReq();
+				downWarnMsgFileListReq.setVehicleNo(upWarnMsgAdptInfo.getVehicleNo());
+				downWarnMsgFileListReq.setVehicleColor(upWarnMsgAdptInfo.getVehicleColor());
+				downWarnMsgFileListReq.setDataType(DataType.DOWN_WARN_MSG_FILELIST_REQ.getCode());
+				downWarnMsgFileListReq.setDataLength(32);
+				downWarnMsgFileListReq.setInfoId(upWarnMsgAdptInfo.getInfoId());
+				byte[] body = downWarnMsgFileListReq.encode();
+				OuterPacket out = new OuterPacket(DataType.DOWN_WARN_MSG.getCode(), inferiorPlatformId, body);
+				//获取从链路通道
+				Channel channel = ChannelMap.getClientChannel(inferiorPlatformId);
+				if (null != channel && channel.isActive()) {
+					channel.writeAndFlush(out);
+					log.info("报警附件目录请求({}):{}", DataType.DOWN_WARN_MSG_FILELIST_REQ.getCode(), JSON.toJSONString(downWarnMsgFileListReq));
+				}
+			}
 			
 			down_warn_msg_urge_todo_req(upWarnMsgAdptInfo);
 		}
@@ -326,11 +345,21 @@
 					}
 					upWarnMsgAdptInfo.setInfoId(data.getAlarmId());
 					upWarnMsgAdptInfo.setLevel(getLevel(data.getLevel()));
-					if(null != data.getLatitude()){
-						upWarnMsgAdptInfo.setLongitude(data.getLatitude().intValue() * 10);
-					}
-					if(null != data.getLongitude()){
-						upWarnMsgAdptInfo.setLatitude(data.getLongitude().intValue());
+//					if(null != data.getLatitude()){
+//						upWarnMsgAdptInfo.setLongitude(data.getLatitude().intValue() * 10);
+//					}
+//					if(null != data.getLongitude()){
+//						upWarnMsgAdptInfo.setLatitude(data.getLongitude().intValue());
+//					}
+					//调用获取实时定位数据
+					UPExgMsgRealLocation upExgMsgRealLocation = upExgMsgRealLocationDao.findByVehicleNoOrderByCreateTimeDesc(upWarnMsgAdptInfo.getVehicleNo());
+					if (null != upExgMsgRealLocation) {
+						GnssData gnssData = upExgMsgRealLocation.getGnssData();
+						upWarnMsgAdptInfo.setSpeed(gnssData.getVec1());
+						upWarnMsgAdptInfo.setLongitude(gnssData.getLon());
+						upWarnMsgAdptInfo.setLatitude(gnssData.getLat());
+					}else{
+						return;
 					}
 					if(null != data.getHeight()){
 						upWarnMsgAdptInfo.setAltitude(data.getHeight().intValue() / 10);
@@ -355,10 +384,12 @@
 					
 					//获取报警抓拍图片
 					if(data.getPicNum() > 0){
-						upWarnMsgAdptInfo.setPicUrl("***");
 						FindPicturesByAlarmIdRequest findPicturesByAlarmIdRequest = new FindPicturesByAlarmIdRequest();
 						findPicturesByAlarmIdRequest.setAlarmId(data.getAlarmId());
-						findPicturesByAlarmIdRequest.setAlarmTime(data.getAlarmTime());
+						long warnTime = upWarnMsgAdptInfo.getWarnTime();
+						String format = LocalDateTime.ofEpochSecond(warnTime, 0, ZoneOffset.ofHours(8)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
+						format = format.replace(" ", "T") + "+08:00";
+						findPicturesByAlarmIdRequest.setAlarmTime(format);
 						String pictures = Artemis.findPicturesByAlarmId(findPicturesByAlarmIdRequest);
 						JSONObject jsonObject1 = JSONObject.parseObject(pictures);
 						Integer code = jsonObject1.getInteger("code");
@@ -372,6 +403,8 @@
 							}
 							upWarnMsgAdptInfo.setPicUrl(joiner.toString());
 						}
+					}else{
+						upWarnMsgAdptInfo.setPicUrl("*");
 					}
 					upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
 					

--
Gitblit v1.7.1