Browse Source

增加主机基础数据/磁盘数据/索引数据主动获取

jingyuanchao 1 năm trước cách đây
mục cha
commit
8f0425e01c
18 tập tin đã thay đổi với 149 bổ sung98 xóa
  1. 3 24
      project_data/sql/0.1.1/quartz/quartz.sql
  2. 1 1
      project_data/sql/0.1.1/soc/soc.sql
  3. 10 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteHostService.java
  4. 16 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteHostFallbackFactory.java
  5. 23 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/host/remote/DiskInfoGetReq.java
  6. 6 3
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceInfoServiceImpl.java
  7. 16 21
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/north/controller/HostController.java
  8. 4 0
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/IotDvrHardDiskDetectionService.java
  9. 11 0
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/impl/IotDvrHardDiskDetectionServiceImpl.java
  10. 4 2
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/constant/WebSocketConstants.java
  11. 2 2
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/enums/ProductEnums.java
  12. 1 1
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/RouterServiceHandler.java
  13. 4 0
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/SocWebSocketHandler.java
  14. 1 7
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/service/WebsocketService.java
  15. 7 26
      soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/service/impl/WebsocketServiceImpl.java
  16. 4 3
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotServerInfoServiceImpl.java
  17. 28 0
      soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/HostTask.java
  18. 8 8
      soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/MediatorTask.java

+ 3 - 24
project_data/sql/0.1.1/quartz/quartz.sql

@@ -4,33 +4,12 @@ where invoke_target in
       ('MediatorTask.baseDeviceInfo()',
        'MediatorTask.dvsBaseInfo()',
        'MediatorTask.alarmHostBaseInfo()',
-       'MediatorTask.videoIntegrityCheck()');
+       'MediatorTask.videoIntegrityCheck()',
+       'HostTask.getDevices()');
 
--- 每日凌晨1点基础设备信息主动获取
 INSERT INTO `sys_job`(`job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`,
                       `status`, `create_by`, `create_time`, `update_by`, `update_time`)
-VALUES ('基础设备信息获取', 'DEFAULT', 'MediatorTask.baseDeviceInfo()', '0 0 1 * * ?', '1', '1', '0', NULL, now(), NULL,
+VALUES ('基础设备信息获取', 'DEFAULT', 'HostTask.getDevices()', '0 0 1 * * ?', '1', '1', '1', NULL, now(), NULL,
         NULL);
 
--- 每日凌晨2点通道设备信息主动获取
-INSERT INTO `sys_job`(`job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`,
-                      `status`, `create_by`, `create_time`, `update_by`, `update_time`)
-VALUES ('通道设备信息主动获取', 'DEFAULT', 'MediatorTask.dvsBaseInfo()', '0 0 2 * * ?', '1', '1', '0', NULL, now(),
-        NULL,
-        NULL);
-
--- 每日凌晨2点子系统信息主动获取
-INSERT INTO `sys_job`(`job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`,
-                      `status`, `create_by`, `create_time`, `update_by`, `update_time`)
-VALUES ('子系统信息主动获取', 'DEFAULT', 'MediatorTask.alarmHostBaseInfo()', '0 0 2 * * ?', '1', '1', '0', NULL, now(),
-        NULL,
-        NULL);
-
-
--- 每日凌晨3点录像完整性主动获取
-INSERT INTO `sys_job`(`job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`,
-                      `status`, `create_by`, `create_time`, `update_by`, `update_time`)
-VALUES ('录像完整性主动获取', 'DEFAULT', 'MediatorTask.videoIntegrityCheck()', '0 0 3 * * ?', '1', '1', '0', NULL,
-        now(), NULL, now());
-
 

+ 1 - 1
project_data/sql/0.1.1/soc/soc.sql

@@ -966,7 +966,7 @@ INSERT INTO `sys_menu` VALUES ('01808375108978040834', '日志', '18062046256795
 
 -- 新增iot接入服务菜单
 delete from sys_menu where  id in ('1810216137011572738');
-INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark) VALUES (1810216137011572738, 'Iot接入服务', 1747911340288892930, 0, 'server/center', 'iot/server/index', null, 1, 0, 'C', '0', '0', null, '1', 'tree', null, '景远超', '2024-07-08 15:35:39', '', null, '');
+INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, platform_type, icon, image_path, create_by, create_time, update_by, update_time, remark) VALUES (1810216137011572738, '巡检主机接入', 1747911340288892930, 0, 'server/center', 'iot/server/index', null, 1, 0, 'C', '0', '0', null, '1', 'tree', null, '景远超', '2024-07-08 15:35:39', '', null, '');
 -- iot接入服务菜单角色授权
 delete from sys_role_menu where sys_role_menu.menu_id = 1810216137011572738;
 insert into sys_role_menu select  id,1810216137011572738 from sys_role where org_type in (1,2,3,4);

