2021与蓝度共同重构项目,服务端
liuhaonan
2022-11-21 cbffadc9c547b1fd45e0dcb22a9ec81d5813bc21
changes
已修改6个文件
1003 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java 893 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/resources/application-local.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
@@ -104,4 +104,40 @@
    @TableField(exist = false)
    private Integer sync = 0;
    /**
     * 屏幕宽
     */
    @TableField(exist = false)
    private Integer width = -1;
    /**
     * 屏幕高
     */
    @TableField(exist = false)
    private Integer height = -1;
    /**
     * 旋转的角度值仅仅支持:0,90,180,270
     */
    @TableField(exist = false)
    private Integer rotation = -1;
    /**
     * 时区
     */
    @TableField(exist = false)
    private String timeZone = "获取失败";
    /**
     * 时间
     */
    @TableField(exist = false)
    private String currentTime = "获取失败";
    /**
     * 视频源  获取失败-1
     */
    @TableField(exist = false)
    private Integer videoControlInfo = -1;
}
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
@@ -128,18 +128,24 @@
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, groupId, SecurityUtils.getClientId());
        //获取在线状态
        instanceUtil.getOnlineStatus(newNovaListBos, onlineStatus);
        List<NewNovaLed> onLine = instanceUtil.getOnlineStatus(newNovaListBos, onlineStatus);
        //获取屏幕开关
        instanceUtil.getScreenPowerState(newNovaListBos);
        instanceUtil.getScreenPowerState(onLine);
        //获取音量
        instanceUtil.getVolumeState(newNovaListBos);
        instanceUtil.getVolumeState(onLine);
        //获取亮度
        instanceUtil.getScreenBrightness(newNovaListBos);
        instanceUtil.getScreenBrightness(onLine);
        //获取同步状态
        instanceUtil.getSync(newNovaListBos);
        instanceUtil.getSync(onLine);
        //获取分辨率
        instanceUtil.getDisplayInfoAsync(onLine);
        //获取时区
        instanceUtil.getTimezone(onLine);
        //获取视频源
        instanceUtil.getVideoInfoAsync(onLine);
        updateBatchById(newNovaListBos);
        return newNovaListBos;
        updateBatchById(onLine);
        return onLine;
    }
    public NewNovaLed getInfo(Long ledId) {
@@ -169,6 +175,13 @@
        instanceUtil.getSync(list);
        //获取详情
        instanceUtil.getInfo(byId);
        //获取分辨率
        instanceUtil.getDisplayInfoAsync(list);
        //获取时区
        instanceUtil.getTimezone(list);
        //获取视频源
        instanceUtil.getVideoInfoAsync(list);
        return list.get(0);
    }
@@ -205,7 +218,7 @@
        A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(nova.getPoleId());
        //解析大气数据
        Map pageInfo = parseData(data, duration,fontSize);
        Map pageInfo = parseData(data, duration, fontSize);
        ProgramPrarm page = new ProgramPrarm();
        page.setPageInfo(pageInfo);
        page.setInsertPlay(true);
