Parcourir la source

完善目录订阅

648540858 il y a 4 ans
Parent
commit
f559e6a395

+ 2 - 2
src/main/java/com/genersoft/iot/vmp/conf/ThreadPoolTaskConfig.java

@@ -8,7 +8,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
 
 @Configuration
-@EnableAsync
+@EnableAsync(proxyTargetClass = true)
 public class ThreadPoolTaskConfig {
 
     /**
@@ -36,7 +36,7 @@ public class ThreadPoolTaskConfig {
     /**
      * 线程池名前缀
      */
-    private static final String threadNamePrefix = "hdl-uhi-service-";
+    private static final String threadNamePrefix = "wvp-sip-handle-";
 
     @Bean("taskExecutor") // bean的名称,默认为首字母小写的方法名
     public ThreadPoolTaskExecutor taskExecutor() {

+ 15 - 16
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java

@@ -230,8 +230,6 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
 			String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader);
 
 			Element rootElement = getRootElement(evt);
-			Element deviceIdElement = rootElement.element("DeviceID");
-			String channelId = deviceIdElement.getText();
 			Device device = storager.queryVideoDevice(deviceId);
 			if (device == null) {
 				return;
@@ -254,22 +252,23 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
 						continue;
 					}
 					Element eventElement = itemDevice.element("Event");
+					DeviceChannel channel = channelContentHander(itemDevice);
 					switch (eventElement.getText().toUpperCase()) {
 						case "ON" : // 上线
-							logger.info("收到来自设备【{}】的通道上线【{}】通知", device.getDeviceId(), channelId);
-							storager.deviceChannelOnline(deviceId, channelId);
+							logger.info("收到来自设备【{}】的通道【{}】上线通知", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOnline(deviceId, channel.getChannelId());
 							// 回复200 OK
 							responseAck(evt, Response.OK);
 							break;
 						case "OFF" : // 离线
-							logger.info("收到来自设备【{}】的通道离线【{}】通知", device.getDeviceId(), channelId);
-							storager.deviceChannelOffline(deviceId, channelId);
+							logger.info("收到来自设备【{}】的通道【{}】离线通知", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOffline(deviceId, channel.getChannelId());
 							// 回复200 OK
 							responseAck(evt, Response.OK);
 							break;
 						case "VLOST" : // 视频丢失
-							logger.info("收到来自设备【{}】的通道视频丢失【{}】通知", device.getDeviceId(), channelId);
-							storager.deviceChannelOffline(deviceId, channelId);
+							logger.info("收到来自设备【{}】的通道【{}】视频丢失通知", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOffline(deviceId, channel.getChannelId());
 							// 回复200 OK
 							responseAck(evt, Response.OK);
 							break;
@@ -278,19 +277,17 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
 							responseAck(evt, Response.OK);
 							break;
 						case "ADD" : // 增加
-							logger.info("收到来自设备【{}】的增加通道【{}】通知", device.getDeviceId(), channelId);
-							DeviceChannel deviceChannel = channelContentHander(itemDevice, channelId);
-							storager.updateChannel(deviceId, deviceChannel);
+							logger.info("收到来自设备【{}】的增加通道【{}】通知", device.getDeviceId(), channel.getChannelId());
+							storager.updateChannel(deviceId, channel);
 							responseAck(evt, Response.OK);
 							break;
 						case "DEL" : // 删除
-							logger.info("收到来自设备【{}】的删除通道【{}】通知", device.getDeviceId(), channelId);
-							storager.delChannel(deviceId, channelId);
+							logger.info("收到来自设备【{}】的删除通道【{}】通知", device.getDeviceId(), channel.getChannelId());
+							storager.delChannel(deviceId, channel.getChannelId());
 							responseAck(evt, Response.OK);
 							break;
 						case "UPDATE" : // 更新
-							logger.info("收到来自设备【{}】的更新通道【{}】通知", device.getDeviceId(), channelId);
-							DeviceChannel channel = channelContentHander(itemDevice, channelId);
+							logger.info("收到来自设备【{}】的更新通道【{}】通知", device.getDeviceId(), channel.getChannelId());
 							storager.updateChannel(deviceId, channel);
 							responseAck(evt, Response.OK);
 							break;
@@ -316,13 +313,15 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
 		}
 	}
 
-	public DeviceChannel channelContentHander(Element itemDevice, String channelId){
+	public DeviceChannel channelContentHander(Element itemDevice){
 		Element channdelNameElement = itemDevice.element("Name");
 		String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
 		Element statusElement = itemDevice.element("Status");
 		String status = statusElement != null ? statusElement.getTextTrim().toString() : "ON";
 		DeviceChannel deviceChannel = new DeviceChannel();
 		deviceChannel.setName(channelName);
+		Element channdelIdElement = itemDevice.element("DeviceID");
+		String channelId = channdelIdElement != null ? channdelIdElement.getTextTrim().toString() : "";
 		deviceChannel.setChannelId(channelId);
 		// ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR的兼容性处理
 		if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java

@@ -47,7 +47,7 @@ public class DeviceServiceImpl implements IDeviceService {
         if (device == null || device.getSubscribeCycleForCatalog() < 0) {
             return false;
         }
-        logger.info("移除目录订阅【{}】", device.getDeviceId());
+        logger.info("移除目录订阅: {}", device.getDeviceId());
         dynamicTask.stopCron(device.getDeviceId());
         device.setSubscribeCycleForCatalog(0);
         sipCommander.catalogSubscribe(device, null, null);