| | |
| | | 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(); |
| | | } |
| | | |
| | | } |