From 5e94332935da62448c17f89a807acf46a5ae3e75 Mon Sep 17 00:00:00 2001
From: Van333 <van666666@foxmail.com>
Date: 星期四, 15 十二月 2022 10:08:22 +0800
Subject: [PATCH] 本地诺瓦调整

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java |  124 +++++++++++++++++++++++++++--------------
 1 files changed, 81 insertions(+), 43 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
index 59ddeaa..393bc3c 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
@@ -1,5 +1,6 @@
 package com.sandu.ximon.admin.newnova.utils;
 
+import afu.org.checkerframework.checker.units.qual.A;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.sandu.common.execption.BusinessException;
@@ -24,6 +25,8 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
+import static java.lang.Thread.sleep;
+
 /**
  * @author LiuHaoNan
  * @date 2022/11/9
@@ -33,7 +36,15 @@
 
     private ProgramPathConfig filePathConfig;
 
-    private Map<String, Boolean> loginSn = new HashMap();
+    /*
+    * 鎴愬姛鐧诲綍鐨�
+    * */
+    public static Map<String, Boolean> loginSn = new HashMap();
+
+    /*
+    * 鎼滅储鍑烘潵鐨勭姸鎬�
+    * */
+    public static List<StatusVO> searchStatus = new ArrayList<>();
 
     private ViplexCore instance = null;
 
@@ -41,7 +52,7 @@
 
     private static String loginInfo = null;
 
