Эх сурвалжийг харах

设备基础信息同步代码提交

jingyuanchao 1 жил өмнө
parent
commit
e763454bb2

+ 8 - 0
project_data/sql/0.1.1/升级文档.txt

@@ -68,6 +68,14 @@ security:
                  proxy_set_header Connection "upgrade";
                  proxy_set_header Host $host;
         }
+        location /host {
+                         proxy_pass http://api;
+                         proxy_http_version 1.1;
+                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+                         proxy_set_header Upgrade $http_upgrade;
+                         proxy_set_header Connection "upgrade";
+                         proxy_set_header Host $host;
+        }
     3.2在监听8080的 server块下 location @api { 这一行下一行追加两行代码:
         proxy_set_header X-Local-Ip $host;
         proxy_set_header X-Local-Port $server_port;

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

@@ -0,0 +1,29 @@
+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 VideoIntegrityGetReq {
+    @ApiModelProperty("监控主机code")
+    private String dvsCode;
+
+    @ApiModelProperty("通道号")
+    private String index;
+
+    @ApiModelProperty("需要获取的指定日期")
+    private List<String> recordDate;
+
+    @ApiModelProperty("产品名称")
+    private String productName;
+
+    @ApiModelProperty("设备名称")
+    private String deviceName;
+
+}

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/host/service/IIotDvrChannelService.java

@@ -22,7 +22,7 @@ public interface IIotDvrChannelService extends IService<IotDvrChannel> {
 
     ReceiveErrorDto saveChannel(List<DeviceDto> deviceDtos, String msgId);
 
-    void channelCacheDeal();
+
 
     void batchUpdateDel(List<EquipmentOrgVo> eosList);
 

+ 0 - 47
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/host/service/impl/IotDvrChannelServiceImpl.java

@@ -183,53 +183,6 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         return device;
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void channelCacheDeal() {
-        try {
-            Boolean flag = redisTemplate.hasKey(CacheConstants.CHANNEL_KEY);
-            if (Boolean.FALSE.equals(flag)) {
-                return;
-            }
-
-            String UK = (String) this.redisTemplate.opsForValue().get(CacheConstants.CHANNEL_KEY);
-
-            ListOperations<String, EquipmentOrgVo> lso = this.redisTemplate.opsForList();
-            List<EquipmentOrgVo> list = lso.range(UK, 0, -1);
-            if (ObjectUtil.isEmpty(list)) {
-                return;
-            }
-            lso.trim(UK, list.size(), -1L);
-            ListOperations<String, IotDvrChannel> cso = this.redisTemplate.opsForList();
-            List<IotDvrChannel> devices = cso.range(UK + RedisKey.AFTER_DATA, 0, -1);
-            if (ObjectUtil.isEmpty(devices)) {
-                return;
-            }
-            cso.trim(UK + RedisKey.AFTER_DATA, devices.size(), -1L);
-            //获取要进行批量处理的通道信息,并通过主机code,通道id,机构id进行去重
-            List<IotDvrChannel> devis = devices.stream().collect(Collectors.collectingAndThen(
-                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getChannelCode() + ";" + o.getHostCode() + ";" + o.getOrgId()))), ArrayList::new));
-
-
-            /**
-             * 第一步 逻辑删除对应 主机的 通道数据
-             * 第二步 批量更新数据
-             */
-            final List<EquipmentOrgVo> collect = list.stream().distinct().collect(Collectors.toList());
-            this.batchUpdateDel(collect);
-            //批量插入列表
-            final List<IotDvrChannel> inList = devis.stream().filter(d -> ObjectUtil.isEmpty(d.getId())).collect(Collectors.toList());
-            //批量更新列表
-            final List<IotDvrChannel> upList = devis.stream().filter(d -> ObjectUtil.isNotEmpty(d.getId())).collect(Collectors.toList());
-            this.batchUpdateDevice(upList);
-            this.batchInsertDevice(inList);
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            LogUtils.BASE_INFO_CHANNEL.error("【北向定时任务:{} 执行异常】【异常原因:{}】", "通道信息-DataDealJobService", e.getMessage());
-            throw new RuntimeException(e.getMessage());
-        }
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)

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

@@ -1,6 +1,7 @@
 package com.xunmei.host.north.controller;
 
 
+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;
@@ -25,7 +26,7 @@ import java.io.IOException;
  */
 
 @RestController
