소스 검색

录像索引代码提交

jingyuanchao 1 년 전
부모
커밋
043c29697c

+ 42 - 15
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/video/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -30,7 +30,6 @@ import com.xunmei.mediator.websocket.dto.WebsocketExecuteReq;
 import com.xunmei.mediator.websocket.dto.WebsocketResult;
 import com.xunmei.mediator.websocket.enums.ProductEnums;
 import com.xunmei.mediator.websocket.enums.TopicTypeEnums;
-import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
 import com.xunmei.mediator.websocket.service.RouterService;
 import com.xunmei.mediator.websocket.utils.IotServerUtils;
 import com.xunmei.mediator.websocket.utils.WebSocketUtils;
@@ -88,25 +87,49 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     public String routerKey() {
         StringJoiner result = new StringJoiner(",");
         result.add(WebSocketConstants.RECORD_INFOS);
+        result.add(WebSocketConstants.GET_RECORD_INFOS_SERVICES);
         return result.toString();
     }
 
     @Override
     public Object execute(WebsocketExecuteReq req) {
-        JSONObject data = (JSONObject) req.getData();
-        VideoIntegrityCheckReq checkReq = data.toJavaObject(VideoIntegrityCheckReq.class);
-        VideoIntegrityCheckDto checkDto = transform(checkReq);
-        checkDto.setToken(req.getToken());
-        checkDto.setDeviceName(req.getDeviceName());
-        checkDto.setProductName(req.getProductName());
-        SysOrg sysOrg = iotServerInfoService.selectOrgByToken(req.getToken());
-        checkDto.setOrganizationGuid(sysOrg.getCode());
-        //执行业务
-        final ReceiveErrorDto dto = this.saveData(checkDto, req.getId());
-        //构建返回数据
-        String topic = req.getTopic() + "/reply";
-        final JSONObject errorDto = IotServerUtils.dealReceiveErrorDto(dto);
-        return IotServerUtils.invokeUpLinkServer(topic, req.getProductName(), req.getDeviceName(), req.getEvent(), errorDto, req.getId());
+        if (WebSocketConstants.GET_RECORD_INFOS_SERVICES.equals(req.getEvent())) {
+            final JSONArray array = (JSONArray) req.getData();
+            for (Object o : array) {
+                final VideoIntegrityCheckReq checkReq = JSON.parseObject(o.toString(), VideoIntegrityCheckReq.class);
+                VideoIntegrityCheckDto checkDto = transform(checkReq);
+                checkDto.setToken(req.getToken());
+                checkDto.setDeviceName(req.getDeviceName());
+                checkDto.setProductName(req.getProductName());
+                SysOrg sysOrg = iotServerInfoService.selectOrgByToken(req.getToken());
+                checkDto.setOrganizationGuid(sysOrg.getCode());
+                //执行业务
+                final ReceiveErrorDto dto = this.saveData(checkDto, req.getId());
+                //构建返回数据
+                String topic = req.getTopic() + "/reply";
+                final JSONObject errorDto = IotServerUtils.dealReceiveErrorDto(dto);
+                return IotServerUtils.invokeUpLinkServer(topic, req.getProductName(), req.getDeviceName(), req.getEvent(), errorDto, req.getId());
+            }
+        } else {
+            //if (WebSocketConstants.RECORD_INFOS.equals(req.getEvent())){
+            JSONObject data = (JSONObject) req.getData();
+            VideoIntegrityCheckReq checkReq = data.toJavaObject(VideoIntegrityCheckReq.class);
+            VideoIntegrityCheckDto checkDto = transform(checkReq);
+            checkDto.setToken(req.getToken());
+            checkDto.setDeviceName(req.getDeviceName());
+            checkDto.setProductName(req.getProductName());
+            SysOrg sysOrg = iotServerInfoService.selectOrgByToken(req.getToken());
+            checkDto.setOrganizationGuid(sysOrg.getCode());
+            //执行业务
+            final ReceiveErrorDto dto = this.saveData(checkDto, req.getId());
+            //构建返回数据
+            String topic = req.getTopic() + "/reply";
+            final JSONObject errorDto = IotServerUtils.dealReceiveErrorDto(dto);
+            return IotServerUtils.invokeUpLinkServer(topic, req.getProductName(), req.getDeviceName(), req.getEvent(), errorDto, req.getId());
+            // }
+        }
+
+        return null;
     }
 
     @Override
