648540858
2024-05-29 764d04b497356ba6bcbb75fd42b51eca750f7223
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
old mode 100644 new mode 100755
@@ -73,35 +73,38 @@
        String channelId = getText(rootElement, "DeviceID");
        // 远程启动功能
        if (!ObjectUtils.isEmpty(getText(rootElement, "TeleBoot"))) {
            if (parentPlatform.getServerGBId().equals(targetGBId)) {
                // 远程启动本平台:需要在重新启动程序后先对SipStack解绑
                logger.info("执行远程启动本平台命令");
                try {
                    cmderFroPlatform.unregister(parentPlatform, null, null);
                } catch (InvalidArgumentException | ParseException | SipException e) {
                    logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage());
                }
                taskExecutor.execute(() -> {
                    // 远程启动
//                    try {
//                        Thread.sleep(3000);
//                        SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
//                        SipStackImpl stack = (SipStackImpl)up.getSipStack();
//                        stack.stop();
//                        Iterator listener = stack.getListeningPoints();
//                        while (listener.hasNext()) {
//                            stack.deleteListeningPoint((ListeningPoint) listener.next());
//                        }
//                        Iterator providers = stack.getSipProviders();
//                        while (providers.hasNext()) {
//                            stack.deleteSipProvider((SipProvider) providers.next());
//                        }
//                        VManageBootstrap.restart();
//                    } catch (InterruptedException | ObjectInUseException e) {
//                        logger.error("[任务执行失败] 服务重启: {}", e.getMessage());
//                    }
                });
            }
            // TODO 拒绝远程启动命令
            logger.warn("[国标级联]收到平台的远程启动命令, 不处理");
//            if (parentPlatform.getServerGBId().equals(targetGBId)) {
//                // 远程启动本平台:需要在重新启动程序后先对SipStack解绑
//                logger.info("执行远程启动本平台命令");
//                try {
//                    cmderFroPlatform.unregister(parentPlatform, null, null);
//                } catch (InvalidArgumentException | ParseException | SipException e) {
//                    logger.error("[命令发送失败] 国标级联 注销: {}", e.getMessage());
//                }
//                taskExecutor.execute(() -> {
//                    // 远程启动
////                    try {
////                        Thread.sleep(3000);
////                        SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
////                        SipStackImpl stack = (SipStackImpl)up.getSipStack();
////                        stack.stop();
////                        Iterator listener = stack.getListeningPoints();
////                        while (listener.hasNext()) {
////                            stack.deleteListeningPoint((ListeningPoint) listener.next());
////                        }
////                        Iterator providers = stack.getSipProviders();
////                        while (providers.hasNext()) {
////                            stack.deleteSipProvider((SipProvider) providers.next());
////                        }
////                        VManageBootstrap.restart();
////                    } catch (InterruptedException | ObjectInUseException e) {
////                        logger.error("[任务执行失败] 服务重启: {}", e.getMessage());
////                    }
//                });
//            }
        }
        DeviceControlType deviceControlType = DeviceControlType.typeOf(rootElement);
        logger.info("[接受deviceControl命令] 命令: {}", deviceControlType);
@@ -245,7 +248,7 @@
            HomePositionRequest homePosition = loadElement(rootElement, HomePositionRequest.class);
            //获取整个消息主体,我们只需要修改请求头即可
            HomePositionRequest.HomePosition info = homePosition.getHomePosition();
            cmder.homePositionCmd(device, channelId, info.getEnabled(), info.getResetTime(), info.getPresetIndex(),
            cmder.homePositionCmd(device, channelId, !"0".equals(info.getEnabled()), Integer.parseInt(info.getResetTime()), Integer.parseInt(info.getPresetIndex()),
                    errorResult -> onError(request, errorResult),
                    okResult -> onOk(request, okResult));
        } catch (Exception e) {