From 5c82602d54928cc414177084ab6d81cef4c11d15 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 11 三月 2025 09:33:25 +0800
Subject: [PATCH] getosd数组下标越界问题 以及 离线时间

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java    |    1 
 ycl-server/src/main/java/com/ycl/api/HK/HKApi.java                                    |    2 
 ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java                       |   49 +++++++++++++++++++-----
 ycl-server/src/main/java/com/ycl/task/PlatformTask.java                               |   15 ++++++-
 ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java                              |    8 ++--
 ycl-server/src/main/java/com/ycl/task/OsdTask.java                                    |    4 +-
 ycl-server/src/main/java/com/ycl/api/YS/YSApi.java                                    |   21 +++++++---
 ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java                           |    4 +-
 ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java             |    3 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformOnlineServiceImpl.java |    2 
 10 files changed, 77 insertions(+), 32 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java b/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
index 4ebafcc..08dc0b9 100644
--- a/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
+++ b/ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
@@ -206,7 +206,7 @@
                     for (NET_TITLE_OSD_INFO osd : stuOSD) {
                         String osdStr = null;
                         osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim();
-//                        log.info("TEXT锛�"+osdStr);
+                        log.error("DHTEXTLeftDown锛�"+osdStr);
                         if (!StringUtils.isEmpty(osdStr)) {
                             osdResult.setOSD4(osdStr);
                         }
@@ -217,7 +217,7 @@
                     for (NET_TITLE_OSD_INFO osd : stuOSD) {
                         String osdStr = null;
                         osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim();
-                        log.error("TEXT锛�"+osdStr);
+                        log.error("DHTEXTRightDown锛�"+osdStr);
                         if (!StringUtils.isEmpty(osdStr)) {
                             if (osdStr.contains("|")) {
                                 String[] osdNames = osdStr.split("\\|");
@@ -253,24 +253,36 @@
      * @param loginId
      * @return
      */
-    public static OSDResult getOsdOld(String serialNumber, LLong loginId) {
+    public static OSDResult getOsdOld(String moName,String serialNumber, LLong loginId) {
         OSDResult result = new OSDResult();
         NetSDKLib.NET_OSD_CUSTOM_TITLE osdInfo4 = new NetSDKLib.NET_OSD_CUSTOM_TITLE();
         osdInfo4.emOsdBlendType = NetSDKLib.NET_EM_OSD_BLEND_TYPE.NET_EM_OSD_BLEND_TYPE_MAIN;
         NetSDKLib.NET_OSD_CUSTOM_TITLE reserve4 = new NetSDKLib.NET_OSD_CUSTOM_TITLE();
         osdInfo4.write();
         boolean e = false;
-        e = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_CUSTOMTITLE, 0, osdInfo4.getPointer(), osdInfo4.size(), 3000, reserve4.getPointer());
-        if (!e) {
-            log.error("e涓虹┖,灏濊瘯鍙︿竴涓�氶亾");
+        if (moName.startsWith("DX_R2")){ //鍒ゆ柇璁惧鏄惁鏄疍X_R2寮�澶�
+            if (serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_All) {
+            e = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_CUSTOMTITLE, 0, osdInfo4.getPointer(), osdInfo4.size(), 3000, reserve4.getPointer());
+                }
+            else if (serialNumber.charAt(ApiConstants.SerialNumber_Channel) == ApiConstants.SerialNumber_Detail) {
             e = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_CUSTOMTITLE, 1, osdInfo4.getPointer(), osdInfo4.size(), 3000, reserve4.getPointer());
+            }
+            if (!e) {
+                log.error("e涓虹┖");
+            }
+        }else {
+            e = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_CUSTOMTITLE, 0, osdInfo4.getPointer(), osdInfo4.size(), 3000, reserve4.getPointer());
+            if (!e) {
+                log.error("e涓虹┖,灏濊瘯鍙︿竴涓�氶亾");
+                e = netsdk.CLIENT_GetConfig(loginId, NET_EM_CFG_CUSTOMTITLE, 1, osdInfo4.getPointer(), osdInfo4.size(), 3000, reserve4.getPointer());
+            }
         }
         if (e) {
             osdInfo4.read();
             NetSDKLib.NET_CUSTOM_TITLE_INFO[] stuCustomTitle = osdInfo4.stuCustomTitle;
             for (NetSDKLib.NET_CUSTOM_TITLE_INFO net_custom_title_info : stuCustomTitle) {
                 String name = new String(net_custom_title_info.szText, StandardCharsets.UTF_8).trim();
-                log.error("name:{}", name);
+                log.error("DHname:{}", name);
                 if (StringUtils.isNotEmpty(name) && name.contains("|")) {
                     String[] osdNames = name.split("\\|");
                     //鍓旈櫎鎺夌┖涓�
@@ -280,15 +292,30 @@
 //                            nonEmptyList.add(osd);
 //                        }
 //                    }
-                    result.setOSD1(osdNames[0]);
-                    result.setOSD2(osdNames[1]);
-                    result.setOSD3(osdNames[2]);
-                    result.setName(osdNames[3]);
+                    for (int i = 0; i < osdNames.length; i++) {
+                        if (i == 0) {
+                            result.setOSD1(osdNames[i]);
+                        }
+                        if (i == 1) {
+                            result.setOSD2(osdNames[i]);
+                        }
+                        if (i == 2) {
+                            result.setOSD3(osdNames[i]);
+                        }
+                        if (i == 3) {
+                            result.setName(osdNames[i]);
+                        }
+                    }
+
+
                 }
             }
+
+
         } else {
             log.error(serialNumber, "鍒╂棫osd涓虹┖");
         }
+
         return result;
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java b/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
index c25df84..f1c6fac 100644
--- a/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
+++ b/ycl-server/src/main/java/com/ycl/api/DH/utils/DHApi.java
@@ -9,14 +9,14 @@
 @Slf4j
 public class DHApi {
 
-    public static OSDResult getOsd(String serialNumber,String ip, String userName, String password){
+    public static OSDResult getOsd(String name,String serialNumber,String ip, String userName, String password){
         NetSDKLib.LLong loginId = LoginModule.login(ip, 80, userName, password);
         if(loginId.longValue() ==0){
             return null;
         }
         OSDResult osd = LoginModule.getOsd(serialNumber,loginId);
         if(osd!=null && osd.getOSD1() ==null &&osd.getOSD2()==null && osd.getOSD3()==null &&osd.getName()==null) {
-            OSDResult osdOld = LoginModule.getOsdOld(serialNumber, loginId);
+            OSDResult osdOld = LoginModule.getOsdOld(name,serialNumber, loginId);
             osd.setOSD1(osdOld.getOSD1());
             osd.setOSD2(osdOld.getOSD2());
             osd.setOSD3(osdOld.getOSD3());
@@ -25,12 +25,12 @@
         LoginModule.logout(loginId);
         return osd;
     }
-    public static OSDResult getOsdOld(String serialNumber,String ip, String userName, String password){
+    public static OSDResult getOsdOld(String name,String serialNumber,String ip, String userName, String password){
         NetSDKLib.LLong loginId = LoginModule.login(ip, 80, userName, password);
         if(loginId.longValue() ==0){
             return null;
         }
-        OSDResult osdOld = LoginModule.getOsdOld(serialNumber, loginId);
+        OSDResult osdOld = LoginModule.getOsdOld(name,serialNumber, loginId);
         LoginModule.logout(loginId);
         return osdOld;
     }
diff --git a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
index b6c5c17..0f15d17 100644
--- a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
+++ b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java
@@ -108,7 +108,7 @@
                 if (node.getNodeType() == Node.ELEMENT_NODE && "TextOverlay".equals(tagName1)) {
                     Element element = (Element) node;
                     String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent();
-                    //                log.info("TEXT : " + textContent);
+                    log.info("HKTEXT : " + textContent);
                     if (i == 0) {
                         osdResult.setOSD1(textContent);
                     } else if (i == 1) {
diff --git a/ycl-server/src/main/java/com/ycl/api/YS/YSApi.java b/ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
index bb8fcdf..40fd8f6 100644
--- a/ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
+++ b/ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
@@ -98,11 +98,20 @@
             log.error("YSname:{}" , name);
             if (StringUtils.isNotEmpty(name) && name.contains("|")){
                 String[] osdNames = name.split("\\|");
-                osdResult.setOSD1(osdNames[0]);
-                osdResult.setOSD2(osdNames[1]);
-                osdResult.setOSD3(osdNames[2]);
-                osdResult.setName(osdNames[3]);
-                osdResult.setOSD4(osdNames[4]);
+                for (int i = 0; i < osdNames.length; i++) {
+                    if (i == 0) {
+                        osdResult.setOSD1(osdNames[i]);
+                    }
+                    if (i == 1) {
+                        osdResult.setOSD2(osdNames[i]);
+                    }
+                    if (i == 2) {
+                        osdResult.setOSD3(osdNames[i]);
+                    }
+                    if (i == 3) {
+                        osdResult.setName(osdNames[i]);
+                    }
+                }
             }else {
                 //鐪佷唤
                 osdResult.setOSD1(name);
@@ -110,7 +119,7 @@
                 int num = 0;
                 for (NetDEVSDKLib.NETDEV_OSD_TEXT_OVERLAY_S osd : stOSDInfo.astTextOverlay) {
                     String text = new String(osd.szOSDText, StandardCharsets.UTF_8).trim();
-//                    log.info("YSnum:"+num+",YStexr:"+text);
+                    log.info("YSnum:"+num+",YStexr:"+text);
                     if (num == 0) {
                         osdResult.setOSD2(text);
                     } else if (num == 1) {
diff --git a/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
index 549028c..6d4294b 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
@@ -41,6 +41,7 @@
 
     @Override
     public void calculate(List<PlatformOnlineVO> list) {
+        //list 瀵硅薄鏄煡璇� t_platform_online 鏄ㄥぉ鏃舵鐨勯泦鍚堝璞�
         Map<String,Double> map = new HashMap<>();
         if (!CollectionUtils.isEmpty(list)) {
             for (PlatformOnlineVO platformOnlineVO : list) {
@@ -49,7 +50,7 @@
                     Integer deptId = AreaDeptEnum.fromCode(area).getDeptId();
                     //绂荤嚎鏃堕暱
                     Integer time = platformOnlineVO.getTodayOutlineSed();
-                    //绂荤嚎鏃堕暱杞崲浣嶅垎閽�
+                    //绂荤嚎鏃堕暱杞崲涓哄垎閽�
                     int num = (time / 60) / 30;
                     double score = Math.max(1 - num * 0.1, 0);
                     map.put(deptId+"",score);
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformOnlineServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformOnlineServiceImpl.java
index 8191870..2370080 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformOnlineServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformOnlineServiceImpl.java
@@ -49,7 +49,7 @@
      * @return
      */
     @Override
-    public Result page(DataCenterQuery query) {
+    public Result page(DataCenterQuery query) { //鍒嗛〉 骞冲彴
         Page<PlatformOnlineVO> page = new Page<>(query.getPageNum(), query.getPageSize());
         baseMapper.getPage(page, query);
         HashMap<String, Object> map = new HashMap<>();
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
index 8a19b35..25958be 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -318,7 +318,6 @@
         /** 娣诲姞宸ュ崟 */
         workOrderService.innerAddWorkOrder(workOrderList);
         workOrderService.innerAddWorkOrder(distributeList);
-
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/task/OsdTask.java b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
index 5f4f8b9..6db0349 100644
--- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -243,9 +243,9 @@
 
     public void test() throws ExecutionException, InterruptedException {
         log.info("娴嬭瘯鑾峰彇OSD");
-        OSDResult osd3 = DHApi.getOsdOld("51030340001320207201", "51.95.34.20", DHUserName, DHPassword);
+        OSDResult osd3 = DHApi.getOsdOld("","51030340001320207201", "51.95.34.20", DHUserName, DHPassword);
         log.info("osd3:{}", osd3);
-        OSDResult osd4 = DHApi.getOsdOld("51030342001320173201", "51.95.33.174", DHUserName, DHPassword);
+        OSDResult osd4 = DHApi.getOsdOld("","51030342001320173201", "51.95.33.174", DHUserName, DHPassword);
         log.info("osd4:{}", osd4);
     }
 }
diff --git a/ycl-server/src/main/java/com/ycl/task/PlatformTask.java b/ycl-server/src/main/java/com/ycl/task/PlatformTask.java
index f9ca8df..88a6f7c 100644
--- a/ycl-server/src/main/java/com/ycl/task/PlatformTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/PlatformTask.java
@@ -12,8 +12,11 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
+import javax.swing.text.DateFormatter;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -74,7 +77,11 @@
                     }
                     if (!reachable) {
                         // 濡傛灉ping涓嶉�氾紝绂荤嚎鏃堕暱鍔�5绉�
-                        redisTemplate.opsForValue().increment(REDIS_KEY_PREFIX + platform.getPlatformIP(), 5);
+                        LocalDateTime localDateTime = LocalDateTime.now();
+                        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        String todayTime = localDateTime.format(dateTimeFormatter);
+                        //姣忔redis绱5s
+                        redisTemplate.opsForValue().increment(REDIS_KEY_PREFIX + todayTime + platform.getPlatformIP(), 5);
                         log.warn(platform.getPlatformName() + "骞冲彴鏈猵ing閫�");
                     }
                 } catch (Exception e) {
@@ -94,9 +101,11 @@
                 .list();
         // 灏唈ava.util.Date杞崲涓簀ava.sql.Date
         java.sql.Date sqlDate = new java.sql.Date(new Date().getTime());
-
+        LocalDateTime localDateTime = LocalDateTime.now();
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String todayTime = localDateTime.format(dateTimeFormatter);
         for (Platform platform : platformList) {
-            Object outLineTime = redisTemplate.opsForValue().get(REDIS_KEY_PREFIX + platform.getPlatformIP());
+            Object outLineTime = redisTemplate.opsForValue().get(REDIS_KEY_PREFIX + todayTime + platform.getPlatformIP());
             Integer outlineTimeSed = Objects.isNull(outLineTime) ? 0 : (Integer) outLineTime;
             PlatformOnline one = new LambdaQueryChainWrapper<>(platformOnlineService.getBaseMapper())
                     .eq(PlatformOnline::getPlatformId, platform.getId())
diff --git a/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
index 1d8863b..e9d10d7 100644
--- a/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
+++ b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
@@ -39,7 +39,7 @@
             }
         } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) {
             //澶у崕
-            OSDResult osd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
+            OSDResult osd = DHApi.getOsd(monitor.getName(),monitor.getSerialNumber(),monitor.getIp(), monitor.getUsername(),monitor.getPassword());
             OSDResult osdResult = checkSuccess(monitor, osd);
             if (osdResult!=null) {
                 return osd;
@@ -69,7 +69,7 @@
             return hkosd;
         }
         //灏濊瘯澶у崕鐨刟pi
-        OSDResult dhosd = DHApi.getOsd(monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
+        OSDResult dhosd = DHApi.getOsd(monitor.getName(),monitor.getSerialNumber(),monitor.getIp(),monitor.getUsername(),monitor.getPassword());
         if (dhosd != null) {
             dhosd.setSerialNumber(monitor.getSerialNumber());
             return dhosd;

--
Gitblit v1.8.0