@@ -115,6 +138,7 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         if (ObjectUtil.isEmpty(deviceInfoList)) {
             return;
         }
+
         for (IotDeviceInfo iotDeviceInfo : deviceInfoList) {
             JSONObject object = new JSONObject();
             object.put("dvsCode", iotDeviceInfo.getHostCode());
@@ -124,6 +148,9 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
             LogUtils.WEBSOCKET_MSG.info("获取录像完整性数据:{}", JacksonUtils.toJSONString(websocketResult));
             WebSocketUtils.sendAll(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));*/
 
     }
 

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

@@ -92,7 +92,7 @@ public class IotServerUtils {
     public static WebsocketResult invokeUpLinkServer(String topic,String produceName,String deviceName,String invokeMethod,JSONObject object,String replyId){
         WebsocketResult iotWebsocketResult = new WebsocketResult();
         //Iot消息透穿至主机 固定Topic
-        iotWebsocketResult.setTopic(TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), WebSocketConstants.IOT_SERVER,WebSocketConstants.IOT_SERVER_DEVICE));
+        iotWebsocketResult.setTopic(TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_REPLY.getUrl(), WebSocketConstants.IOT_SERVER,WebSocketConstants.IOT_SERVER_DEVICE));
         iotWebsocketResult.setId(replyId);
         iotWebsocketResult.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
         //iot消息头

+ 14 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/utils/WebSocketUtils.java

@@ -113,6 +113,10 @@ public class WebSocketUtils {
      * @param message 要发送的WebSocket消息对象
      */
     private static void sendMessage(WebSocketSession session, WebSocketMessage<?> message) {
+        if (ObjectUtil.isEmpty(message)) {
+            LogUtils.WEBSOCKET_MSG.error("消息发送失败,消息内容为空");
+            return;
+        }
         if (session == null || !session.isOpen()) {
             log.warn("[send] session会话已经关闭");
         } else {
@@ -126,6 +130,10 @@ public class WebSocketUtils {
 
 
     public static void sendAll(String message) {
+        if (ObjectUtil.isEmpty(message)) {
+            LogUtils.WEBSOCKET_MSG.error("消息广播失败,消息内容为空");
+            return ;
+        }
         final Map<String, WebSocketSession> USER_SESSION_MAP = WebSocketSessionHolder.map();
         if (ObjectUtil.isEmpty(USER_SESSION_MAP)) {
             LogUtils.WEBSOCKET_MSG.error("消息广播失败,没有Iot服务在线,消息内容:{}", message);
@@ -146,7 +154,11 @@ public class WebSocketUtils {
         WebSocketSession webSocketSession = USER_SESSION_MAP.get(token);
         try {
             if (null == webSocketSession) {
-                LogUtils.WEBSOCKET_MSG.error("消息广播失败,未找到对应在线的iot服务,iot服务:{},消息内容:{}", token, message);
+                LogUtils.WEBSOCKET_MSG.error("消息发送失败,未找到对应在线的iot服务,iot服务:{},消息内容:{}", token, message);
+                return false;
+            }
+            if (ObjectUtil.isEmpty(message)) {
+                LogUtils.WEBSOCKET_MSG.error("消息发送失败,消息内容为空,iot服务:{}", token);
                 return false;
             }
             webSocketSession.sendMessage(new TextMessage(message));
@@ -161,7 +173,7 @@ public class WebSocketUtils {
 
     public static boolean sendMessage(WebSocketSession webSocketSession, WebsocketResult message) {
         try {
-            if (webSocketSession == null || !webSocketSession.isOpen()) {
+            if (webSocketSession == null || !webSocketSession.isOpen() || ObjectUtil.isEmpty(message)) {
                 return false;
             }
             final String msg = JacksonUtils.toJSONString(message);