2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-07-22 3075910e10bb60fa2775afb4dbad8d5dba488abb
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java
@@ -3,16 +3,14 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.gson.Gson;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.file.FileUploadDto;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.config.RealtimeServerBean;
import com.sandu.ximon.admin.entity.*;
import com.sandu.ximon.admin.param.PoleBindingParam;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.FileUtil;
import com.sandu.ximon.admin.utils.HtmlTemplateUtils;
import com.sandu.ximon.admin.utils.LightemitUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.admin.utils.*;
import com.sandu.ximon.admin.vo.EquipmentInfomation;
import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.domain.PoleLightemitEntity;
@@ -225,12 +223,13 @@
        }
        PoleLightemitEntity xiXun = getOne(Wrappers.lambdaQuery(PoleLightemitEntity.class).eq(PoleLightemitEntity::getLightemitControlCode, lightControlCode));
        boolean isScreenOpen = false;
        if (xiXun != null) {
            equipmentInfo.setEquipmentCreateTime(xiXun.getCreateTime());
            equipmentInfo.setEquipmentMac(xiXun.getLightemitControlCode());
            equipmentInfo.setEquipmentName(xiXun.getLightemitName());
            isScreenOpen = lightemitUtils.getLedOnLine(xiXun.getLightemitControlCode());
        }
        boolean isScreenOpen = lightemitUtils.getLedOnLine(xiXun.getLightemitControlCode());
        if (isScreenOpen) {
            equipmentInfo.setEquipmentState("在线");
        } else {
@@ -273,9 +272,11 @@
            throw new BusinessException("未找到LED屏");
        }
        boolean belong = SpringContextHolder.getBean(PoleBindingService.class).isBelong(byId.getLightemitControlCode(), PoleBindingEnums.XIXUN);
        if (!belong) {
            throw new BusinessException("该设备不属于您,不能修改设备信息");
        if (SecurityUtils.getClientId() != null) {
            boolean belong = SpringContextHolder.getBean(PoleBindingService.class).isBelong(byId.getLightemitControlCode(), PoleBindingEnums.XIXUN);
            if (!belong) {
                throw new BusinessException("该设备不属于您,不能修改设备信息");
            }
        }
        poleLightemit.setLightemitId(ledId);
        boolean b = this.updateById(poleLightemit);
@@ -391,28 +392,26 @@
     * led上传视频
     *
     * @param lightemitControlCode
     * @param filename
     * @param path
     * @param userName
     * @throws IOException
     */
    @Async("taskExecutor")
    public void videoUpload(String lightemitControlCode, String filename, String path, String userName) throws IOException {
    public String videoUpload(String lightemitControlCode, FileUploadDto fileUploadDto, Integer type) {
        //获取屏幕宽
        String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
        String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
        //发送视频至开发板并播放
        lightemitUtils.postVideo(screenWidth, screenHeight, filename, lightemitControlCode);
        String fileUrl = fileUploadDto.getFileUrl();
        String[] split = fileUrl.split("/");
        String id = split[split.length - 1];
        String result = this.videoXixunPlayer(lightemitControlCode, id, fileUploadDto.getFileSize(), fileUploadDto.getMd5(), type, fileUploadDto.getFileType(), 999999);
        //清屏
        lightemitUtils.clear(lightemitControlCode);
        LogUtils.error("上传播放结果:" + result);
        return result;
    }
    @Async("taskExecutor")
    public void videoXixunPlayer(String lightemitControlCode, String ip, String filename, Long filesize, Integer videoTime) {
    public String videoXixunPlayer(String lightemitControlCode, String filename, Long filesize, String md5, Integer type, String fileType, Integer videoTime) {
        //获取屏幕宽
        Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
        Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
@@ -427,18 +426,23 @@
        source.set_id(UUID.randomUUID().toString());
        //请求头拼接该ID为该资源的完整下载地址
        source.setId(filename);
        //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档
        source.set_type("Video");
        if (type == 1) {
            //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档
            source.set_type("Video");
            source.setMime("video/mp4");
        } else {
            source.set_type("Image");
            source.setMime("image/jpeg");
        }
        //资源后缀名
        source.setFileExt(".mp4");
        source.setFileExt(fileType);
        //资源高度
        source.setHeight(screenHeight);
        //资源宽度
        source.setWidth(screenWidth);
        //距左
        source.setLeft(0);
        source.setMd5("dd135d5d2d44d619a542db773ab529a4");
        source.setMime("video/mp4");
        source.setMd5(md5);
        source.setName(filename);
        source.setPlayTime(0);    //播放起始时间
        source.setSize(filesize);    //资源字节数,要精准
@@ -452,7 +456,7 @@
        List<Layer> list1 = new ArrayList<Layer>();
        list1.add(layer);
        pro.setLayers(list1);
        pro.setName("demo");    //节目名称
        pro.setName("文件上传播放");    //节目名称
        pro.setOthers(true);//如果为true,则该节目来自第三方接口,不是来自我们自己的web,二次开发请务必赋值为true
        pro.setTotalSize(filesize);    //所有资源总字节数
        pro.setVersion(0);            //高级节目=0,简易节目=2
@@ -468,17 +472,29 @@
        task.setItems(list2);
        command.setId(UUID.randomUUID().toString());
        //这里是下方的post回调地址,需要修改IP地址
        command.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
        command.setNotificationURL("");
        //资源下载链接的请求头
        command.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
        command.setPreDownloadURL("https://ximonsmart.oss-cn-shanghai.aliyuncs.com/");
        command.setTask(task);
        xixun.set_id(UUID.randomUUID().toString());
        xixun.setCommand(command);
        xixun.setType("commandXixunPlayer");    //命令固定类型,不可更改
        String jsondata = new Gson().toJson(xixun);
        lightemitUtils.clear(lightemitControlCode);
        poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata);
        lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata);
        String clearResult = lightemitUtils.clear(lightemitControlCode);
        if (clearResult.contains("does not exist")) {
            return "推送失败";
        } else {
            poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata);
            String post = lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata);
            LogUtils.error("结果:" + post);
            //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535}
            if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) {
                return "推送成功";
            } else {
                return "推送失败";
            }
        }
    }
    /**
@@ -490,16 +506,6 @@
    public void updateRequestBody(String ledCode, String postBody) {
        baseMapper.updateRequestBody(ledCode, postBody);
    }
//    /**
//     * 根据led屏编码获取灯杆所有信息
//     *
//     * @param ledCode
//     * @return
//     */
//    public PoleStreetlightEntity getStreetlightByLedCode(String ledCode) {
//        return baseMapper.getStreetlightByLedCode(ledCode);
//    }
    /**