-public class MediatorController {
+public class HostController {
 
     @Resource
     private IIotDvrChannelService iotDvrChannelService;
@@ -40,29 +41,13 @@ public class MediatorController {
     IIotAlarmHostService alarmHostService;
 
 
-    @ApiOperation("处理缓存中的通道信息数据")
-    @GetMapping({"/mediator/channelCacheDeal"})
-    public AjaxResult channelCacheDeal() {
-        this.iotDvrChannelService.channelCacheDeal();
+    @ApiOperation("获取指定通道的录像完整性数据")
+    @GetMapping({"/host/videoIntegrityCheck"})
+    public AjaxResult videoIntegrityCheck(@RequestBody VideoIntegrityGetReq req ) {
+        this.videoIntegrityCheckService.GetRecordInfo(req);
         return AjaxResult.success();
     }
 
-
-    @ApiOperation("定时任务获取所有的录像完整性数据")
-    @GetMapping({"/mediator/videoIntegrityCheck"})
-    public AjaxResult videoIntegrityCheck() {
-        this.videoIntegrityCheckService.invokeRecordInfosForSchedule();
-        return AjaxResult.success();
-    }
-
-    @ApiOperation("定时任务获取所有的录像完整性数据")
-    @GetMapping({"/mediator/videoDiagnosis"})
-    public AjaxResult videoDiagnosis() {
-        //  this.videoDiagnosisRecordService.invokeVideoDiagnosisForSchedule();
-        return AjaxResult.success();
-    }
-
-
     @ApiOperation("定时任务获取所有的主机基本信息(包括报警主机)")
     @GetMapping({"/mediator/baseDeviceInfo"})
     public AjaxResult baseDeviceInfo() {

+ 1 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/impl/IotAlarmHostServiceImpl.java

@@ -28,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.StringJoiner;
 
 @Service
@@ -188,7 +187,7 @@ public class IotAlarmHostServiceImpl implements IIotAlarmHostService, RouterServ
                     headers.put("productName", deviceInfo.getDeviceProduct());
                     headers.put("deviceName", deviceInfo.getDeviceCode());
                     LogUtils.DEVICE_CONTROL_LOG.info("报警主机布撤防控制topic:{},控制参数:{}", topic, args.toJSONString());
-                    WebsocketResult websocketResult = IotServerUtils.invokeIotServer(topic, headers, WebSocketConstants.SUB_SYSTEM_CONTROL, args);
+                    WebsocketResult websocketResult = IotServerUtils.invokeHostServer(topic, headers, WebSocketConstants.SUB_SYSTEM_CONTROL, args);
                     LogUtils.WEBSOCKET_MSG.info("布撤防控制指令:{}", JacksonUtils.toJSONString(websocketResult));
                     boolean invoked = WebSocketUtils.sendMessage(subsystem.getIotToken(), JacksonUtils.toJSONString(websocketResult));
                     if (!invoked) {

+ 2 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/IVideoIntegrityCheckService.java

@@ -1,6 +1,7 @@
 package com.xunmei.host.video.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
 import com.xunmei.host.video.dto.videoIntegrityCheck.VideoIntegrityCheckDto;
 import com.xunmei.host.video.dto.videoIntegrityCheck.VideoIntegrityCheckReq;
@@ -25,6 +26,6 @@ public interface IVideoIntegrityCheckService extends IService<MediatorVideoInteg
 
     MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCode(Long orgId, String equipmentCode, String channelCode);
 
-    void invokeRecordInfosForSchedule();
+    void GetRecordInfo(VideoIntegrityGetReq req);
 
 }

+ 6 - 17
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/video/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 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.VideoIntegrityGetReq;
 import com.xunmei.common.core.domain.video.MediatorVideoDaysCheck;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
@@ -135,25 +136,13 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     }
 
     @Override
-    public void invokeRecordInfosForSchedule() {
-        List<IotDeviceInfo> deviceInfoList = iotDeviceInfoService.selectAllDeviceByDeviceType(Arrays.asList(BaseDeviceTypeEnum.monitor_camera, BaseDeviceTypeEnum.number_camera));
-        if (ObjectUtil.isEmpty(deviceInfoList)) {
-            return;
-        }
+    public void GetRecordInfo(VideoIntegrityGetReq req) {
 
-        for (IotDeviceInfo iotDeviceInfo : deviceInfoList) {
-            JSONObject object = new JSONObject();
-            object.put("dvsCode", iotDeviceInfo.getHostCode());
-            object.put("index", iotDeviceInfo.getDeviceCode());
-            object.put("recordDate", Arrays.asList(DateUtil.format(DateUtil.offsetDay(new Date(), -1), Constants.DAILY_FORMAT)));
-            WebsocketResult websocketResult = IotServerUtils.invokeDownLinkServer(TopicTypeEnums.PRODUCT_SERVICE_INVOKE, iotDeviceInfo.getDeviceProduct(), iotDeviceInfo.getDeviceCode(), WebSocketConstants.GET_RECORD_INFOS_SERVICES, object);
-            LogUtils.WEBSOCKET_MSG.info("获取录像完整性数据:{}", JacksonUtils.toJSONString(websocketResult));
-            WebSocketUtils.sendMessage(iotDeviceInfo.getIotToken(),JacksonUtils.toJSONString(websocketResult));
-        }
-       /* String str = "{\"id\":\"fe48fd03-d3eb-4999-9180-02005c863333\",\"topic\":\"/things/IoTServer/IoTServerDevice/service/invoke\",\"timestamp\":\"2024-07-26T17:44:32.062+08:00\",\"headers\":{\"deviceName\":\"IoTServerDevice\",\"productName\":\"IoTServer\"},\"payload\":{\"args\":{\"id\":\"fe48fd03-d3eb-4999-9180-02005c863333\",\"topic\":\"/things/VGSII_Hik/33/service/invoke\",\"timestamp\":\"2024-07-26T17:44:32.062+08:00\",\"headers\":{\"deviceName\":\"33\",\"productName\":\"VGSII_Hik\"},\"payload\":{\"args\":{\"dvsCode\":\"ZM_20240726141823051\",\"index\":\"33\",\"recordDate\":[\"2024-07-25\"]},\"service\":\"getRecordInfos\"}},\"service\":\"downlinkServicePassthrough\"}}";
-        final WebsocketResult result = JSON.parseObject(str, WebsocketResult.class);
-        WebSocketUtils.sendAll(JacksonUtils.toJSONString(result));*/
 
+        IotServerUtils.invokeHostServer("",new JSONObject(),WebSocketConstants.GET_RECORD_INFOS_SERVICES,req);
+    /*    WebsocketResult websocketResult = IotServerUtils.invokeDownLinkServer(TopicTypeEnums.PRODUCT_SERVICE_INVOKE, iotDeviceInfo.getDeviceProduct(), iotDeviceInfo.getDeviceCode(), WebSocketConstants.GET_RECORD_INFOS_SERVICES, object);
+        LogUtils.WEBSOCKET_MSG.info("获取录像完整性数据:{}", JacksonUtils.toJSONString(websocketResult));
+        WebSocketUtils.sendMessage(iotDeviceInfo.getIotToken(),JacksonUtils.toJSONString(websocketResult));*/
     }
 
     @Override

+ 8 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/handler/SocWebSocketHandler.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.xunmei.common.core.constant.Constants;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
 import com.xunmei.common.core.enums.iot.IotServerConnectStatus;
 import com.xunmei.common.core.utils.JacksonUtils;
@@ -18,6 +19,8 @@ import com.xunmei.host.websocket.enums.WebsocketStatus;
 import com.xunmei.host.websocket.holder.WebSocketSessionHolder;
 import com.xunmei.host.websocket.service.RouterService;
 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.util.LogUtils;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -48,7 +51,7 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
     @Autowired
     private IotServerInfoService iotServerInfoService;
     @Autowired
-    private IotDeviceStatusService iotDeviceStatusService;
+    private RemoteOrgService orgService;
 
     /**
      * 连接成功后
@@ -64,8 +67,11 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                 map.put("statusDescription", "验证码不存在!");
                 map.put("statusCode", WebsocketStatus.ERROR.getStatusCode());
             } else {
-                map.put("statusDescription", serverInfo.getIotCode());
+                final SysOrg sysOrg = orgService.selectOrgById(serverInfo.getOrgId(), SecurityConstants.INNER);
+                map.put("orgCode", sysOrg.getCode());
+                map.put("orgName", serverInfo.getIotCode());
                 map.put("statusCode", WebsocketStatus.SUCCESS.getStatusCode());
+                map.put("statusDescription", serverInfo.getIotCode());
             }
             WebsocketResult register = createWebsocketResult(null, "register", map);
             WebSocketUtils.sendMessage(session, JacksonUtils.toJSONString(register));

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

@@ -61,7 +61,7 @@ public class WebsocketServiceImpl implements WebsocketService {
         List<String> categories = Arrays.asList(WebSocketConstants.DVS, WebSocketConstants.ALARM_HOST);
         JSONObject args = new JSONObject();
         args.put("categories", categories);
-        WebsocketResult websocketResult = IotServerUtils.invokeIotServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_DEVICE_BASE_INFOS, args);
+        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));
     }
@@ -71,7 +71,7 @@ public class WebsocketServiceImpl implements WebsocketService {
         String[] productNames = ProductEnums.DVS.getProductName();
         JSONObject args = new JSONObject();
         args.put("productNames", productNames);
-        WebsocketResult websocketResult = IotServerUtils.invokeIotServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_DVS_DEVICE_INFOS, args);
+        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));
     }
@@ -81,7 +81,7 @@ public class WebsocketServiceImpl implements WebsocketService {
         String[] productNames = ProductEnums.ALARM_HOST.getProductName();
         JSONObject args = new JSONObject();
         args.put("productNames", productNames);
-        WebsocketResult websocketResult = IotServerUtils.invokeIotServer(iotServerDeviceTopic, new JSONObject(), WebSocketConstants.GET_ALARM_HOST_DEVICE_INFOS, args);
+        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));
     }

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/utils/IotServerUtils.java

@@ -20,7 +20,7 @@ import java.util.UUID;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class IotServerUtils {
 
-    public static WebsocketResult invokeIotServer(String topic, JSONObject headers, String service, Object args){
+    public static WebsocketResult invokeHostServer(String topic, JSONObject headers, String service, Object args){
         WebsocketResult websocketResult = new WebsocketResult();
         websocketResult.setId(UUID.randomUUID().toString());
         websocketResult.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));