From 5cfaa9b36929545906d57c48c0f07a7c6f23d157 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期一, 14 十一月 2022 14:50:22 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java |  841 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 743 insertions(+), 98 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 6b71835..2d005fd 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,163 +1,808 @@
 package com.sandu.ximon.admin.newnova.utils;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.util.SpringContextHolder;
 import com.sandu.ximon.admin.newnova.conf.FilePathConfig;
-import com.sandu.ximon.admin.newnova.vo.StatusVO;
-import com.sandu.ximon.admin.utils.CountDownLatchUtil;
+import com.sandu.ximon.admin.newnova.param.NewNovaStatusParam;
+import com.sandu.ximon.admin.newnova.param.ProgramPrarm;
+import com.sandu.ximon.admin.newnova.vo.*;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.bo.NewNovaInfoBo;
+import com.sandu.ximon.dao.domain.NewNovaLed;
 import com.sun.jna.Native;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Component;
 
-import java.util.LinkedHashMap;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author LiuHaoNan
  * @date 2022/11/9
  */
-@Component
-@AllArgsConstructor
 public class NovaAPIUtil {
 
 
-//    @Value("${new-nova.string-path}")
-//    public String getStringPath() {
-//        return stringPath;
-//    }
+    private FilePathConfig filePathConfig;
 
-    private final FilePathConfig filePathConfig;
-    private final CountDownLatchUtil countDownLatchUtil;
-    private static Boolean g_bAPIReturn = false;
-    private static int g_code = 0;
-    private static String g_sn = "BZSA79353N1310006847"; //BZSA07313J0350000997
+    private Map<String, Boolean> loginSn = new HashMap();
 
-    private static Map loginInfo = new LinkedHashMap();
+    private ViplexCore instance = null;
+
+    private static NovaAPIUtil instanceUtil = null;
+
+    private static String loginInfo = null;
+
+    private NovaAPIUtil() {
+        filePathConfig = SpringContextHolder.getBean(FilePathConfig.class);
+        String rootDir = filePathConfig.getOutPutPath();
+        instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class);
+        System.setProperty("jna.encoding", "UTF-8");
+        System.out.println("淇濆瓨璺緞:" + rootDir);
+        rootDir = rootDir.replaceAll("\\\\", "/");
+        String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
+        instance.nvSetDevLang("Java");
+        System.out.println("nvInit(sdk 鍒濆鍖�):");
+        System.out.println(instance.nvInit(rootDir, companyInfo));
 
 
-
-//    private static ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
-//
-//        @Override
-//        public void dataCallBack(int code, String data) {
-//            // TODO Auto-generated method stub
-//            g_code = code;
-//            String strCode = "\nViplexCore Demo code:" + code;
-//            String strData = "\nViplexCore Demo data:" + data;
-//            System.out.println(strCode);
-//            System.out.println(strData);
-//            g_bAPIReturn = true;
-//        }
-//
-//    };
-
-
-    static void waitAPIReturn() throws InterruptedException {
-        while (!g_bAPIReturn) {
-            Thread.sleep(1000);
-        }
-        g_bAPIReturn = false;
+//        login("MZVA51930N2113017308");//todo 鎵嬪姩鐧诲綍杩樻槸鑷姩鐧诲綍
     }
 
+    public static NovaAPIUtil getInstanceUtil() {
+        if (instanceUtil == null) {
+            synchronized (NovaAPIUtil.class) {
+                if (instanceUtil == null) {
+                    instanceUtil = new NovaAPIUtil();
+                }
+            }
+        }
+        return instanceUtil;
+    }
 
     /**
      * 鐧诲綍
      */
     public StatusVO login(String sn) {
 
-        ViplexCore instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class);
-        String rootDir = System.getProperty("user.dir") + "/temp";
-        String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
-        instance.nvSetDevLang("Java");
-        System.out.println("nvInit(sdk 鍒濆鍖�):");
-        System.out.println(instance.nvInit(rootDir, companyInfo));
-        ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
+        StatusVO searchVO = new StatusVO();
+        System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
+
+        CountDownLatch countDownLatch1 = new CountDownLatch(1);
+        instance.nvSearchTerminalAsync(new ViplexCore.CallBack() {
 
             @Override
             public void dataCallBack(int code, String data) {
-                // TODO Auto-generated method stub
-                g_code = code;
-                String strCode = "\nViplexCore Demo code:" + code;
-                String strData = "\nViplexCore Demo data:" + data;
-                System.out.println(strCode);
-                System.out.println(strData);
-                g_bAPIReturn = true;
+                searchVO.setStatusCode(code);
+                searchVO.setStatusData(data);
+                loginInfo = data;
+                System.out.println("\nViplexCore 鎼滅储 code:" + code);
+                System.out.println("\nViplexCore 鎼滅储 data:" + data);
+                countDownLatch1.countDown();
             }
-
-        };
-
-
-        System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
-        StatusVO statusVO = new StatusVO();
-        instance.nvSearchTerminalAsync(callBack);
-//        countDownLatchUtil.push();
-//        instance.nvSearchTerminalAsync(new ViplexCore.CallBack() {
-//
-//            @Override
-//            public void dataCallBack(int code, String data) {
-//                // TODO Auto-generated method stub
-//                g_code = code;
-//                statusVO.setStatusCode(code);
-//                statusVO.setStatusData(data);
-//                System.out.println("\nViplexCore Demo code:" + code);
-//                System.out.println("\nViplexCore Demo data:" + data);
-//                g_bAPIReturn = true;
-//            }
-//
-//        });
-
-
-
+        });
         try {
-            Thread.sleep(3000);
+            countDownLatch1.await();
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
-        g_bAPIReturn = false;
 
+        if (loginSn.get(sn) != null && loginSn.get(sn)) {
+            return new StatusVO(0);
+        }
+        if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn))) {
+            //鏈悳绱㈠埌灞忓箷  鐧诲綍涓嶆垚鍔�
+            return new StatusVO(10086);
+        }
+
+        StatusVO statusVO = new StatusVO();
 
         System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