-    private NovaAPIUtil() {
+    private NovaAPIUtil() throws InterruptedException {
         filePathConfig = SpringContextHolder.getBean(ProgramPathConfig.class);
         String rootDir = filePathConfig.getOutPutPath();
         instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class);
@@ -57,32 +68,59 @@
         System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
 
         CountDownLatch countDownLatch1 = new CountDownLatch(1);
-        instance.nvSearchTerminalAsync(new ViplexCore.CallBack() {
+        instance.nvSearchTerminalAsync((code, data) -> {
+            searchVO.setStatusCode(code);
+            searchVO.setStatusData(data);
+            loginInfo = data;
 
-            @Override
-            public void dataCallBack(int code, String data) {
-                searchVO.setStatusCode(code);
-                searchVO.setStatusData(data);
-                loginInfo = data;
+
+            if (code == 0 ){
+                Map map = (Map) JSONObject.parse(data);
+                /*
+                * 褰撳墠灞忎綋鐘舵�侊紝terminalState鍏辨湁6涓��,鍒嗗埆浠h〃锛�
+0锛氭湭杩炴帴浠讳綍缁堢锛屽綋鍓嶅浜庢湭杩炴帴鐘舵��
+1锛氳繛鎺ユ垚鍔熶絾鏄湭鐧诲綍鐘舵��
+2锛氳浠栦汉鐧诲綍鐘舵��
+3锛氱櫥褰曟垚鍔熺姸鎬�
+4锛氬瘑鐮侀敊璇姸鎬�
+5锛氱绾跨姸鎬侊紝澶勪簬鎼滅储涓嶅埌鐨勭姸鎬侊紝浣嗘槸鏇剧粡琚悳绱㈠埌杩�
+                * */
+                if (map.get("terminalState").equals(0) || map.get("terminalState").equals(1)){
+                    login((String) map.get("sn"),0);
+                    searchVO.setSn((String) map.get("sn"));
+                    searchStatus.add(searchVO);
+                    System.out.println("\nViplexCore 鎼滅储 sn:" + map.get("sn"));
+                } else if (map.get("terminalState").equals(3) ) {
+                    loginSn.put(searchVO.getSn(),true);
+                }
+
                 System.out.println("\nViplexCore 鎼滅储 code:" + code);
                 System.out.println("\nViplexCore 鎼滅储 data:" + data);
-                countDownLatch1.countDown();
             }
+            else{
+                System.out.println("鎼滅储缁撴灉code锛�"+code);
+            }
+            countDownLatch1.countDown();
         });
 
         try {
-            countDownLatch1.await(10000, TimeUnit.MILLISECONDS);
+            countDownLatch1.await(30000, TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
 //        login("MZVA51930N2113017308");
+        sleep(35000);
     }
 
     public static NovaAPIUtil getInstanceUtil() {
         if (instanceUtil == null) {
             synchronized (NovaAPIUtil.class) {
                 if (instanceUtil == null) {
-                    instanceUtil = new NovaAPIUtil();
+                    try {
+                        instanceUtil = new NovaAPIUtil();
+                    } catch (InterruptedException e) {
+                        throw new RuntimeException(e);
+                    }
                 }
             }
         }
@@ -100,49 +138,50 @@
      */
     public StatusVO login(String sn, Integer loginType) {
 
+        /*
+        浠巐oginSn 鍒ゆ柇鏄惁鐧诲綍杩�
+        * */
         if (loginSn.get(sn) != null && loginSn.get(sn) && loginType == 0) {
             return new StatusVO(0);
         }
-        if (loginInfo == null) {
-            return new StatusVO(10086);
-        }
-        if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn)) && loginType == 0) {
-            //鏈悳绱㈠埌灞忓箷  鐧诲綍涓嶆垚鍔�
-            System.out.println("loginType : " + loginType);
-            return new StatusVO(10086);
-        }
+        /*
+        * 娌℃湁鍒欐墽琛岀櫥褰�
+        * */
+        else  {
 
-        StatusVO statusVO = new StatusVO();
+            StatusVO statusVO = new StatusVO();
 
-        System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
-        String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":" + loginType + "}", sn);
+            System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
+            String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":" + loginType + "}", sn);
 
-        CountDownLatch countDownLatch2 = new CountDownLatch(1);
-        instance.nvLoginAsync(loginParam, new ViplexCore.CallBack() {
-
-            @Override
-            public void dataCallBack(int code, String data) {
+            CountDownLatch countDownLatch2 = new CountDownLatch(1);
+            instance.nvLoginAsync(loginParam, (code, data) -> {
                 statusVO.setStatusCode(code);
                 statusVO.setStatusData(data);
+
+                System.out.println("\nViplexCore 鐧诲綍 sn:" + sn);
                 System.out.println("\nViplexCore 鐧诲綍 code:" + code);
                 System.out.println("\nViplexCore 鐧诲綍 data:" + data);
+                if (code == 65353) {
+                    statusVO.setStatusCode(0);
+                }
                 countDownLatch2.countDown();
-            }
+            });
 
-        });
-        try {
-            countDownLatch2.await();
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
+            try {
+                countDownLatch2.await(5000,TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            if (statusVO.getStatusCode() != 0) {
+                System.out.println("ViplexCore " + sn + " nvLoginAsync(鐧诲綍) 澶辫触锛�");
+                System.out.println("閿欒鐮�:" + statusVO.getStatusCode());
+                loginSn.put(sn,false);
+            } else {
+                loginSn.put(sn, true);
+            }
+            return statusVO;
         }
-        if (statusVO.getStatusCode() != 0) {
-            System.out.println("ViplexCore " + sn + " nvLoginAsync(鐧诲綍) 澶辫触锛�");
-            System.out.println("閿欒鐮�:" + statusVO.getStatusCode());
-        } else {
-            //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
-            loginSn.put(sn, true);
-        }
-        return statusVO;
     }
 
     /**
@@ -776,14 +815,13 @@
      * 閲嶅惎
      */
     public List<NewNovaStatusParam.NovaDTO> reboot(NewNovaStatusParam param) {
-
         System.out.println("ViplexCore Demo nvSetReBootTaskAsync(閲嶅惎) begin... ");
         if (param.getNovaList() == null || param.getNovaList().size() == 0) {
             throw new BusinessException("閲嶅惎璁惧涓嶈兘涓虹┖ !");
         }
         CountDownLatch countDownLatch = new CountDownLatch(1);
         param.getNovaList().forEach(newNova -> {
-                    logout(newNova.getSn(), 0);
+//                    logout(newNova.getSn(), 0);
                     StatusVO login = login(newNova.getSn(), 1);
                     if (login.getStatusCode() != 0) {
                         countDownLatch.countDown();

--
Gitblit v1.9.3