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.file.config.NovaFileConfig;
|
import com.sandu.common.util.SpringContextHolder;
|
import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig;
|
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 org.joda.time.DateTime;
|
|
import java.io.File;
|
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
|
*/
|
public class NovaAPIUtil {
|
|
|
private ProgramPathConfig filePathConfig;
|
|
private Map<String, Boolean> loginSn = new HashMap();
|
|
private ViplexCore instance = null;
|
|
private static NovaAPIUtil instanceUtil = null;
|
|
private static String loginInfo = null;
|
|
private NovaAPIUtil() {
|
filePathConfig = SpringContextHolder.getBean(ProgramPathConfig.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));
|
|
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) {
|
searchVO.setStatusCode(code);
|
searchVO.setStatusData(data);
|
loginInfo = data;
|
System.out.println("\nViplexCore 搜索 code:" + code);
|
System.out.println("\nViplexCore 搜索 data:" + data);
|
countDownLatch1.countDown();
|
}
|
});
|
|
try {
|
countDownLatch1.await(10000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
// login("MZVA51930N2113017308");
|
}
|
|
public static NovaAPIUtil getInstanceUtil() {
|
if (instanceUtil == null) {
|
synchronized (NovaAPIUtil.class) {
|
if (instanceUtil == null) {
|
instanceUtil = new NovaAPIUtil();
|
}
|
}
|
}
|
return instanceUtil;
|
}
|
|
/**
|
* 登录
|
* loginType
|
* 0:登陆到屏体管理
|
* 1:登陆到系统设置(暗门登录)
|
* 2:登陆到诊断模块
|
* 3:LCT登录
|
* 5:公网SDK登录
|
*/
|
public StatusVO login(String sn, Integer loginType) {
|
|
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);
|
}
|
|
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);
|
|
CountDownLatch countDownLatch2 = new CountDownLatch(1);
|
instance.nvLoginAsync(loginParam, 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);
|
countDownLatch2.countDown();
|
}
|
|
});
|
try {
|
countDownLatch2.await();
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
if (statusVO.getStatusCode() != 0) {
|
System.out.println("ViplexCore " + sn + " nvLoginAsync(登录) 失败!");
|
System.out.println("错误码:" + statusVO.getStatusCode());
|
} else {
|
//登陆成功之后存入map保存登录信息
|
loginSn.put(sn, true);
|
}
|
return statusVO;
|
}
|
|
/**
|
* 创建节目
|
*/
|
public StatusVO createPro(ProWHVO proWHVO) throws InterruptedException {
|
String createProgram = JSON.toJSONString(proWHVO);
|
System.out.println("ViplexCore Demo nvCreateProgramAsync(创建节目) begin... ");
|
StatusVO statusVO = new StatusVO();
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
try {
|
instance.nvCreateProgramAsync(createProgram, 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);
|
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);
|
System.out.println("editProgram: " + JSON.toJSONString(programInfoVO));
|
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 pageInfo
|
* @return
|
*/
|
public StatusVO editPrograms(int pid, List<Map> pageInfo) {
|
ProgramsInfoVO programInfoVO = new ProgramsInfoVO();
|
programInfoVO.setProgramID(pid);
|
programInfoVO.setSceneItems(pageInfo);
|
System.out.println("ViplexCore Demo nvSetPageProgramAsync(编辑节目) begin... ");
|
StatusVO statusVO = new StatusVO();
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
System.out.println("editProgram: " + JSON.toJSONString(programInfoVO));
|
instance.nvSetPageProgramsAsync(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(pageInfo.getProgramMsg().getName());
|
//设置节目内容
|
TransfromProgramVO.SendProgramFilePathsDTO sendProgramFilePaths = new TransfromProgramVO.SendProgramFilePathsDTO();
|
//节目
|
sendProgramFilePaths.setProgramPath(filePathConfig.getOutPutPath() + "/program" + pageInfo.getProgramID());
|
//文件
|
sendProgramFilePaths.setMediasPath(pageInfo.getFileMap());
|
|
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);
|
CountDownLatch countDownLatch = new CountDownLatch(pageInfo.getSnList().size());
|
pageInfo.getSnList().forEach(sn -> {
|
|
if (transfromProgramVO == null) {
|
return;
|
}
|
transfromProgramVO.setSn(sn);
|
System.out.println(transfromProgramVO);
|
StatusVO login = login(sn, 0);
|
//推送结果
|
TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
|
trasfromStatusVO.setSn(sn);
|
if (login.getStatusCode() != 0) {
|
trasfromStatusVO.setStatusCode(login.getStatusCode());
|
trasfromStatusVO.setStatusData(login.getStatusData());
|
countDownLatch.countDown();
|
return;
|
}
|
System.out.println("program: " + JSON.toJSONString(transfromProgramVO));
|
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();
|
}
|
}
|
});
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return svoList;
|
}
|
|
|
/**
|
* 查询在线状态
|
*
|
* @return
|
*/
|
public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos, boolean onlineStatus) {
|
List<NewNovaLed> online = new ArrayList<>();
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaListBos.size());
|
//设置开关屏状态
|
newNovaListBos.forEach(led -> {
|
//获取信息之前先登录
|
StatusVO login = login(led.getSn(), 0);
|
if (login.getStatusCode() == 0) {
|
//登陆成功 设置为在线
|
led.setIsOnline(1);
|
led.setOnlineSign(1);
|
online.add(led);
|
} else {
|
led.setIsOnline(0);
|
}
|
countDownLatch.countDown();
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
if (onlineStatus) {
|
return online;
|
}
|
return newNovaListBos;
|
}
|
|
|
/**
|
* 查询屏幕基本信息
|
*/
|
|
public NewNovaLed getInfo(NewNovaLed led) {
|
System.out.println("ViplexCore Demo nvGetProductInfoAsync(获取屏幕信息) begin... ");
|
StatusVO login = login(led.getSn(), 0);
|
|
StatusVO result = new StatusVO();
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
if (login.getStatusCode() == 0) {
|
//推送结果
|
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();
|
}
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MICROSECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
} /*else {
|
throw new BusinessException("设备登录失败,经检查设备是否连接");
|
}*/
|
if (result.getStatusCode() == 0) {
|
NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class);
|
led.setInfo(newNovaInfoBo);
|
} /*else {
|
throw new BusinessException("设备登录失败,经检查设备是否连接");
|
}*/
|
return led;
|
}
|
|
|
/**
|
* 获取开关屏状态
|
*/
|
public List<NewNovaLed> getScreenPowerState(List<NewNovaLed> newNovaLsit) {
|
|
System.out.println("ViplexCore Demo nvGetScreenPowerStateAsync(获取屏幕开关) begin... ");
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
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();
|
}
|
});
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
|
return newNovaLsit;
|
}
|
|
|
/**
|
* 设置开关屏
|
*/
|
public boolean setPowerStatus(NewNovaStatusParam param) {
|
|
System.out.println("ViplexCore Demo nvSetScreenPowerStateAsync(设置屏幕开关) begin... ");
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
StatusVO login = login(param.getSn(), 0);
|
String status = "CLOSE";
|
if (param.getPowerStatus() == 1) {
|
status = "OPEN";
|
}
|
if (login.getStatusCode() == 0) {
|
String jsonStr = "{\n" +
|
" \"sn\":\"" + param.getSn() + "\",\n" +
|
" \"taskInfo\":{\n" +
|
" \"state\":\"" + status + "\"\n" +
|
" }\n" +
|
"}";
|
instance.nvSetScreenPowerStateAsync(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> getVolumeState(List<NewNovaLed> newNovaLsit) {
|
|
System.out.println("ViplexCore Demo nvGetVolumeAsync(获取音量) begin... ");
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
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();
|
}
|
});
|
});
|
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(), 0);
|
if (login.getStatusCode() == 0) {
|
String jsonStr = "{\n" +
|
" \"sn\":\"" + param.getSn() + "\",\n" +
|
" \"volumeInfo\":{\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... ");
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
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();
|
}
|
});
|
});
|
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(), 0);
|
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... ");
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
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) {
|
boolean enable = (boolean) JSON.parseObject(data, Map.class).get("enable");
|
if (enable) {
|
newNova.setSync(1);
|
}
|
} else {
|
newNova.setSync(-1);
|
}
|
countDownLatch.countDown();
|
}
|
});
|
|
});
|
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("同步设备不能为空 !");
|
}
|
CountDownLatch countDownLatch = new CountDownLatch(param.getNovaList().size());
|
param.getNovaList().forEach(newNova -> {
|
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
String str = "{\n" +
|
" \"sn\":\"" + newNova.getSn() + "\",\n" +
|
" \"enable\":" + param.isSync() + "\n" +
|
"}";
|
|
System.out.println("str : " + str);
|
//推送结果
|
instance.nvSetSyncPlayAsync(str, 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();
|
}
|
});
|
});
|
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("重启设备不能为空 !");
|
}
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
param.getNovaList().forEach(newNova -> {
|
logout(newNova.getSn(), 0);
|
StatusVO login = login(newNova.getSn(), 1);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
|
String rebootStr = "{\n" +
|
" \"sn\":\"" + newNova.getSn() + "\",\n" +
|
" \"taskInfo\":{\n" +
|
" \"type\":\"REBOOT\",\n" +
|
" \"source\":{\n" +
|
" \"type\":0,\n" +
|
" \"platform\":1\n" +
|
" },\n" +
|
" \"executionType\":\"IMMEDIATELY\",\n" +
|
" \"reason\":\"Just to test\",\n" +
|
" \"conditions\":[\n" +
|
" {\n" +
|
" \"cron\":[\n" +
|
" \"0 15 10 ? * *\",\n" +
|
" \"0 0 12 * * ?\"\n" +
|
" ],\n" +
|
" \"enable\":false\n" +
|
" }\n" +
|
" ]\n" +
|
" }\n" +
|
"}";
|
System.out.println("rebootStr : " + rebootStr);
|
//推送结果
|
instance.nvSetReBootTaskAsync(rebootStr, 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);
|
loginSn.remove(newNova.getSn());
|
}
|
countDownLatch.countDown();
|
}
|
});
|
// StatusVO logout = logout(newNova.getSn(), 1);
|
// if (logout.getStatusCode() == 0) {
|
// login(newNova.getSn(), 0);
|
// }
|
}
|
);
|
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("对时设备不能为空 !");
|
}
|
CountDownLatch countDownLatch = new CountDownLatch(param.getNovaList().size());
|
param.getNovaList().forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
String ntpStr = "{\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://ntp1.aliyun.com\"\n" +
|
" }\n" +
|
" }\n" +
|
" ]\n" +
|
" }\n" +
|
"}";
|
System.out.println("ntpStr" + ntpStr);
|
|
//推送结果
|
instance.nvSetNetTimingInfoAsync(ntpStr, new ViplexCore.CallBack() {
|
@Override
|
public void dataCallBack(int code, String data) {
|
|
System.out.println("\nViplexCore ntp code:" + code);
|
System.out.println("\n时间 ntp :" + DateTime.now());
|
System.out.println("\nViplexCore ntp data:" + data);
|
if (code == 0 && data.contains("\"status\":1")) {
|
System.out.println("results: " + data.contains("\"status\":1"));
|
newNova.setStatus(true);
|
}
|
countDownLatch.countDown();
|
}
|
});
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return param.getNovaList();
|
}
|
|
|
/**
|
* 截屏
|
*/
|
public List<NewNovaStatusParam.NovascreenShotDTO> screenShot(NewNovaStatusParam param) {
|
|
System.out.println("ViplexCore Demo nvDownLoadScreenshotAsync(截屏) begin... ");
|
NovaFileConfig config = SpringContextHolder.getBean(NovaFileConfig.class);
|
String shotPath = config.getScreenShotPath();
|
for(NewNovaStatusParam.NovascreenShotDTO newNova:param.getScreenShotList()){
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
continue;
|
}
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
String pictureName = newNova.getSn() + ".png";
|
String str = "{\n" +
|
" \"sn\":\"" + newNova.getSn() + "\",\n" +
|
" \"width\":400,\n" +
|
" \"height\":400,\n" +
|
" \"downLoadDirectoryPath\":\"" + shotPath.replace(File.separator, "/") + "\",\n" +
|
" \"pictureName\":\"" + pictureName + "\",\n" +
|
" \"pictureType\":0\n" +
|
"}";
|
System.out.println("str" + str);
|
//推送结果
|
instance.nvDownLoadScreenshotAsync(str, new ViplexCore.CallBack() {
|
@Override
|
public void dataCallBack(int code, String data) {
|
|
System.out.println("\nViplexCore 截屏 code:" + code);
|
System.out.println("\nViplexCore 截屏 data:" + data);
|
newNova.setCode(code);
|
if (code == 0) {
|
String img = config.getScreenShotPath() + pictureName;
|
newNova.setScreenShot(config.getFileUrl() + img.replace(config.getUploadRootPath(), "").replace(File.separator, "/"));
|
} else {
|
newNova.setScreenShot(data);
|
}
|
countDownLatch.countDown();
|
}
|
});
|
//等待設備回調信息
|
try {
|
countDownLatch.await(5000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException ex) {
|
throw new RuntimeException(ex);
|
}
|
}
|
return param.getScreenShotList();
|
}
|
|
|
/**
|
* 获取屏幕尺寸
|
*/
|
public List<NewNovaLed> getDisplayInfoAsync(List<NewNovaLed> newNovaLsit) {
|
|
System.out.println("ViplexCore Demo nvGetDisplayInfoAsync(获取分辨率) begin... ");
|
//PlayerInfoVO
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
instance.nvGetDisplayInfoAsync("{\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) {
|
PlayerInfoVO playerInfoVO = JSON.parseObject(data, PlayerInfoVO.class);
|
PlayerInfoVO.TaskArrayDTO.DataDTO dataDTO = playerInfoVO.getTaskArray().get(0).getData();
|
newNova.setWidth(dataDTO.getWidth());
|
newNova.setHeight(dataDTO.getHeight());
|
newNova.setRotation(dataDTO.getRotation());
|
}
|
countDownLatch.countDown();
|
}
|
});
|
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return newNovaLsit;
|
|
}
|
|
|
/**
|
* 获取视频源
|
*/
|
public List<NewNovaLed> getVideoInfoAsync(List<NewNovaLed> newNovaLsit) {
|
|
System.out.println("ViplexCore Demo nvGetVideoControlInfoAsync(获取视频源) begin... ");
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
instance.nvGetVideoControlInfoAsync("{\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) {
|
VideoInfoVO videoInfoVO = JSON.parseObject(data, VideoInfoVO.class);
|
newNova.setVideoControlInfo(videoInfoVO.getVideoSource());
|
}
|
countDownLatch.countDown();
|
}
|
});
|
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return newNovaLsit;
|
}
|
|
/**
|
* 获取时区
|
*/
|
public List<NewNovaLed> getTimezone(List<NewNovaLed> newNovaLsit) {
|
|
System.out.println("ViplexCore Demo nvGetCurrentTimeAndZoneAsync(获取时区) begin... ");
|
|
CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
|
newNovaLsit.forEach(newNova -> {
|
StatusVO login = login(newNova.getSn(), 0);
|
if (login.getStatusCode() != 0) {
|
countDownLatch.countDown();
|
return;
|
}
|
//推送结果
|
instance.nvGetCurrentTimeAndZoneAsync("{\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) {
|
Map map = JSON.parseObject(data, Map.class);
|
newNova.setTimeZone(map.get("timeZone").toString());
|
newNova.setCurrentTime(map.get("currentTime").toString());
|
}
|
countDownLatch.countDown();
|
}
|
});
|
|
});
|
try {
|
countDownLatch.await(30000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return newNovaLsit;
|
}
|
|
|
/**
|
* 退出登录
|
*/
|
public StatusVO logout(String sn, Integer type) {
|
|
System.out.println("ViplexCore Demo nvLogoutAsync(退出登录) begin... ");
|
CountDownLatch countDownLatch = new CountDownLatch(1);
|
|
StatusVO logout = new StatusVO();
|
//推送结果
|
instance.nvLogoutAsync("{\n" +
|
" \"sn\":\"" + sn + "\",\n" +
|
" \"loginType\":" + type + "\n" +
|
"}", new ViplexCore.CallBack() {
|
@Override
|
public void dataCallBack(int code, String data) {
|
|
System.out.println("\nViplexCore 退出登录 code:" + code);
|
System.out.println("\nViplexCore 退出登录 data:" + data);
|
logout.setStatusCode(code);
|
logout.setStatusData(data);
|
countDownLatch.countDown();
|
}
|
});
|
|
try {
|
countDownLatch.await(10000, TimeUnit.MILLISECONDS);
|
} catch (InterruptedException e) {
|
throw new RuntimeException(e);
|
}
|
return logout;
|
}
|
}
|