2021与蓝度共同重构项目,服务端
liuhaonan
2022-08-19 d44a97ad0162dd0de1619ac1b568f25b003a956e
changes
已修改6个文件
已添加1个文件
154 ■■■■■ 文件已修改
dao/src/main/resources/mapper/LedPlayerEntityMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/VnnoxController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxAPIUtil.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/response/VnnoxResult.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaScreenShorUrlVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LedPlayerEntityMapper.xml
@@ -26,7 +26,7 @@
    <select id="ledPlayerEntityList" resultType="com.sandu.ximon.dao.domain.LedPlayerEntity">
        SELECT
        t1.*, t2.pole_id,
        t3.pole_name, t3.id
        t3.pole_name
        FROM
        led t1
        LEFT JOIN pole_binding t2 ON t1.sn = t2.device_code
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/VnnoxController.java
@@ -58,6 +58,12 @@
        return ResponseUtil.success(map.get("url"));
    }
    @PostMapping("/allScreenShot")
    public ResponseVO<Object> allScreenShot(@RequestBody List<NovaPushResultVO> vnnoxWebRequest) {
        return ResponseUtil.success(vnnoxService.getScreenShotUrl(vnnoxWebRequest));
    }
    /**
     * é‡å¯
     *
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
@@ -349,7 +349,9 @@
        List<LightTaskPoleRelation> all = new ArrayList<>();
        all.addAll(newPoleSuccess);
        all.addAll(oldPoleFail);
//        all.addAll(closePoleFail);
        all.addAll(oldPoleSuccess);
        all.addAll(oldPoleFail);
        all.addAll(closePoleFail);
        List<Long> allPoleId = new ArrayList<>();
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) {
                }
            }
    );
        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;
        }
        //从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;
        Integer checkCount = 0;
        while (checkCount < 10) {
            url = redisUtils.get(VnnoxConstant.REDIS_SCREEN_SHOT + playerIds.get(0));
            if (null != url) {
                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;
            }
            try {
                Thread.sleep(2000);
                checkCount = checkCount + 1;
            } catch (InterruptedException e) {
                e.printStackTrace();
                }
                screenShorUrlList.add(screenShorUrlVO);
            }
            for (String failStrId : vnnoxResult.getFail()) {
                screenShorUrlVO = new NovaScreenShorUrlVO();
                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;
            }
        }
        map.put("url", url);
        map.put("code", "200");
        return map;
                screenShorUrlList.add(screenShorUrlVO);
            }
        }
        return screenShorUrlList;
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxAPIUtil.java
@@ -1,6 +1,7 @@
package com.sandu.ximon.admin.utils;
import com.alibaba.fastjson.JSON;
import com.sandu.common.execption.BusinessException;
import com.sandu.ximon.admin.config.VnnoxConstant;
import com.sandu.ximon.admin.config.VnnoxUrl;
import com.sandu.ximon.admin.utils.request.*;
@@ -12,10 +13,7 @@
import org.springframework.stereotype.Component;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Component("VnnoxAPIUtil")
@AllArgsConstructor
@@ -206,8 +204,6 @@
    }
    /**
     * æ‰¹é‡å±å¹•截图
     *
@@ -224,9 +220,28 @@
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        //TODO
        System.out.println("result+     " + result);
//        result+     {"logid":1660889486514,"status":2,"errmsg":"playerIds must be array and is not empty"}
//        {"logid":1660889534521,"status":0,"data":{"success":["f788af56421f3e8e8da39a63238fd212"],"fail":[]}}
        if (result.startsWith("{") && result.endsWith("}")) {
            VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
            if (response.getStatus() == 0) {
        return response.getData();
            } else {
                System.out.println(response.getErrmsg());
                VnnoxResult vnnoxResult = new VnnoxResult();
                vnnoxResult.getFail().addAll(players);
                return vnnoxResult;
            }
        } else {
            System.out.println("数据解析异常!");
            VnnoxResult vnnoxResult = new VnnoxResult();
            vnnoxResult.getFail().addAll(players);
            return vnnoxResult;
        }
    }
    /**
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/response/VnnoxResult.java
@@ -1,14 +1,18 @@
package com.sandu.ximon.admin.utils.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
@Data
public class VnnoxResult {
    private List<String> success;
    private List<String> success = new ArrayList<>();
    private List<String> fail;
    private List<String> fail = new ArrayList<>();
}
ximon-admin/src/main/java/com/sandu/ximon/admin/vo/NovaScreenShorUrlVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.sandu.ximon.admin.vo;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author LiuHaoNan
 * @date 2022/8/19
 */
@Data
public class NovaScreenShorUrlVO {
    private String shortUrl;
    private String name;
    private String playerId;
    private LocalDateTime time;
}