+ 10 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteHostService.java

@@ -3,6 +3,7 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.domain.SysConfig;
@@ -17,4 +18,13 @@ import java.util.List;
 public interface RemoteHostService {
     @PostMapping("/getRecordInfo")
      AjaxResult getRecordInfo(@RequestBody VideoIntegrityGetReq req);
+
+    @PostMapping("/getDiskInfos")
+    AjaxResult getDiskInfos(@RequestBody DiskInfoGetReq req);
+
+    @PostMapping("/getDevices")
+    AjaxResult getDevices();
+
+    @GetMapping("/closeSession")
+    AjaxResult closeSession(@RequestParam(value = "iotCode") String iotCode);
 }

+ 16 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteHostFallbackFactory.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.api.factory;
 
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteConfigService;
@@ -25,6 +26,21 @@ public class RemoteHostFallbackFactory implements FallbackFactory<RemoteHostServ
             public AjaxResult getRecordInfo(VideoIntegrityGetReq req) {
                 return null;
             }
+
+            @Override
+            public AjaxResult getDiskInfos(DiskInfoGetReq req) {
+                return null;
+            }
+
+            @Override
+            public AjaxResult getDevices() {
+                return null;
+            }
+
+            @Override
+            public AjaxResult closeSession(String iotCode) {
+                return null;
+            }
         };
     }
 }

+ 23 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/host/remote/DiskInfoGetReq.java

@@ -0,0 +1,23 @@
+package com.xunmei.common.core.domain.host.remote;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/8/14 14:31
+ */
+@Data
+public class DiskInfoGetReq {
+    @ApiModelProperty("监控主机code")
+    private String dvsCode;
+
+    @ApiModelProperty("产品名称")
+    private String productName;
+
+    @ApiModelProperty("设备名称")
+    private String deviceName;
+
+}

+ 6 - 3
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -21,7 +21,6 @@ import com.xunmei.host.iot.service.IIotDeviceInfoService;
 import com.xunmei.host.protection.service.IotAlarmDefenceAreaService;
 import com.xunmei.host.protection.service.IotAlarmSubsystemService;
 import com.xunmei.host.server.service.IotServerInfoService;
-import com.xunmei.host.video.service.IotDvrDiskService;
 import com.xunmei.host.websocket.constant.WebSocketConstants;
 import com.xunmei.host.websocket.dto.DeviceStatusInfo;
 import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
@@ -301,6 +300,10 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         }
         String token = req.getToken();
         IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