@@ -216,11 +229,11 @@
        page.setProgramID(pid);
        StatusVO editPro = apiUtil.editProgram(pid, pageInfo);
        if(editPro.getStatusCode()!=0){
        if (editPro.getStatusCode() != 0) {
            throw new BusinessException(editPro.getStatusData());
        }
        StatusVO genVO = apiUtil.genrateProgram(pid);
        if(genVO.getStatusCode()!=0){
        if (genVO.getStatusCode() != 0) {
            throw new BusinessException(genVO.getStatusData());
        }
        page.setProgramID(Integer.valueOf(createPro.getStatusData()));
@@ -249,7 +262,7 @@
    private Map parseData(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data, Long duration, Long fontSize) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z+8:00'");
        Date end = new Date();
        end.setTime(end.getTime()+duration);
        end.setTime(end.getTime() + duration);
        String str = "{\n" +
                "        \"name\": \"大气监测\",\n" +
                "        \"widgetContainers\": [\n" +
@@ -352,7 +365,7 @@
                "                                                        \"Helvetica\"\n" +
                "                                                    ],\n" +
                "                                                    \"isUnderline\": false,\n" +
                "                                                    \"size\": "+fontSize+",\n" +
                "                                                    \"size\": " + fontSize + ",\n" +
                "                                                    \"style\": \"NORMAL\"\n" +
                "                                                },\n" +
                "                                                \"letterSpacing\": 0,\n" +
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramController.java
@@ -81,7 +81,7 @@
     * @param id
     * @return
     */
    @PostMapping("/programInfo")
    @GetMapping("/programInfo")
    public ResponseVO<Object> programInfo(@RequestParam(value = "id", required = true) Long id) {
        if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_INFO.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramService.java
@@ -95,11 +95,11 @@
        checkProgram(genrateProgram);
        //发布节目
        List<TrasfromStatusVO> trasfromStatusVOS = new ArrayList<>();
        if (!programPrarm.getSnList().isEmpty()) {
        if (programPrarm.getFileIds().size() > 0) {
            Map<String, String> proFile = getProFile(programPrarm);
            programPrarm.setFileMap(proFile);
            trasfromStatusVOS = instanceUtil.trasfromProgram(programPrarm);
        }
        trasfromStatusVOS = instanceUtil.trasfromProgram(programPrarm);
        newNovaProgram.setUserId(SecurityUtils.getUserId());
        saveOrUpdate(newNovaProgram);
        fileRelationService.saveRelation(newNovaProgram.getId(), programPrarm.getFileIds());
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
@@ -101,7 +101,7 @@
            throw new RuntimeException(e);
        }
        if (loginSn.get(sn) != null && loginSn.get(sn)) {
        if (loginSn.get(sn) != null && loginSn.get(sn) && loginType == 0) {
            return new StatusVO(0);
        }
        if (loginInfo == null) {
@@ -250,7 +250,6 @@
    }
    /**
     * 生成节目
     *
@@ -299,9 +298,6 @@
        //节目
        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);
        sendProgramFilePaths.setMediasPath(pageInfo.getFileMap());
        transfromProgramVO.setSendProgramFilePaths(sendProgramFilePaths);
@@ -313,68 +309,53 @@
        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);
        CountDownLatch countDownLatch = new CountDownLatch(pageInfo.getSnList().size());
        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);
                    StatusVO login = login(sn, 0);
                    //推送结果
                    TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
                    trasfromStatusVO.setSn(sn);
                    if (login.getStatusCode() != 0) {
                        trasfromStatusVO.setStatusCode(login.getStatusCode());
                        trasfromStatusVO.setStatusData(login.getStatusData());
                        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();
                            }
                        }
                    });
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            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;
    }
    /**
@@ -384,31 +365,26 @@
     */
    public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos, boolean onlineStatus) {
        List<NewNovaLed> online = new ArrayList<>();
        CountDownLatch countDownLatch = new CountDownLatch(newNovaListBos.size());
        //设置开关屏状态
        newNovaListBos.forEach(led -> {
            //获取信息之前先登录
            CountDownLatch countDownLatch = new CountDownLatch(1);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    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();
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            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;
        }
@@ -425,40 +401,37 @@
        StatusVO login = login(led.getSn(), 0);
        StatusVO result = new StatusVO();
        CountDownLatch countDownLatch = new CountDownLatch(1);
        if (login.getStatusCode() == 0) {
            CountDownLatch countDownLatch = new CountDownLatch(1);
            new Thread(new Runnable() {
            //推送结果
            TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
            trasfromStatusVO.setSn(led.getSn());
            instance.nvGetProductInfoAsync("{\n" +
                    "  \"sn\":\"" + led.getSn() + "\"\n" +
                    "}", new ViplexCore.CallBack() {
                @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();
                        }
                    });
                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 {
        } /*else {
            throw new BusinessException("设备登录失败,经检查设备是否连接");
        }
        NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class);
        led.setInfo(newNovaInfoBo);
        }*/
        if (result.getStatusCode() == 0) {
            NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class);
            led.setInfo(newNovaInfoBo);
        } /*else {
            throw new BusinessException("设备登录失败,经检查设备是否连接");
        }*/
        return led;
    }
@@ -470,35 +443,34 @@
        System.out.println("ViplexCore Demo nvGetScreenPowerStateAsync(获取屏幕开关) begin... ");
        CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
        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);
            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;
    }
@@ -556,35 +528,34 @@
        System.out.println("ViplexCore Demo nvGetVolumeAsync(获取音量) begin... ");
        CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
        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);
            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;
    }
@@ -639,35 +610,34 @@
        System.out.println("ViplexCore Demo nvGetScreenBrightnessAsync(获取亮度) begin... ");
        CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
        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);
            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;
    }
