2021与蓝度共同重构项目,服务端
liuhaonan
2022-08-19 d44a97ad0162dd0de1619ac1b568f25b003a956e
ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
@@ -1,5 +1,6 @@
package com.sandu.ximon.admin.service;
import cn.hutool.core.collection.CollectionUtil;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.config.VnnoxConstant;
@@ -18,6 +19,7 @@
import com.sandu.ximon.admin.utils.response.VnnoxPlayerResponse;
import com.sandu.ximon.admin.utils.response.VnnoxResult;
import com.sandu.ximon.admin.vo.NovaPushResultVO;
import com.sandu.ximon.admin.vo.NovaScreenShorUrlVO;
import com.sandu.ximon.dao.domain.LedPlayerEntity;
import com.sandu.ximon.dao.domain.LedPlayerInfoEntity;
import com.sandu.ximon.dao.domain.LedV2RegisterResultEntity;
@@ -27,6 +29,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.net.URISyntaxException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -286,49 +289,56 @@
    // 批量截屏
    public Map<String, String> getScreenShotUrl(List<String>  playerIds) {
        Map<String, String> map = new HashMap();
    public List<NovaScreenShorUrlVO> getScreenShotUrl(List<NovaPushResultVO> playerIds) {
        List<NovaScreenShorUrlVO> screenShorUrlList = new ArrayList<>();
    playerIds.forEach(
            playId->{
                try {
                    redisUtils.delete(VnnoxConstant.REDIS_SCREEN_SHOT + playId);
                } catch (Exception e) {
        //从playerIds中获取playerId
        List<String> AllplayerIdsList = playerIds.stream().map(item -> item.getPlayerId()).collect(Collectors.toList());
        List<List<String>> split = CollectionUtil.split(AllplayerIdsList, 100);
        for (List<String> playerIdsList : split) {
            VnnoxResult vnnoxResult = vnnoxAPIUtil.screenShot(playerIdsList);
            LocalDateTime now = LocalDateTime.now();
            NovaScreenShorUrlVO screenShorUrlVO;
            for (String successStrId : vnnoxResult.getSuccess()) {
                screenShorUrlVO = new NovaScreenShorUrlVO();
                String url = null;
                int num = 0;
                while (num < 3) {
                    url = redisUtils.get(VnnoxConstant.REDIS_SCREEN_SHOT + successStrId);
                    if (url != null) {
                        break;
                    } else {
                        num++;
                    }
                }
                screenShorUrlVO.setShortUrl(url);
                screenShorUrlVO.setPlayerId(successStrId);
                screenShorUrlVO.setTime(now);
                for (NovaPushResultVO bean : playerIds) {
                    if (bean.getPlayerId().equals(successStrId)) {
                        screenShorUrlVO.setName(bean.getName());
                        break;
                    }
                }
                screenShorUrlList.add(screenShorUrlVO);
            }
    );
            for (String failStrId : vnnoxResult.getFail()) {
                screenShorUrlVO = new NovaScreenShorUrlVO();
        VnnoxResult vnnoxResult = vnnoxAPIUtil.screenShot(playerIds);
        if (null == vnnoxResult) {
            map.put("code", "500");
            map.put("msg", "设备已下线");
            return map;
        }
        if (vnnoxResult.getSuccess().size() == 0) {
            map.put("code", "500");
            map.put("msg", "获取缩略图失败!");
            return map;
        }
        String url = null;
        Integer checkCount = 0;
        while (checkCount < 10) {
            url = redisUtils.get(VnnoxConstant.REDIS_SCREEN_SHOT + playerIds.get(0));
            if (null != url) {
                break;
            }
            try {
                Thread.sleep(2000);
                checkCount = checkCount + 1;
            } catch (InterruptedException e) {
                e.printStackTrace();
                String url = null;
                screenShorUrlVO.setShortUrl(url);
                screenShorUrlVO.setPlayerId(failStrId);
                screenShorUrlVO.setTime(now);
                for (NovaPushResultVO bean : playerIds) {
                    if (bean.getPlayerId().equals(failStrId)) {
                        screenShorUrlVO.setName(bean.getName());
                        break;
                    }
                }
                screenShorUrlList.add(screenShorUrlVO);
            }
        }
        map.put("url", url);
        map.put("code", "200");
        return map;
        return screenShorUrlList;
    }
@@ -560,7 +570,7 @@
    private List<PlayerWidget> generateWaterAndSensorWidget(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage poleSensorEntity) {
        //TODO
        List widgetList = new ArrayList<>();
        List<String> list = new ArrayList<>();
        if (Objects.nonNull(poleSensorEntity)) {