+        if (ObjectUtil.isEmpty(serverInfo)) {
+            LogUtils.WEBSOCKET_MSG.error("未查询到token为 {} 的服务器信息", token);
+            return "";
+        }
         String event = req.getEvent();
         switch (event) {
             case WebSocketConstants.DEVICES_EVENT:
@@ -554,7 +557,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         BaseDeviceTypeEnum baseDeviceTypeEnum = BaseDeviceTypeEnum.valueOf(subDeviceInfo.getSubType());
         info.setDeviceType(baseDeviceTypeEnum.getCode());
         info.setIotToken(serverInfo.getIotCode());
-        if (ObjectUtil.equal(ProductEnums.FSU_GATEWAY, ProductEnums.getByProductName(hostDevice.getDeviceProduct()))) {
+        if (ObjectUtil.equal(ProductEnums.FSU_GATEWAY, ProductEnums.getByProductByName(hostDevice.getDeviceProduct()))) {
             info.setDeviceProduct(subDeviceInfo.getSubType());
         } else {
             info.setDeviceProduct(hostDevice.getDeviceProduct());
@@ -577,7 +580,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         channelInfo.setDeviceName(subDeviceInfo.getDeviceName());
         BaseDeviceTypeEnum baseDeviceTypeEnum = BaseDeviceTypeEnum.valueOf(subDeviceInfo.getSubType());
         channelInfo.setDeviceType(baseDeviceTypeEnum.getCode());
-        if (ObjectUtil.equal(ProductEnums.FSU_GATEWAY, ProductEnums.getByProductName(hostInfo.getDeviceProduct()))) {
+        if (ObjectUtil.equal(ProductEnums.FSU_GATEWAY, ProductEnums.getByProductByName(hostInfo.getDeviceProduct()))) {
             channelInfo.setDeviceProduct(subDeviceInfo.getSubType());
         } else {
             channelInfo.setDeviceProduct(hostInfo.getDeviceProduct());

+ 16 - 21
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/north/controller/HostController.java

@@ -1,11 +1,12 @@
 package com.xunmei.host.north.controller;
 
 
+import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
 import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.host.host.service.IIotDvrChannelService;
 import com.xunmei.host.protection.service.IIotAlarmHostService;
 import com.xunmei.host.video.service.IVideoIntegrityCheckService;
+import com.xunmei.host.video.service.IotDvrHardDiskDetectionService;
 import com.xunmei.host.websocket.holder.WebSocketSessionHolder;
 import com.xunmei.host.websocket.service.WebsocketService;
 import com.xunmei.system.api.Eto.SubSystemControlEto;
@@ -29,7 +30,7 @@ import java.io.IOException;
 public class HostController {
 
     @Resource
-    private IIotDvrChannelService iotDvrChannelService;
+    private IotDvrHardDiskDetectionService diskDetectionService;
 
     @Resource
     IVideoIntegrityCheckService videoIntegrityCheckService;
@@ -41,34 +42,28 @@ public class HostController {
     IIotAlarmHostService alarmHostService;
 
 
-    @ApiOperation("获取指定通道的录像完整性数据")
-    @GetMapping({"/getRecordInfo"})
-    public AjaxResult videoIntegrityCheck(@RequestBody VideoIntegrityGetReq req ) {
-        this.videoIntegrityCheckService.getRecordInfo(req);
-        return AjaxResult.success();
-    }
-
-    @ApiOperation("定时任务获取所有的主机基本信息(包括报警主机)")
-    @GetMapping({"/mediator/baseDeviceInfo"})
+    @ApiOperation("主动获取所有的主机基本信息")
+    @GetMapping({"/getDevices"})
     public AjaxResult baseDeviceInfo() {
-        websocketService.invokeBaseDeviceInfoForSchedule();
+        websocketService.getDevices();
         return AjaxResult.success();
     }
 
-    @ApiOperation("定时任务获取所有的dvs下通道和硬盘信息")
-    @GetMapping({"/mediator/dvsBaseInfo"})
-    public AjaxResult dvsBaseInfo() {
-        websocketService.invokeDvsBaseInfoForSchedule();
+    @ApiOperation("主动获取指定通道的录像完整性数据")
+    @GetMapping({"/getRecordInfo"})
+    public AjaxResult videoIntegrityCheck(@RequestBody VideoIntegrityGetReq req ) {
+        this.videoIntegrityCheckService.getRecordInfo(req);
         return AjaxResult.success();
     }
 
-    @ApiOperation("定时任务获取所有的报警主机下子系统和防区信息")
-    @GetMapping({"/mediator/alarmHostBaseInfo"})
-    public AjaxResult alarmHostBaseInfo() {
-        websocketService.invokeAlarmHostBaseInfoForSchedule();
+    @ApiOperation("主动获取指定主机的磁盘数据")
+    @GetMapping({"/getDiskInfos"})
+    public AjaxResult getDiskInfos(@RequestBody DiskInfoGetReq req ) {
+        this.diskDetectionService.getDiskInfos(req);
         return AjaxResult.success();
     }
 
+
     @ApiOperation("布撤防控制")
     @PostMapping({"/mediator/subSystemControl"})
     public AjaxResult subSystemControl(@RequestBody SubSystemControlEto eto) {
@@ -81,7 +76,7 @@ public class HostController {
     }
 
     @ApiOperation("关闭iot链接")
-    @GetMapping({"/mediator/closeSession"})
+    @GetMapping({"/closeSession"})
     public AjaxResult closeSession(String iotCode) throws IOException {
         WebSocketSessionHolder.closeServe(iotCode);
         return AjaxResult.success();

+ 4 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/IotDvrHardDiskDetectionService.java

@@ -2,6 +2,7 @@ package com.xunmei.host.video.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetection;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import com.xunmei.system.api.dto.protection.VideoRecorderHardDiskDetectionEditDto;
@@ -26,4 +27,7 @@ public interface IotDvrHardDiskDetectionService extends IService<IotDvrHardDiskD
     IotDvrHardDiskDetection findTopByEquipmentCodeAndOrgId(String equipmentCode, Long orgId);
 
     void saveDataInfo(Map<String, Object> objectMap, VideoRecorderHardDiskDetectionEditDto videoRecorderHardDiskDetectionEditDto);
+
+    void getDiskInfos(DiskInfoGetReq req);
+
 }

+ 11 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/impl/IotDvrHardDiskDetectionServiceImpl.java

@@ -6,12 +6,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetection;
 import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetectionLog;
 import com.xunmei.common.core.enums.iot.DeviceTypeEnum;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.IDHelper;
+import com.xunmei.common.core.utils.JacksonUtils;
 import com.xunmei.host.alarm.service.IotAlarmDataService;
 import com.xunmei.host.host.service.IIotDeviceService;
 import com.xunmei.host.iot.service.IIotDeviceInfoService;
@@ -24,9 +26,12 @@ import com.xunmei.host.video.service.IotDvrHardDiskDetectionLogService;
 import com.xunmei.host.video.service.IotDvrHardDiskDetectionService;
 import com.xunmei.host.websocket.constant.WebSocketConstants;
 import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
+import com.xunmei.host.websocket.dto.WebsocketResult;
 import com.xunmei.host.websocket.enums.ProductEnums;
+import com.xunmei.host.websocket.enums.TopicTypeEnums;
 import com.xunmei.host.websocket.service.RouterService;
 import com.xunmei.host.websocket.utils.IotServerUtils;
+import com.xunmei.host.websocket.utils.WebSocketUtils;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
@@ -239,6 +244,12 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
         return error;
     }
 
+    @Override
+    public void getDiskInfos(DiskInfoGetReq req) {
+        final String topic = TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), req.getProductName(), req.getDeviceName());
+        final WebsocketResult result = IotServerUtils.invokeHostServer(topic, new JSONObject(), WebSocketConstants.GET_DISK_INFOS, req);
+        WebSocketUtils.sendAll(JacksonUtils.toJSONString(result));
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)

+ 4 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/constant/WebSocketConstants.java

@@ -88,15 +88,17 @@ public interface WebSocketConstants {
     String DISK_STATUS = "diskStatus";
 
     /**
-     * 获取报警主机和DVS基础信息
+     * 获取所有主机基础信息
      */
-    String GET_DEVICE_BASE_INFOS = "getDeviceBaseInfos";
+    String GET_DEVICES = "getDevices";
 
     /**
      * 获取监控主机下通道、硬盘和监控主机扩展信息
      */
     String GET_DVS_DEVICE_INFOS = "getDvsDeviceInfos";
 
+    String GET_DISK_INFOS = "getDiskInfos";
+
     /**
      * 获取报警主机子系统和防区
      */

+ 2 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/enums/ProductEnums.java

@@ -18,11 +18,11 @@ public enum ProductEnums {
     DETECTION_HOST(new String[]{"DetectionHost","DetectionHostDevice"}),
     FSU_GATEWAY(new String[]{"FSU_Gateway","FSU_Smoke","FSU_Infrared","FSU_TemperatureAndHumidity","FSU_DoorMagnetic","FSU_Gas","FSU_RollingShutterDoor","FSU_Water","FSU_SmartMeter","FSU_AirConditioner","FSU_Ups","FSU_DoPowerControl","FSU_ThreePhaseACVoltage","FSU_Theft"}),
     ;
-
+    @Getter
     private String[] productName;
 
 
-    public static ProductEnums getByProductName(String productName) {
+    public static ProductEnums getByProductByName(String productName) {
         for (ProductEnums productEnums : ProductEnums.values()) {
             if (Arrays.asList(productEnums.getProductName()).contains(productName)){
                 return productEnums;

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/RouterServiceHandler.java

@@ -27,7 +27,7 @@ public class RouterServiceHandler {
     }
 
     public static RouterService getRouteService(String productName, String routerKey) {
-        ProductEnums enums = ProductEnums.getByProductName(productName);
+        ProductEnums enums = ProductEnums.getByProductByName(productName);
         if (enums == null) {
             LogUtils.WEBSOCKET_MSG.error("未找到对应的产品类型:{}", routerKey);
             return null;

+ 4 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/SocWebSocketHandler.java

@@ -132,6 +132,10 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
     protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
         // 从WebSocket会话中获取登录用户信息
         String token = WebSocketSessionHolder.updateToken(session);
+        if (StringUtils.isEmpty(token)) {
+            LogUtils.WEBSOCKET_MSG.error("无法根据会话找到token,ip:{}", WebSocketUtils.getIp(session));
+            return;
+        }
         //String token ="9e08595b-868e-4eac-ab44-45bdeec51185";
         String payload = message.getPayload();
         final String ip = WebSocketUtils.getIp(session);

+ 1 - 7
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/service/WebsocketService.java

@@ -8,12 +8,6 @@ public interface WebsocketService {
 
     void sendAllMessage(Object obj) throws Exception;
 
-    void invokeBaseDeviceInfoForSchedule();
-
-    void invokeDvsBaseInfoForSchedule();
-
-    void invokeAlarmHostBaseInfoForSchedule();
-
-
+    void getDevices();
 
 }

+ 7 - 26
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/service/impl/WebsocketServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.host.websocket.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.xunmei.common.core.utils.JacksonUtils;
 import com.xunmei.common.redis.utils.RedisUtils;
@@ -12,6 +13,7 @@ import com.xunmei.host.video.service.IotDvrDiskService;
 import com.xunmei.host.websocket.constant.WebSocketConstants;
 import com.xunmei.host.websocket.dto.WebsocketResult;
 import com.xunmei.host.websocket.enums.ProductEnums;
+import com.xunmei.host.websocket.enums.TopicTypeEnums;
 import com.xunmei.host.websocket.redis.WebsocketPublisher;
 import com.xunmei.host.websocket.service.WebsocketService;
 import com.xunmei.host.websocket.utils.IotServerUtils;
@@ -57,34 +59,13 @@ public class WebsocketServiceImpl implements WebsocketService {
     private static final String iotServerDeviceTopic = "/things/IoTServer/IoTServerDevice/service/invoke";
 
     @Override
-    public void invokeBaseDeviceInfoForSchedule() {
-        List<String> categories = Arrays.asList(WebSocketConstants.DVS, WebSocketConstants.ALARM_HOST);
-        JSONObject args = new JSONObject();
-        args.put("categories", categories);
-        WebsocketResult websocketResult = IotServerUtils.invokeHostServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_DEVICE_BASE_INFOS, args);
-        LogUtils.WEBSOCKET_MSG.info("获取设备基础数据:{}", JacksonUtils.toJSONString(websocketResult));
-        WebSocketUtils.sendAll(JacksonUtils.toJSONString(websocketResult));
+    public void getDevices() {
+        final String topic = TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(),ProductEnums.DETECTION_HOST.getProductName()[0], ProductEnums.DETECTION_HOST.getProductName()[1]);
+        final WebsocketResult result = IotServerUtils.invokeHostServer(topic, new JSONObject(), WebSocketConstants.GET_DEVICES, new JSONObject());
+        System.out.println(JSON.toJSONString(result));
+        WebSocketUtils.sendAll(JacksonUtils.toJSONString(result));
     }
 
-    @Override
-    public void invokeDvsBaseInfoForSchedule() {
-        String[] productNames = ProductEnums.DVS.getProductName();
-        JSONObject args = new JSONObject();
-        args.put("productNames", productNames);
-        WebsocketResult websocketResult = IotServerUtils.invokeHostServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_DVS_DEVICE_INFOS, args);
-        LogUtils.WEBSOCKET_MSG.info("获取dvs下基础数据:{}", JacksonUtils.toJSONString(websocketResult));
-        WebSocketUtils.sendAll(JacksonUtils.toJSONString(websocketResult));
-    }
-
-    @Override
-    public void invokeAlarmHostBaseInfoForSchedule() {
-        String[] productNames = ProductEnums.ALARM_HOST.getProductName();
-        JSONObject args = new JSONObject();
-        args.put("productNames", productNames);
-        WebsocketResult websocketResult = IotServerUtils.invokeHostServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_ALARM_HOST_DEVICE_INFOS, args);
-        LogUtils.WEBSOCKET_MSG.info("获取报警主机下数据:{}", JacksonUtils.toJSONString(websocketResult));
-        WebSocketUtils.sendAll(JacksonUtils.toJSONString(websocketResult));
-    }
 
     /**
      * 给指定iot服务发送消息

+ 4 - 3
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotServerInfoServiceImpl.java

@@ -19,6 +19,7 @@ import com.xunmei.iot.dto.serverInfo.IotServerInfoPageDto;
 import com.xunmei.iot.mapper.IotServerInfoMapper;
 import com.xunmei.iot.service.IotServerInfoService;
 import com.xunmei.iot.vo.serverInfo.IotServerInfoPageVo;
+import com.xunmei.system.api.RemoteHostService;
 import com.xunmei.system.api.RemoteMediatorService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -48,7 +49,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
     @Autowired
     RemoteOrgService orgService;
     @Autowired
-    RemoteMediatorService mediatorService;
+    RemoteHostService hostService;
 
     @Override
     public TableDataInfo<IotServerInfoPageVo> serverPage(IotServerInfoPageDto request) {
@@ -123,7 +124,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         if (1 == req.getEnable()) {
             CompletableFuture.runAsync(() -> {
                 try {
-                    final AjaxResult result = mediatorService.closeSession(info.getIotCode());
+                    final AjaxResult result = hostService.closeSession(info.getIotCode());
                     if (result.isSuccess()) {
                         info.setIotStatus(IotServerConnectStatus.OFFLINE.getIdx());
                         updateById(info);
@@ -167,7 +168,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         if (ObjectUtil.isEmpty(info)) {
             throw new RuntimeException("未找到具体iot服务!");
         }
-        if (1 == info.getIotStatus()) {
+        if (0 == info.getEnable()) {
             throw new RuntimeException("请先停用该iot服务!");
         }
         removeById(id);

+ 28 - 0
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/HostTask.java

@@ -0,0 +1,28 @@
+package com.xunmei.job.task;
+
+
+import cn.hutool.core.lang.UUID;
+import com.alibaba.fastjson2.JSON;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.RemoteHostService;
+import com.xunmei.system.api.RemoteMediatorService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Slf4j
+@Component("HostTask")
+public class HostTask {
+
+    @Autowired
+    RemoteHostService hostService;
+
+    public void getDevices() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始获取所有主机信息,当前任务 id:{},当前时间:{}", id, new Date());
+        AjaxResult result = hostService.getDevices();
+        log.info("获取所有主机信息结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+    }
+}

+ 8 - 8
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/MediatorTask.java

@@ -27,34 +27,34 @@ public class MediatorTask {
 
     //定时获取录像完整性检查数据
     public void videoIntegrityCheck() {
-        String id = UUID.fastUUID().toString();
+     /*   String id = UUID.fastUUID().toString();
         log.info("开始处理录像完整性检查,当前任务 id:{},当前时间:{}", id, new Date());
         AjaxResult result = remoteMediatorService.videoIntegrityCheck();
-        log.info("录像完整性检查结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+        log.info("录像完整性检查结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));*/
     }
 
     //定时获取设备基础信息
     public void baseDeviceInfo() {
-        String id = UUID.fastUUID().toString();
+       /* String id = UUID.fastUUID().toString();
         log.info("开始获取设备基础信息,当前任务 id:{},当前时间:{}", id, new Date());
         AjaxResult result = remoteMediatorService.baseDeviceInfo();
-        log.info("获取设备基础信息结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+        log.info("获取设备基础信息结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));*/
     }
 
     //定时获取通道基础信息
     public void dvsBaseInfo() {
-        String id = UUID.fastUUID().toString();
+      /*  String id = UUID.fastUUID().toString();
         log.info("开始获取dvs下基础信息,当前任务 id:{},当前时间:{}", id, new Date());
         AjaxResult result = remoteMediatorService.dvsBaseInfo();
-        log.info("获取获取dvs下基础信息....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+        log.info("获取获取dvs下基础信息....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));*/
     }
 
     //定时获取子系统/防区基础信息
     public void alarmHostBaseInfo() {
-        String id = UUID.fastUUID().toString();
+      /*  String id = UUID.fastUUID().toString();
         log.info("开始获取报警主机下基础信息,当前任务 id:{},当前时间:{}", id, new Date());
         AjaxResult result = remoteMediatorService.alarmHostBaseInfo();
-        log.info("获取报警主机下基础信息结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+        log.info("获取报警主机下基础信息结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));*/
     }