From 7a9f001dcb5b8d6c4b52e8ce2c5a8764752ff7ef Mon Sep 17 00:00:00 2001
From: gaofw189 <gaofw189@chinatelecom.cn>
Date: 星期四, 02 二月 2023 18:21:25 +0800
Subject: [PATCH] 修复WVP作为下级平台接收上级平台DeviceControl信令不做处理的问题。

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java |   36 ++++++++++++++++++++++--------------
 1 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 2415538..47c798f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -29,6 +29,7 @@
 import org.springframework.context.annotation.DependsOn;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import javax.sip.InvalidArgumentException;
 import javax.sip.ResponseEvent;
@@ -800,12 +801,14 @@
      * 鐪嬪畧浣嶆帶鍒跺懡浠�
      *
      * @param device      瑙嗛璁惧
+     * @param channelId      閫氶亾id锛岄潪閫氶亾鍒欐槸璁惧鏈韩
+     * @param frontCmd     涓婄骇骞冲彴鐨勬寚浠わ紝濡傛灉瀛樺湪鍒欑洿鎺ヤ笅鍙�
      * @param enabled     鐪嬪畧浣嶄娇鑳斤細1 = 寮�鍚紝0 = 鍏抽棴
      * @param resetTime   鑷姩褰掍綅鏃堕棿闂撮殧锛屽紑鍚湅瀹堜綅鏃朵娇鐢紝鍗曚綅:绉�(s)
      * @param presetIndex 璋冪敤棰勭疆浣嶇紪鍙凤紝寮�鍚湅瀹堜綅鏃朵娇鐢紝鍙栧�艰寖鍥�0~255
      */
     @Override
-    public void homePositionCmd(Device device, String channelId, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
+    public void homePositionCmd(Device device, String channelId,String frontCmd, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
 
         StringBuffer cmdXml = new StringBuffer(200);
         String charset = device.getCharset();
@@ -819,28 +822,33 @@
             cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
         }
         cmdXml.append("<HomePosition>\r\n");
-        if (NumericUtil.isInteger(enabled) && (!enabled.equals("0"))) {
-            cmdXml.append("<Enabled>1</Enabled>\r\n");
-            if (NumericUtil.isInteger(resetTime)) {
-                cmdXml.append("<ResetTime>" + resetTime + "</ResetTime>\r\n");
+        if (StringUtils.hasText(frontCmd)){
+            cmdXml.append(frontCmd);
+        }else{
+            if (NumericUtil.isInteger(enabled) && (!enabled.equals("0"))) {
+                cmdXml.append("<Enabled>1</Enabled>\r\n");
+                if (NumericUtil.isInteger(resetTime)) {
+                    cmdXml.append("<ResetTime>" + resetTime + "</ResetTime>\r\n");
+                } else {
+                    cmdXml.append("<ResetTime>0</ResetTime>\r\n");
+                }
+                if (NumericUtil.isInteger(presetIndex)) {
+                    cmdXml.append("<PresetIndex>" + presetIndex + "</PresetIndex>\r\n");
+                } else {
+                    cmdXml.append("<PresetIndex>0</PresetIndex>\r\n");
+                }
             } else {
-                cmdXml.append("<ResetTime>0</ResetTime>\r\n");
+                cmdXml.append("<Enabled>0</Enabled>\r\n");
             }
-            if (NumericUtil.isInteger(presetIndex)) {
-                cmdXml.append("<PresetIndex>" + presetIndex + "</PresetIndex>\r\n");
-            } else {
-                cmdXml.append("<PresetIndex>0</PresetIndex>\r\n");
-            }
-        } else {
-            cmdXml.append("<Enabled>0</Enabled>\r\n");
         }
+
         cmdXml.append("</HomePosition>\r\n");
         cmdXml.append("</Control>\r\n");
 
         
 
         Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
-        sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
+        sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent,okEvent);
     }
 
     /**

--
Gitblit v1.8.0