From 25fca14e6224909811d96c348fc2427cf7fe13d1 Mon Sep 17 00:00:00 2001
From: gaofw189 <gaofw189@chinatelecom.cn>
Date: 星期一, 06 二月 2023 10:35:32 +0800
Subject: [PATCH] 修复WVP作为下级平台接受deviceControl指令的问题-修复指令响应

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
index 46e8e92..fa54a0f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
@@ -131,16 +131,16 @@
                     handleRecordCmd(deviceForPlatform,channelId,rootElement,request,DeviceControlType.RECORD);
                     break;
                 case I_FRAME:
-                    handleIFameCmd(deviceForPlatform,channelId);
+                    handleIFameCmd(deviceForPlatform,request,channelId);
                     break;
                 case TELE_BOOT:
-                    handleTeleBootCmd(deviceForPlatform);
+                    handleTeleBootCmd(deviceForPlatform,request);
                     break;
                 case DRAG_ZOOM_IN:
-                    handleDragZoom(deviceForPlatform,channelId,rootElement,DeviceControlType.DRAG_ZOOM_IN);
+                    handleDragZoom(deviceForPlatform,channelId,rootElement,request,DeviceControlType.DRAG_ZOOM_IN);
                     break;
                 case DRAG_ZOOM_OUT:
-                    handleDragZoom(deviceForPlatform,channelId,rootElement,DeviceControlType.DRAG_ZOOM_OUT);
+                    handleDragZoom(deviceForPlatform,channelId,rootElement,request,DeviceControlType.DRAG_ZOOM_OUT);
                     break;
                 case HOME_POSITION:
                     handleHomePositionCmd(deviceForPlatform,channelId,rootElement,request,DeviceControlType.HOME_POSITION);
@@ -167,7 +167,6 @@
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 浜戝彴/鍓嶇: {}", e.getMessage());
         }
-
     }
 
     /**
@@ -175,9 +174,10 @@
      * @param device 璁惧
      * @param channelId 閫氶亾id
      */
-    private void handleIFameCmd(Device device,String channelId){
+    private void handleIFameCmd(Device device,SIPRequest request,String channelId){
         try {
             cmder.iFrameCmd(device,channelId);
+            responseAck(request, Response.OK);
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 寮哄埗鍏抽敭甯�: {}", e.getMessage());
         }
@@ -187,9 +187,10 @@
      * 澶勭悊閲嶅惎鍛戒护
      * @param device 璁惧淇℃伅
      */
-    private void handleTeleBootCmd(Device device){
+    private void handleTeleBootCmd(Device device,SIPRequest request){
         try {
             cmder.teleBootCmd(device);
+            responseAck(request, Response.OK);
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 閲嶅惎: {}", e.getMessage());
         }
@@ -203,7 +204,7 @@
      * @param rootElement 鏍硅妭鐐�
      * @param type 娑堟伅绫诲瀷
      */
-    private void handleDragZoom(Device device,String channelId,Element rootElement,DeviceControlType type){
+    private void handleDragZoom(Device device,String channelId,Element rootElement,SIPRequest request,DeviceControlType type){
         String cmdString = getText(rootElement,type.getVal());
         StringBuffer cmdXml = new StringBuffer(200);
         cmdXml.append("<" + type.getVal() + ">\r\n");
@@ -211,6 +212,7 @@
         cmdXml.append("</" + type.getVal() + ">\r\n");
         try {
             cmder.dragZoomCmd(device,channelId,cmdXml.toString());
+            responseAck(request, Response.OK);
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 鎷夋鎺у埗: {}", e.getMessage());
         }
@@ -255,7 +257,8 @@
         }
         try {
             cmder.alarmCmd(device, alarmMethod,alarmType,
-                    errorResult -> onError(request,errorResult));
+                    errorResult -> onError(request,errorResult),
+                    okResult -> onOk(request,okResult));
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 鍛婅娑堟伅: {}", e.getMessage());
         }
@@ -274,7 +277,8 @@
         String cmdString = getText(rootElement,type.getVal());
         try {
             cmder.recordCmd(device, channelId,cmdString,
-                    errorResult -> onError(request,errorResult));
+                    errorResult -> onError(request,errorResult),
+                    okResult -> onOk(request,okResult));
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 褰曞儚鎺у埗: {}", e.getMessage());
         }
@@ -292,7 +296,8 @@
         String cmdString = getText(rootElement,type.getVal());
         try {
             cmder.guardCmd(device, cmdString,
-                    errorResult -> onError(request,errorResult));
+                    errorResult -> onError(request,errorResult),
+                    okResult -> onOk(request,okResult));
         } catch (InvalidArgumentException | SipException | ParseException e) {
             logger.error("[鍛戒护鍙戦�佸け璐 甯冮槻/鎾ら槻鍛戒护: {}", e.getMessage());
         }

--
Gitblit v1.8.0