| 
					
				 | 
			
			
				@@ -20,8 +20,7 @@ import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.dom4j.Element; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.InitializingBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Qualifier; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.annotation.Scheduled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.util.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,6 +29,8 @@ import javax.sip.RequestEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.sip.SipException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.sip.message.Response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.concurrent.ConcurrentLinkedQueue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -64,12 +65,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IDeviceChannelService deviceChannelService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ConcurrentLinkedQueue<SipMsgInfo> taskQueue = new ConcurrentLinkedQueue<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Qualifier("taskExecutor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private ThreadPoolTaskExecutor taskExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final ConcurrentLinkedQueue<SipMsgInfo> taskQueue = new ConcurrentLinkedQueue<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void afterPropertiesSet() throws Exception { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -78,118 +74,136 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void handForDevice(RequestEvent evt, Device device, Element rootElement) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        boolean isEmpty = taskQueue.isEmpty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        taskQueue.offer(new SipMsgInfo(evt, device, rootElement)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 回复200 OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            responseAck((SIPRequest) evt.getRequest(), Response.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (SipException | InvalidArgumentException | ParseException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.error("[命令发送失败] 报警通知回复: {}", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (taskQueue.size() >= userSetting.getMaxNotifyCountQueue()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("[Alarm] 待处理消息队列已满 {},返回486 BUSY_HERE,消息不做处理", userSetting.getMaxNotifyCountQueue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (isEmpty) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            taskExecutor.execute(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (log.isDebugEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    log.info("[处理报警通知]待处理数量:{}", taskQueue.size() ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                while (!taskQueue.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        SipMsgInfo sipMsgInfo = taskQueue.poll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        taskQueue.offer(new SipMsgInfo(evt, device, rootElement)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Element deviceIdElement = sipMsgInfo.getRootElement().element("DeviceID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String channelId = deviceIdElement.getText().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Scheduled(fixedDelay = 200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void executeTaskQueue() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (taskQueue.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<SipMsgInfo> handlerCatchDataList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int size = taskQueue.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < size; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SipMsgInfo poll = taskQueue.poll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (poll != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                handlerCatchDataList.add(poll); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (handlerCatchDataList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (SipMsgInfo sipMsgInfo : handlerCatchDataList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (sipMsgInfo == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RequestEvent evt = sipMsgInfo.getEvt(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            System.out.println(evt.getRequest()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 回复200 OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                responseAck((SIPRequest) evt.getRequest(), Response.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (SipException | InvalidArgumentException | ParseException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("[命令发送失败] 报警通知回复: {}", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Device device = sipMsgInfo.getDevice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Element deviceIdElement = sipMsgInfo.getRootElement().element("DeviceID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String channelId = deviceIdElement.getText(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        DeviceAlarm deviceAlarm = new DeviceAlarm(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setCreateTime(DateUtil.getNow()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setDeviceId(sipMsgInfo.getDevice().getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setChannelId(channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setAlarmPriority(getText(sipMsgInfo.getRootElement(), "AlarmPriority")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setAlarmMethod(getText(sipMsgInfo.getRootElement(), "AlarmMethod")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String alarmTime = XmlUtil.getText(sipMsgInfo.getRootElement(), "AlarmTime"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (alarmTime == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        deviceAlarm.setAlarmTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(alarmTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String alarmDescription = getText(sipMsgInfo.getRootElement(), "AlarmDescription"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (alarmDescription == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setAlarmDescription(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setAlarmDescription(alarmDescription); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String longitude = getText(sipMsgInfo.getRootElement(), "Longitude"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (longitude != null && NumericUtil.isDouble(longitude)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setLongitude(Double.parseDouble(longitude)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setLongitude(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String latitude = getText(sipMsgInfo.getRootElement(), "Latitude"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (latitude != null && NumericUtil.isDouble(latitude)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setLatitude(Double.parseDouble(latitude)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarm.setLatitude(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DeviceAlarm deviceAlarm = new DeviceAlarm(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setCreateTime(DateUtil.getNow()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setDeviceId(sipMsgInfo.getDevice().getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setChannelId(channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setAlarmPriority(getText(sipMsgInfo.getRootElement(), "AlarmPriority")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setAlarmMethod(getText(sipMsgInfo.getRootElement(), "AlarmMethod")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String alarmTime = XmlUtil.getText(sipMsgInfo.getRootElement(), "AlarmTime"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (alarmTime == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                deviceAlarm.setAlarmTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(alarmTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String alarmDescription = getText(sipMsgInfo.getRootElement(), "AlarmDescription"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (alarmDescription == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setAlarmDescription(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setAlarmDescription(alarmDescription); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String longitude = getText(sipMsgInfo.getRootElement(), "Longitude"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (longitude != null && NumericUtil.isDouble(longitude)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setLongitude(Double.parseDouble(longitude)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setLongitude(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String latitude = getText(sipMsgInfo.getRootElement(), "Latitude"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (latitude != null && NumericUtil.isDouble(latitude)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setLatitude(Double.parseDouble(latitude)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarm.setLatitude(0.00); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (!ObjectUtils.isEmpty(deviceAlarm.getAlarmMethod()) &&  deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.GPS.getVal() + "")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            DeviceChannel deviceChannel = deviceChannelService.getOne(device.getDeviceId(), channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (deviceChannel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                log.warn("[解析报警消息] 未找到通道:{}/{}", device.getDeviceId(), channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                MobilePosition mobilePosition = new MobilePosition(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setCreateTime(DateUtil.getNow()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setChannelId(deviceChannel.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setTime(deviceAlarm.getAlarmTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setLongitude(deviceAlarm.getLongitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setLatitude(deviceAlarm.getLatitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                mobilePosition.setReportSource("GPS Alarm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!ObjectUtils.isEmpty(deviceAlarm.getAlarmMethod()) && deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.GPS.getVal() + "")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DeviceChannel deviceChannel = deviceChannelService.getOne(device.getDeviceId(), channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (deviceChannel == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        log.warn("[解析报警消息] 未找到通道:{}/{}", device.getDeviceId(), channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MobilePosition mobilePosition = new MobilePosition(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setCreateTime(DateUtil.getNow()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setDeviceId(deviceAlarm.getDeviceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setChannelId(deviceChannel.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setTime(deviceAlarm.getAlarmTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setLongitude(deviceAlarm.getLongitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setLatitude(deviceAlarm.getLatitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mobilePosition.setReportSource("GPS Alarm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                // 更新device channel 的经纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                deviceChannel.setLongitude(mobilePosition.getLongitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                deviceChannel.setLatitude(mobilePosition.getLatitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                deviceChannel.setGpsTime(mobilePosition.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // 更新device channel 的经纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        deviceChannel.setLongitude(mobilePosition.getLongitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        deviceChannel.setLatitude(mobilePosition.getLatitude()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        deviceChannel.setGpsTime(mobilePosition.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                deviceChannelService.updateChannelGPS(device, deviceChannel, mobilePosition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (!ObjectUtils.isEmpty(deviceAlarm.getDeviceId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.Video.getVal() + "")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                deviceAlarm.setAlarmType(getText(sipMsgInfo.getRootElement().element("Info"), "AlarmType")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (log.isDebugEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            log.debug("[收到报警通知]设备:{}, 内容:{}", device.getDeviceId(), JSON.toJSONString(deviceAlarm)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        // 作者自用判断,其他小伙伴需要此消息可以自行修改,但是不要提在pr里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (DeviceAlarmMethod.Other.getVal() == Integer.parseInt(deviceAlarm.getAlarmMethod())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            // 发送给平台的报警信息。 发送redis通知 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            log.info("[发送给平台的报警信息]内容:{}", JSONObject.toJSONString(deviceAlarm)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            AlarmChannelMessage alarmChannelMessage = new AlarmChannelMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (deviceAlarm.getAlarmMethod() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                alarmChannelMessage.setAlarmSn(Integer.parseInt(deviceAlarm.getAlarmMethod())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            alarmChannelMessage.setAlarmDescription(deviceAlarm.getAlarmDescription()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (deviceAlarm.getAlarmType() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                alarmChannelMessage.setAlarmType(Integer.parseInt(deviceAlarm.getAlarmType())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            alarmChannelMessage.setGbId(channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            redisCatchStorage.sendAlarmMsg(alarmChannelMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        deviceChannelService.updateChannelGPS(device, deviceChannel, mobilePosition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!ObjectUtils.isEmpty(deviceAlarm.getDeviceId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (deviceAlarm.getAlarmMethod().contains(DeviceAlarmMethod.Video.getVal() + "")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        deviceAlarm.setAlarmType(getText(sipMsgInfo.getRootElement().element("Info"), "AlarmType")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (log.isDebugEnabled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log.debug("[收到报警通知]设备:{}, 内容:{}", device.getDeviceId(), JSON.toJSONString(deviceAlarm)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 作者自用判断,其他小伙伴需要此消息可以自行修改,但是不要提在pr里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (DeviceAlarmMethod.Other.getVal() == Integer.parseInt(deviceAlarm.getAlarmMethod())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 发送给平台的报警信息。 发送redis通知 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log.info("[发送给平台的报警信息]内容:{}", JSONObject.toJSONString(deviceAlarm)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AlarmChannelMessage alarmChannelMessage = new AlarmChannelMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (deviceAlarm.getAlarmMethod() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        alarmChannelMessage.setAlarmSn(Integer.parseInt(deviceAlarm.getAlarmMethod())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    alarmChannelMessage.setAlarmDescription(deviceAlarm.getAlarmDescription()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (deviceAlarm.getAlarmType() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        alarmChannelMessage.setAlarmType(Integer.parseInt(deviceAlarm.getAlarmType())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    alarmChannelMessage.setGbId(channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    redisCatchStorage.sendAlarmMsg(alarmChannelMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        log.debug("存储报警信息、报警分类"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        // 存储报警信息、报警分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (sipConfig.isAlarm()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            deviceAlarmService.add(deviceAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.debug("存储报警信息、报警分类"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 存储报警信息、报警分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (sipConfig.isAlarm()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deviceAlarmService.add(deviceAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (redisCatchStorage.deviceIsOnline(sipMsgInfo.getDevice().getDeviceId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            publisher.deviceAlarmEventPublish(deviceAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        log.error("未处理的异常 ", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        log.warn("[收到报警通知] 发现未处理的异常, {}\r\n{}",e.getMessage(), evt.getRequest()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (redisCatchStorage.deviceIsOnline(sipMsgInfo.getDevice().getDeviceId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    publisher.deviceAlarmEventPublish(deviceAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.error("未处理的异常 ", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.warn("[收到报警通知] 发现未处理的异常, {}\r\n{}", e.getMessage(), evt.getRequest()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -203,7 +217,7 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             log.error("[命令发送失败] 国标级联 报警通知回复: {}", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Element deviceIdElement = rootElement.element("DeviceID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String channelId = deviceIdElement.getText().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String channelId = deviceIdElement.getText(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         DeviceAlarm deviceAlarm = new DeviceAlarm(); 
			 |