From c084d6c98af1ef4d36a61adc719df5db76589428 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期六, 07 十月 2023 18:00:08 +0800 Subject: [PATCH] 优化国标级联心跳失败判断逻辑 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java | 41 ++++++++++++++++++++++++++++++++--------- 1 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java old mode 100644 new mode 100755 index 8234cb1..8b774e1 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java @@ -6,6 +6,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import gov.nist.javax.sip.message.SIPRequest; import org.dom4j.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +22,8 @@ import javax.sip.message.Response; import java.text.ParseException; +import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; + @Component public class DeviceInfoQueryMessageHandler extends SIPRequestProcessorParent implements InitializingBean, IMessageHandler { @@ -31,6 +35,8 @@ @Autowired private SIPCommanderFroPlatform cmderFroPlatform; + @Autowired + private IVideoManagerStorage storager; @Override public void afterPropertiesSet() throws Exception { @@ -44,19 +50,36 @@ @Override public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) { - logger.info("鎺ユ敹鍒癉eviceInfo鏌ヨ娑堟伅"); + logger.info("[DeviceInfo鏌ヨ]娑堟伅"); FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME); try { // 鍥炲200 OK - responseAck(evt, Response.OK); - } catch (SipException e) { - e.printStackTrace(); - } catch (InvalidArgumentException e) { - e.printStackTrace(); - } catch (ParseException e) { - e.printStackTrace(); + responseAck((SIPRequest) evt.getRequest(), Response.OK); + } catch (SipException | InvalidArgumentException | ParseException e) { + logger.error("[鍛戒护鍙戦�佸け璐 DeviceInfo鏌ヨ鍥炲: {}", e.getMessage()); + return; } String sn = rootElement.element("SN").getText(); - cmderFroPlatform.deviceInfoResponse(parentPlatform, sn, fromHeader.getTag()); + + /*鏍规嵁WVP鍘熸湁鐨勬暟鎹粨鏋勶紝璁惧鍜岄�氶亾鏄垎寮�鏀剧疆锛岃澶囦俊鎭兘鏄瓨鏀惧湪璁惧琛ㄩ噷锛岄�氶亾琛ㄩ噷鐨勮澶囦俊鎭笉鍙綔涓虹湡瀹炰俊鎭鐞� + 澶ч儴鍒哊VR/IPC璁惧瀵逛粬鐨勯�氶亾淇℃伅瀹炵幇閮芥槸杩斿洖榛樿鐨勫�兼病鏈変粈涔堝弬鑰冧环鍊笺�侼VR/IPC閫氶亾鎴戜滑缁熶竴浣跨敤璁惧琛ㄧ殑璁惧淇℃伅鏉ヤ綔涓鸿繑鍥炪�� + 鎴戜滑杩欓噷浣跨敤鏌ヨ鏁版嵁搴撶殑鏂瑰紡鏉ュ疄鐜拌繖涓澶囦俊鎭煡璇㈢殑鍔熻兘锛屽湪鍏朵粬鍦版柟瀵硅澶囦俊鎭洿鏂拌揪鍒版纭殑鐩殑銆�*/ + + String channelId = getText(rootElement, "DeviceID"); + // 鏌ヨ杩欐槸閫氶亾id杩樻槸璁惧id + Device device = null; + // 濡傛灉id鎸囧悜骞冲彴鐨勫浗鏍囩紪鍙凤紝閭d箞灏辨槸鏌ヨ骞冲彴鐨勪俊鎭� + if (!parentPlatform.getDeviceGBId().equals(channelId)) { + device = storager.queryDeviceInfoByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId); + if (device ==null){ + logger.error("[骞冲彴娌℃湁璇ラ�氶亾鐨勪娇鐢ㄦ潈闄怾:platformId"+parentPlatform.getServerGBId()+" deviceID:"+channelId); + return; + } + } + try { + cmderFroPlatform.deviceInfoResponse(parentPlatform, device, sn, fromHeader.getTag()); + } catch (SipException | InvalidArgumentException | ParseException e) { + logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 DeviceInfo鏌ヨ鍥炲: {}", e.getMessage()); + } } } -- Gitblit v1.8.0