-        String loginParam = String.format("{\"sn\":\"" + sn + "\",\"ip\":\"\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"1234567890\",\"loginType\":0}"
-                , g_sn);
+        String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":0}", sn);
+
+        CountDownLatch countDownLatch2 = new CountDownLatch(1);
         instance.nvLoginAsync(loginParam, new ViplexCore.CallBack() {
 
             @Override
             public void dataCallBack(int code, String data) {
-                // TODO Auto-generated method stub
-                g_code = code;
                 statusVO.setStatusCode(code);
                 statusVO.setStatusData(data);
                 System.out.println("\nViplexCore Demo code:" + code);
                 System.out.println("\nViplexCore Demo data:" + data);
-                g_bAPIReturn = true;
+                countDownLatch2.countDown();
             }
 
         });
         try {
-            waitAPIReturn();
+            countDownLatch2.await();
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
-        if (g_code != 0) {
-            System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) 澶辫触锛�");
-            System.out.println("閿欒鐮�:" + g_code);
-            return statusVO;
+        if (statusVO.getStatusCode() != 0) {
+            System.out.println("ViplexCore " + sn + " nvLoginAsync(鐧诲綍) 澶辫触锛�");
+            System.out.println("閿欒鐮�:" + statusVO.getStatusCode());
+        } else {
+            //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
+            loginSn.put(sn, true);
         }
-        //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
-        loginInfo.put(sn, instance);
         return statusVO;
     }
 
     /**
      * 鍒涘缓鑺傜洰
      */
