Bladeren bron

北向代码提交

jingyuanchao 1 jaar geleden
bovenliggende
commit
e0378badcc

+ 1 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/dto/dvs/DiskInfo.java

@@ -14,6 +14,7 @@ public class DiskInfo implements Serializable {
     private static final long serialVersionUID = 1L;
     private String productName;
     private String deviceName;
+    private String index;
     private String name;
     private Long totalBytes;
     private Long availableBytes;

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

@@ -172,6 +172,10 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                     //IoT返回服务调用消息
                 case PRODUCT_SERVICE_REPLY:
                     RouterService routeService = RouterServiceHandler.getRouteService(typeEnums.getProductName(), payloadResolve.getRoutingKey());
+                    if (routeService == null) {
+                        LogUtils.WEBSOCKET_MSG.error("消息路由服务不存在,ip:{},topic:{}", ip, topic);
+                        return;
+                    }
                     result = (WebsocketResult) routeService.execute(executeReq);
                     break;
                 //IoT上报属性变化

+ 13 - 7
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/service/RouterServiceHandler.java

@@ -2,16 +2,18 @@ package com.xunmei.mediator.websocket.service;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.xunmei.mediator.websocket.enums.ProductEnums;
+import com.xunmei.system.api.util.LogUtils;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 
 public class RouterServiceHandler {
     private static final Map<String, RouterService> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
-    private static final Map<ProductEnums, List<RouterService>> PRODUCT_HASH_MAP =  new ConcurrentHashMap<>();
+    private static final Map<ProductEnums, List<RouterService>> PRODUCT_HASH_MAP = new ConcurrentHashMap<>();
 
     static {
         Map<String, RouterService> map = SpringUtil.getBeansOfType(RouterService.class);
@@ -32,17 +34,21 @@ public class RouterServiceHandler {
         throw new RuntimeException("未找到对应的处理类");
     }
 
-    public static RouterService getRouteService(String productName,String routerKey) {
+    public static RouterService getRouteService(String productName, String routerKey) {
         ProductEnums enums = ProductEnums.getByProductName(productName);
-        if (enums == null){
+        if (enums == null) {
             throw new RuntimeException("未找到对应的产品类型");
         }
 
-        return PRODUCT_HASH_MAP.get(enums)
+        final Optional<RouterService> first = PRODUCT_HASH_MAP.get(enums)
                 .stream()
                 .filter(routerService -> routerService.routerKey().contains(routerKey))
-                .findFirst()
-                .orElseThrow(() -> new RuntimeException("未找到对应的处理类"));
-
+                .findFirst();
+        if (first.isPresent()) {
+            return first.get();
+        } else {
+            LogUtils.WEBSOCKET_MSG.error("未找到对应的处理类");
+        }
+        return null;
     }
 }

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/service/impl/WebsocketServiceImpl.java

@@ -581,7 +581,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
             diskInfo.setTotalMb(convertToMB(diskInfo.getTotalBytes()));
             diskInfo.setAvailableMb(convertToMB(diskInfo.getAvailableBytes()));
             diskInfo.setFreeMb(convertToMB(diskInfo.getFreeBytes()));
-            IotDvrDisk info = iIotDvrDiskService.selectByTokenAndDiskIndex(token, diskInfo.getDeviceName(), diskInfo.getDiskSerialNum());
+            IotDvrDisk info = iIotDvrDiskService.selectByTokenAndDiskIndex(token, diskInfo.getDeviceName(), diskInfo.getIndex());
             if (info == null) {
                 info = createDiskInfo(diskInfo, serverInfo);
                 addDiskList.add(info);