@@ -719,41 +689,40 @@
        System.out.println("ViplexCore Demo nvGetSyncPlayAsync(获取同步) begin... ");
        CountDownLatch countDownLatch = new CountDownLatch(newNovaLsit.size());
        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) {
                                boolean enable = (boolean) JSON.parseObject(data, Map.class).get("enable");
                                if (enable) {
                                    newNova.setSync(1);
                                }
                            } else {
                                newNova.setSync(-1);
                            }
                            countDownLatch.countDown();
                        }
                    });
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            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;
    }
@@ -767,40 +736,39 @@
        if (param.getNovaList() == null || param.getNovaList().size() == 0) {
            throw new BusinessException("同步设备不能为空 !");
        }
        CountDownLatch countDownLatch = new CountDownLatch(param.getNovaList().size());
        param.getNovaList().forEach(newNova -> {
            CountDownLatch countDownLatch = new CountDownLatch(1);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    login(newNova.getSn(), 0);
                    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();
                        }
                    });
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            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();
    }
@@ -814,60 +782,61 @@
        if (param.getNovaList() == null || param.getNovaList().size() == 0) {
            throw new BusinessException("重启设备不能为空 !");
        }
        CountDownLatch countDownLatch = new CountDownLatch(1);
        param.getNovaList().forEach(newNova -> {
                    CountDownLatch countDownLatch = new CountDownLatch(1);
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            StatusVO login = login(newNova.getSn(), 1);
                            if (login.getStatusCode() != 0) {
                                countDownLatch.countDown();
                                return;
                            }
                            //推送结果
                            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);
                    logout(newNova.getSn(), 0);
                    StatusVO login = login(newNova.getSn(), 1);
                    if (login.getStatusCode() != 0) {
                        countDownLatch.countDown();
                        return;
                    }
                    login(newNova.getSn(), 0);
                    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);
                            }
                            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();
    }
@@ -882,59 +851,55 @@
        if (param.getNovaList() == null || param.getNovaList().size() == 0) {
            throw new BusinessException("对时设备不能为空 !");
        }
        CountDownLatch countDownLatch = new CountDownLatch(param.getNovaList().size());
        param.getNovaList().forEach(newNova -> {
            CountDownLatch countDownLatch = new CountDownLatch(1);
            new Thread(new Runnable() {
                @Override
                public void run() {
//                    login(newNova.getSn(), 0);
                    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();
                        }
                    });
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            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\":\"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(20000, TimeUnit.MILLISECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return param.getNovaList();
    }
@@ -947,52 +912,210 @@
        System.out.println("ViplexCore Demo nvDownLoadScreenshotAsync(截屏) begin... ");
        NovaFileConfig config = SpringContextHolder.getBean(NovaFileConfig.class);
        String shotPath = config.getScreenShotPath();
        CountDownLatch countDownLatch = new CountDownLatch(param.getScreenShotList().size());
        param.getScreenShotList().forEach(newNova -> {
            CountDownLatch countDownLatch = new CountDownLatch(1);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    login(newNova.getSn(), 0);
                    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();
                        }
                    });
                }
            }).start();
            try {
                countDownLatch.await(30000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            StatusVO login = login(newNova.getSn(), 0);
            if (login.getStatusCode() != 0) {
                countDownLatch.countDown();
                return;
            }
            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(30000, TimeUnit.MILLISECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        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;
    }
}
ximon-admin/src/main/resources/application-local.yml
@@ -95,6 +95,33 @@
    upload-root-path: E:\file\
    storage: local
    #服务器文件前缀
    file-url: http://183.45.76.239:8089/file/
    file-url: http://183.45.76.137:8089/file/
    #诺瓦截屏存放路径   文件夹必须存在  且是服务器文件路径(upload-root-path)下的子文件夹
    screen-shot-path: E:\file\screenShot\
    screen-shot-path: E:\file\screenShot\
customer:
  mqtt:
    broker: tcp://127.0.0.1:1883
    clientList:
      #客户端ID
      - clientId: java_server_msg
        #监听主题
        subscribeTopic: v1/devices/response/+
        #用户名
        userName: server_admin
        #密码
        password: zhxm2512209
        #下发主题
        publishTopic: v1/devices/request/
      #监听上下线
      - clientId: java_server_status
        #监听主题
        subscribeTopic: $SYS/brokers/+/clients/#
        #用户名
        userName: server_admin
        #密码
        password: zhxm2512209
        #下发主题
        publishTopic: v1/devices/request/