-    public int createPro(String sn) throws InterruptedException {
-        ViplexCore instance = (ViplexCore) loginInfo.get(sn);
-
+    public StatusVO createPro(ProWHVO proWHVO) throws InterruptedException {
+        String createProgram = JSON.toJSONString(proWHVO);
         System.out.println("ViplexCore Demo nvCreateProgramAsync(鍒涘缓鑺傜洰) begin... ");
-//        instance.nvCreateProgramAsync(createProgram, callBack);
-        waitAPIReturn();
+        StatusVO statusVO = new StatusVO();
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        try {
+            instance.nvCreateProgramAsync(createProgram, new ViplexCore.CallBack() {
 
-        return 1;
+                @Override
+                public void dataCallBack(int code, String data) {
+                    statusVO.setStatusCode(code);
+                    statusVO.setStatusData(data);
+                    System.out.println("\nViplexCore 鍒涘缓鑺傜洰 code:" + code);
+                    System.out.println("\nViplexCore 鍒涘缓鑺傜洰 data:" + data);
+                    if (code == 0) {
+                        JSONObject result = JSON.parseObject(data);
+                        //鍒涘缓鑺傜洰鎴愬姛 璁剧疆鐘舵�佷俊鎭负鑺傜洰id
+                        statusVO.setStatusData(String.valueOf(result.getJSONObject("onSuccess").getIntValue("programID")));
+                    }
+                    countDownLatch.countDown();
+                }
+
+            });
+            countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+        } catch (Exception e) {
+        }
+        return statusVO;
     }
 
+    /**
+     * 缂栬緫鑺傜洰
+     *
+     * @param pid
+     * @param pageInfo
+     * @return
+     */
+
+    public StatusVO editProgram(int pid, Map pageInfo) {
+        ProgramInfoVO programInfoVO = new ProgramInfoVO();
+        programInfoVO.setProgramID(pid);
+        programInfoVO.setPageInfo(pageInfo);
+        System.out.println("ViplexCore Demo nvSetPageProgramAsync(缂栬緫鑺傜洰) begin... ");
+        StatusVO statusVO = new StatusVO();
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        instance.nvSetPageProgramAsync(JSON.toJSONString(programInfoVO), new ViplexCore.CallBack() {
+            @Override
+            public void dataCallBack(int code, String data) {
+                statusVO.setStatusCode(code);
+                statusVO.setStatusData(data);
+                System.out.println("\nViplexCore 缂栬緫鑺傜洰 code:" + code);
+                System.out.println("\nViplexCore 缂栬緫鑺傜洰 data:" + data);
+                countDownLatch.countDown();
+            }
+
+        });
+        try {
+            countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+
+        return statusVO;
+    }
+
+
+    /**
+     * 鐢熸垚鑺傜洰
+     *
+     * @param pid
+     * @return
+     */
+    public StatusVO genrateProgram(int pid) {
+        ProGenrateVO proGenrateVO = new ProGenrateVO();
+        proGenrateVO.setProgramID(pid);
+        proGenrateVO.setOutPutPath(filePathConfig.getOutPutPath());
+        System.out.println("ViplexCore Demo nvMakeProgramAsync(鐢熸垚鑺傜洰) begin... ");
+        StatusVO statusVO = new StatusVO();
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        instance.nvMakeProgramAsync(JSON.toJSONString(proGenrateVO), new ViplexCore.CallBack() {
+            @Override
+            public void dataCallBack(int code, String data) {
+                statusVO.setStatusCode(code);
+                statusVO.setStatusData(data);
+                System.out.println("\nViplexCore 鐢熸垚鑺傜洰 code:" + code);
+                System.out.println("\nViplexCore 鐢熸垚鑺傜洰 data:" + data);
+                countDownLatch.countDown();
+            }
+
+        });
+        try {
+            countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        return statusVO;
+    }
+
+
+    /**
+     * 鍙戝竷鑺傜洰
+     *
+     * @param
+     * @return
+     */
+    public List<TrasfromStatusVO> trasfromProgram(ProgramPrarm pageInfo) {
+
+        TransfromProgramVO transfromProgramVO = new TransfromProgramVO();
+        transfromProgramVO.setProgramName("鑺傜洰01");
+        //璁剧疆鑺傜洰鍐呭
+        TransfromProgramVO.SendProgramFilePathsDTO sendProgramFilePaths = new TransfromProgramVO.SendProgramFilePathsDTO();
+        //鑺傜洰
+        sendProgramFilePaths.setProgramPath(filePathConfig.getOutPutPath() + "/program" + pageInfo.getProgramID());
+        //鏂囦欢
+        Map<String, String> mediasPath = new HashMap();
+        mediasPath.put("C:/Users/Administrator/Desktop/novaWin/demo/java/test.png", "test.png");
+        sendProgramFilePaths.setMediasPath(mediasPath);
+
+        transfromProgramVO.setSendProgramFilePaths(sendProgramFilePaths);
+        //鑺傜洰鏍囪瘑
+        transfromProgramVO.setDeviceIdentifier(SecurityUtils.getUserId().toString());
+        transfromProgramVO.setInsertPlay(pageInfo.getInsertPlay());
+        transfromProgramVO.setStartPlayAfterTransferred(pageInfo.getStartPlayAfterTransferred());
+
+        List<TrasfromStatusVO> svoList = new ArrayList<>();
+        System.out.println("ViplexCore Demo nvStartTransferProgramAsync(鍙戦�佽妭鐩�) begin... ");
+//        System.out.println(trasfromProgram);
+//        instance.nvStartTransferProgramAsync(trasfromProgram, callBack);
+//        String trasfromProgram = String.format(
+//                "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program13\",\"mediasPath\": {\"C:/Users/Administrator/Desktop/novaWin/demo/java/test.png\": \"test.png\"}},\"programName\": \"jiemu1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
+//                g_sn,
+//                rootDir);
+        pageInfo.getSnList().forEach(sn -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    if (transfromProgramVO == null) {
+                        return;
+                    }
+                    transfromProgramVO.setSn(sn);
+                    System.out.println(transfromProgramVO);
+
+                    //鎺ㄩ�佺粨鏋�
+                    TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
+                    trasfromStatusVO.setSn(sn);
+                    instance.nvStartTransferProgramAsync(JSON.toJSONString(transfromProgramVO), new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            trasfromStatusVO.setStatusCode(code);
+                            trasfromStatusVO.setStatusData(data);
+                            System.out.println("\nViplexCore 鍙戦�佽妭鐩� code:" + code);
+                            System.out.println("\nViplexCore 鍙戦�佽妭鐩� data:" + data);
+                            //鑺傜洰鍙戝竷鎴愬姛
+                            if (trasfromStatusVO.getStatusCode() == 0) {
+                                countDownLatch.countDown();
+                                svoList.add(trasfromStatusVO);
+                            } else if (trasfromStatusVO.getStatusCode() != 65362) {
+                                //涓婁紶澶辫触
+                                System.out.println("涓婁紶澶辫触");
+                                svoList.add(trasfromStatusVO);
+                                countDownLatch.countDown();
+                            }
+                        }
+                    });
+
+                }
+            }).start();
+
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+
+        return svoList;
+    }
+
+    /**
+     * 鏌ヨ鍦ㄧ嚎鐘舵��
+     *
+     * @return
+     */
+    public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos) {
+        //璁剧疆寮�鍏冲睆鐘舵��
+        newNovaListBos.forEach(led -> {
+            //鑾峰彇淇℃伅涔嬪墠鍏堢櫥褰�
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    StatusVO login = login(led.getSn());
+                    if (login.getStatusCode() == 0) {
+                        //鐧婚檰鎴愬姛 璁剧疆涓哄湪绾�
+                        led.setIsOnline(1);
+                        led.setOnlineSign(1);
+                    } else {
+                        led.setIsOnline(0);
+                    }
+                    countDownLatch.countDown();
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+        return newNovaListBos;
+    }
+
+
+    /**
+     * 鏌ヨ灞忓箷鍩烘湰淇℃伅
+     */
+
+    public NewNovaLed getInfo(NewNovaLed led) {
+        System.out.println("ViplexCore Demo nvGetProductInfoAsync(鑾峰彇灞忓箷淇℃伅) begin... ");
+        StatusVO login = login(led.getSn());
+
+        StatusVO result = new StatusVO();
+        if (login.getStatusCode() == 0) {
+
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
+                    trasfromStatusVO.setSn(led.getSn());
+                    instance.nvGetProductInfoAsync("{\n" +
+                            "  \"sn\":\"" + led.getSn() + "\"\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+                            result.setStatusCode(code);
+                            result.setStatusData(data);
+                            System.out.println("\nViplexCore 鑾峰彇灞忓箷淇℃伅 code:" + code);
+                            System.out.println("\nViplexCore 鑾峰彇灞忓箷淇℃伅 data:" + data);
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MICROSECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        } else {
+            throw new BusinessException("璁惧鐧诲綍澶辫触,缁忔鏌ヨ澶囨槸鍚﹁繛鎺�");
+        }
+        NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class);
+        led.setInfo(newNovaInfoBo);
+        System.out.println(JSON.toJSONString(led.getInfo()) + "--------");
+        return led;
+    }
+
+
+    /**
+     * 鑾峰彇寮�鍏冲睆鐘舵��
+     */
+    public List<NewNovaLed> getScreenPowerState(List<NewNovaLed> newNovaLsit) {
+
+        System.out.println("ViplexCore Demo nvGetScreenPowerStateAsync(鑾峰彇灞忓箷寮�鍏�) begin... ");
+
+        newNovaLsit.forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvGetScreenPowerStateAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\"\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 鑾峰彇灞忓箷寮�鍏� code:" + code);
+                            System.out.println("\nViplexCore 鑾峰彇灞忓箷寮�鍏� data:" + data);
+                            if (code == 0 && data.contains("OPEN")) {
+                                newNova.setScreenPower(1);
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return newNovaLsit;
+    }
+
+    /**
+     * 鑾峰彇闊抽噺
+     */
+    public List<NewNovaLed> getVolumeState(List<NewNovaLed> newNovaLsit) {
+
+        System.out.println("ViplexCore Demo nvGetVolumeAsync(鑾峰彇闊抽噺) begin... ");
+
+        newNovaLsit.forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvGetVolumeAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\"\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 鑾峰彇闊抽噺 code:" + code);
+                            System.out.println("\nViplexCore 鑾峰彇闊抽噺 data:" + data);
+                            if (code == 0) {
+                                newNova.setVolume((BigDecimal) JSON.parseObject(data, Map.class).get("ratio"));
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return newNovaLsit;
+    }
+
+
+    /**
+     * 璁剧疆闊抽噺
+     */
+    public boolean setVolume(NewNovaStatusParam param) {
+
+        System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(Volume) begin... ");
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        StatusVO login = login(param.getSn());
+        if (login.getStatusCode() == 0) {
+            String jsonStr = "{\n" +
+                    "  \"sn\":\"" + param.getSn() + "\",\n" +
+                    "  \"screenBrightnessInfo\":{\n" +
+                    "    \"ratio\":" + param.getVolume() + "\n" +
+                    "  }\n" +
+                    "}";
+            instance.nvSetVolumeAsync(jsonStr, new ViplexCore.CallBack() {
+                @Override
+                public void dataCallBack(int code, String data) {
+
+                    System.out.println("\nViplexCore Volume code:" + code);
+                    System.out.println("\nViplexCore Volume data:" + data);
+                    countDownLatch.countDown();
+                    if (code == 0) {
+                        login.setStatusCode(10086);
+                    }
+                }
+            });
+            try {
+                countDownLatch.await();
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        if (login.getStatusCode() == 10086) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    /**
+     * 鑾峰彇浜害
+     */
+    public List<NewNovaLed> getScreenBrightness(List<NewNovaLed> newNovaLsit) {
+
+        System.out.println("ViplexCore Demo nvGetScreenBrightnessAsync(鑾峰彇浜害) begin... ");
+
+
+        newNovaLsit.forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvGetScreenBrightnessAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\"\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 鑾峰彇浜害 code:" + code);
+                            System.out.println("\nViplexCore 鑾峰彇浜害 data:" + data);
+                            if (code == 0) {
+                                newNova.setBrightness((BigDecimal) JSON.parseObject(data, Map.class).get("ratio"));
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return newNovaLsit;
+    }
+
+    /**
+     * 璁剧疆浜害
+     */
+    public boolean setScreenBrightness(NewNovaStatusParam param) {
+
+        System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(璁剧疆浜害) begin... ");
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        StatusVO login = login(param.getSn());
+        if (login.getStatusCode() == 0) {
+            String jsonStr = "{\n" +
+                    "  \"sn\":\"" + param.getSn() + "\",\n" +
+                    "  \"screenBrightnessInfo\":{\n" +
+                    "    \"ratio\":" + param.getBrightness() + "\n" +
+                    "  }\n" +
+                    "}";
+            instance.nvSetScreenBrightnessAsync(jsonStr, new ViplexCore.CallBack() {
+                @Override
+                public void dataCallBack(int code, String data) {
+
+                    System.out.println("\nViplexCore 璁剧疆浜害 code:" + code);
+                    System.out.println("\nViplexCore 璁剧疆浜害 data:" + data);
+                    countDownLatch.countDown();
+                    if (code == 0) {
+                        login.setStatusCode(10086);
+                    }
+                }
+            });
+            try {
+                countDownLatch.await();
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        if (login.getStatusCode() == 10086) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 鑾峰彇鍚屾
+     */
+    public List<NewNovaLed> getSync(List<NewNovaLed> newNovaLsit) {
+
+        System.out.println("ViplexCore Demo nvGetSyncPlayAsync(鑾峰彇鍚屾) begin... ");
+
+        newNovaLsit.forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvGetSyncPlayAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\"\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 鑾峰彇浜害 code:" + code);
+                            System.out.println("\nViplexCore 鑾峰彇浜害 data:" + data);
+                            if (code == 0) {
+                                newNova.setSync(1);
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return newNovaLsit;
+    }
+
+    /**
+     * 璁剧疆鍚屾
+     */
+    public List<NewNovaStatusParam.NovaDTO> setSync(NewNovaStatusParam param) {
+
+        System.out.println("ViplexCore Demo nvSetSyncPlayAsync(璁剧疆鍚屾) begin... ");
+
+        if (param.getNovaList() == null || param.getNovaList().size() == 0) {
+            throw new BusinessException("鍚屾璁惧涓嶈兘涓虹┖ !");
+        }
+        param.getNovaList().forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvSetSyncPlayAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\",\n" +
+                            "  \"enable\":" + param.isSync() + "\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 璁剧疆鍚屾 code:" + code);
+                            System.out.println("\nViplexCore 璁剧疆鍚屾 data:" + data);
+                            if (code == 0) {
+                                newNova.setStatus(true);
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return param.getNovaList();
+    }
+
+    /**
+     * 閲嶅惎
+     */
+    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("閲嶅惎璁惧涓嶈兘涓虹┖ !");
+        }
+        param.getNovaList().forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvSetReBootTaskAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\",\n" +
+                            "  \"taskInfo\":{\n" +
+                            "    \"type\":\"REBOOT\",\n" +
+                            "    \"source\":{\n" +
+                            "      \"type\":0,\n" +
+                            "      \"platform\":4\n" +
+                            "    },\n" +
+                            "    \"executionType\":\"IMMEDIATELY\",\n" +
+                            "    \"reason\":\"Just to reboot\",\n" +
+                            "    \"conditions\":[\n" +
+                            "      {\n" +
+                            "        \"cron\":[\n" +
+                            "          \"0 15 10 ? * *\",\n" +
+                            "          \"0 0 12 * * ?\"\n" +
+                            "        ],\n" +
+                            "        \"enable\":false\n" +
+                            "      }\n" +
+                            "    ]\n" +
+                            "  }\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 閲嶅惎 code:" + code);
+                            System.out.println("\nViplexCore 閲嶅惎 data:" + data);
+                            if (code == 0) {
+                                newNova.setStatus(true);
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return param.getNovaList();
+    }
+
+    /**
+     * ntp瀵规椂
+     */
+    public List<NewNovaStatusParam.NovaDTO> ntp(NewNovaStatusParam param) {
+
+        System.out.println("ViplexCore Demo nvSetNetTimingInfoAsync(ntp) begin... ");
+
+        if (param.getNovaList() == null || param.getNovaList().size() == 0) {
+            throw new BusinessException("瀵规椂璁惧涓嶈兘涓虹┖ !");
+        }
+
+        param.getNovaList().forEach(newNova -> {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    //鎺ㄩ�佺粨鏋�
+                    instance.nvSetNetTimingInfoAsync("{\n" +
+                            "  \"sn\":\"" + newNova.getSn() + "\",\n" +
+                            "  \"TimingInfo\":{\n" +
+                            "    \"source\":{\n" +
+                            "      \"type\":1,\n" +
+                            "      \"platform\":1\n" +
+                            "    },\n" +
+                            "    \"taskArray\":[\n" +
+                            "      {\n" +
+                            "        \"type\":\"NTP_CONFIG\",\n" +
+                            "        \"action\":4,\n" +
+                            "        \"data\":{\n" +
+                            "          \"enable\":" + param.isNtp() + ",\n" +
+                            "          \"server\":\"http://ntpsss.net\"\n" +
+                            "        }\n" +
+                            "      }\n" +
+                            "    ]\n" +
+                            "  }\n" +
+                            "}", new ViplexCore.CallBack() {
+                        @Override
+                        public void dataCallBack(int code, String data) {
+
+                            System.out.println("\nViplexCore 閲嶅惎 code:" + code);
+                            System.out.println("\nViplexCore 閲嶅惎 data:" + data);
+                            if (code == 0) {
+                                newNova.setStatus(true);
+                            }
+                            countDownLatch.countDown();
+                        }
+                    });
+
+                }
+            }).start();
+            try {
+                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        });
+
+        return param.getNovaList();
+    }
 
 }

--
Gitblit v1.9.3