From 4910c350e379c180bdb7c3194e8ea0770928129f Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期二, 02 十二月 2025 10:53:22 +0800
Subject: [PATCH] 大屏接口修改

---
 src/main/java/com/wgcloud/service/OspfInfoService.java |  101 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 73 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/wgcloud/service/OspfInfoService.java b/src/main/java/com/wgcloud/service/OspfInfoService.java
index 2f2257b..1f2f36f 100644
--- a/src/main/java/com/wgcloud/service/OspfInfoService.java
+++ b/src/main/java/com/wgcloud/service/OspfInfoService.java
@@ -2,10 +2,14 @@
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.wgcloud.entity.OspfErrorLog;
 import com.wgcloud.entity.OspfInfo;
 import com.wgcloud.entity.SnmpInfo;
+import com.wgcloud.entity.vo.OspfNeighbor;
+import com.wgcloud.mapper.OspfErrorLogMapper;
 import com.wgcloud.mapper.OspfInfoMapper;
 import com.wgcloud.util.DateUtil;
+import com.wgcloud.util.OspfNeighborUtil;
 import com.wgcloud.util.UUIDUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -30,6 +34,10 @@
 
     @Autowired
     private RouterConnectionService routerConnectionService;
+    @Autowired
+    private OspfNeighborUtil ospfNeighborUtil;
+    @Autowired
+    private OspfErrorLogMapper errorLogMapper;
 
     private static final Logger logger = LoggerFactory.getLogger(OspfInfoService.class);
 
@@ -70,44 +78,81 @@
         OspfInfoMapper.updateById(ospfInfo);
     }
 
-    public boolean checkOspfStatus() {
-        String command = "display ospf brief";
-        String output = routerConnectionService.executeCommand(command);
-
-        if (output == null) {
-            return false;
-        }
-
-        // 妫�鏌ヨ緭鍑轰腑鏄惁鍖呭惈OSPF鐩稿叧淇℃伅
-        boolean containsRouterId = StringUtils.containsIgnoreCase(output, "Router ID");
-        boolean containsArea = StringUtils.containsIgnoreCase(output, "Area");
-        boolean containsProcessId = StringUtils.containsIgnoreCase(output, "Process ID");
-
-        // 妫�鏌ユ槸鍚︽湁閿欒淇℃伅
-        boolean containsError = StringUtils.containsIgnoreCase(output, "Error") ||
-                StringUtils.containsIgnoreCase(output, "Fail") ||
-                StringUtils.containsIgnoreCase(output, "Invalid");
-
-        return (containsRouterId && containsArea && containsProcessId) && !containsError;
-    }
+//    public boolean checkOspfStatus() {
+//        String command = "display ospf brief";
+//        String output = routerConnectionService.executeCommand(command);
+//
+//        if (output == null) {
+//            return false;
+//        }
+//
+//        // 妫�鏌ヨ緭鍑轰腑鏄惁鍖呭惈OSPF鐩稿叧淇℃伅
+//        boolean containsRouterId = StringUtils.containsIgnoreCase(output, "Router ID");
+//        boolean containsArea = StringUtils.containsIgnoreCase(output, "Area");
+//        boolean containsProcessId = StringUtils.containsIgnoreCase(output, "Process ID");
+//
+//        // 妫�鏌ユ槸鍚︽湁閿欒淇℃伅
+//        boolean containsError = StringUtils.containsIgnoreCase(output, "Error") ||
+//                StringUtils.containsIgnoreCase(output, "Fail") ||
+//                StringUtils.containsIgnoreCase(output, "Invalid");
+//
+//        return (containsRouterId && containsArea && containsProcessId) && !containsError;
+//    }
 
     /**
      * 鑾峰彇璇︾粏鐨凮SPF閭诲眳淇℃伅
      */
-    public String getDetailedOspfNeighborInfo() {
-        String command = "display ospf peer";
-        return routerConnectionService.executeCommand(command);
+    public void getDetailedOspfNeighborInfo() {
+        List<OspfInfo> ospfInfos = OspfInfoMapper.selectAllByParams(null);
+        for (OspfInfo ospfInfo : ospfInfos) {
+            String command = "display ospf peer "+ospfInfo.getHostname();
+            String result =  routerConnectionService.executeCommand(command,ospfInfo.getMonitorUsername(),ospfInfo.getMonitorPassword(),ospfInfo.getMonitorIp());
+            if(StringUtils.isNotBlank(result)){
+                List<OspfNeighbor> neighbors = ospfNeighborUtil.analysisStr(result);
+                if(neighbors != null || neighbors.size()>0){
+                    OspfNeighbor ospfNeighbor = neighbors.get(0);
+                    String state = ospfNeighbor.getState();
+                    if (state.contains("Down") || state.contains("Init")) {
+                        ospfInfo.setState("1");
+                        OspfInfoMapper.updateById(ospfInfo);
+
+                        HashMap<String, Object> hashMap = new HashMap<>();
+                        hashMap.put("state","1");
+                        hashMap.put("hostname",ospfInfo.getHostname());
+                        List<OspfErrorLog> ospfErrorLogs = errorLogMapper.selectAllByParams(hashMap);
+                        if(ospfErrorLogs==null||ospfErrorLogs.size()==0){
+                            OspfErrorLog ospfErrorLog = new OspfErrorLog();
+                            ospfErrorLog.setInfoContent(ospfInfo.getInfoContent());
+                            ospfErrorLog.setHostname(ospfInfo.getHostname());
+                            ospfErrorLog.setState("1");
+                            try {
+                                errorLogMapper.save(ospfErrorLog);
+                            }catch (Exception e){
+                                e.printStackTrace();
+                            }
+                        }
+                    }else {
+                        ospfInfo.setState("0");
+                        OspfInfoMapper.updateById(ospfInfo);
+                    }
+                }
+            }else {
+                ospfInfo.setState("1");
+                OspfInfoMapper.updateById(ospfInfo);
+            }
+
+        }
     }
 
     /**
      * 鑾峰彇OSPF鎺ュ彛鐘舵��
      */
-    public String getOspfInterfaceStatus() {
-        String command = "display ospf interface";
-        return routerConnectionService.executeCommand(command);
-    }
+//    public String getOspfInterfaceStatus() {
+//        String command = "display ospf interface";
+//        return routerConnectionService.executeCommand(command);
+//    }
 
-    
+
 
 
     public int countByParams(Map<String, Object> params) throws Exception {

--
Gitblit v1.9.1