Bläddra i källkod

Merge branch 'test' into feature-v4.3.0-20220825

dengsixing 2 år sedan
förälder
incheckning
8e1ca6549f

+ 5 - 0
4dkankan-center-scene-download/src/main/java/com/fdkankan/download/service/impl/SceneDownloadHandlerServiceImpl.java

@@ -250,6 +250,7 @@ public class SceneDownloadHandlerServiceImpl {
             // TODO: 2022/5/24 v3 停止后要开启-----------------------end
 
         }catch (Exception e){
+            log.error("下载失败,num={}", num);
             //更新进度为下载失败
             this.updateProgress( null, num, SceneDownloadProgressStatus.DOWNLOAD_FAILED.code(), null);
             //更新下载log状态为成功
@@ -490,6 +491,7 @@ public class SceneDownloadHandlerServiceImpl {
                 precent = new BigDecimal("100");
                 break;
             case DOWNLOAD_FAILED:
+                log.info("失败了啊-------------------------------");
                 precent = new BigDecimal("0");
                 break;
             default:
@@ -528,6 +530,9 @@ public class SceneDownloadHandlerServiceImpl {
     }
 
     public synchronized void zipBytes(ZipOutputStream out, String key, byte[] bytes) throws Exception {
+        if(Objects.isNull(bytes)){
+            log.error("获取oss字节数组为空,key={}",key);
+        }
         out.putNextEntry(new org.apache.tools.zip.ZipEntry(key));
         out.write(bytes);
     }

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneProV3.java

@@ -224,5 +224,7 @@ public class SceneProV3 implements Serializable {
     @TableLogic
     private Integer tbStatus;
 
+    private Integer isUpgrade;
+
 
 }

+ 15 - 10
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -644,7 +644,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         }
         // TODO: 2022/5/19 请求v3的接口,获取场景的状态 待v3停机后要换成v4d的逻辑-------------------------send
 
-//        ScenePro scenePro = sceneProService.findBySceneNum(num);
         ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
@@ -656,10 +655,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         //先查询redis
         if(StrUtil.isNotEmpty(sceneJson)) {
             sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class);
-            // TODO: 2022/4/24 v3版本停机要切换---------------------------start
-//        this.setExtData(sceneInfoVO, scenePlus.getCameraId());
-            this.setExtDataFromV3(sceneInfoVO, scenePlus.getCameraId());
-            // TODO: 2022/4/24 v3版本停机要切换---------------------------end
             sceneInfoVO.setScenePassword(null);
             if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){
                 sceneInfoVO.setFloorPlanAngle(0f);
@@ -676,10 +671,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         if(StrUtil.isEmpty(objectContent))
             return null;
         sceneInfoVO = JSON.parseObject(objectContent, SceneInfoVO.class);
-        // TODO: 2022/4/24 v3版本停机要切换---------------------------start
-//        this.setExtData(sceneInfoVO, scenePlus.getCameraId());
-        this.setExtDataFromV3(sceneInfoVO, scenePlus.getCameraId());
-        // TODO: 2022/4/24 v3版本停机要切换---------------------------end
         if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){
             sceneInfoVO.setFloorPlanAngle(0f);
         }
@@ -851,7 +842,16 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         result.put("version", "2.1");
 
         String floorplanCadPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "floorplan_cad.json";
-        String floorcadStr = uploadToOssUtil.getObjectContent(this.bucket, floorplanCadPath);
+        String floorcadStr = null;
+        try {
+            floorcadStr = uploadToOssUtil.getObjectContent(this.bucket, floorplanCadPath);
+        }catch (Exception e){
+            log.warn("生成houseType.json失败,floorplan_cad.json找不到, floorplanCadPath:{}", floorplanCadPath);
+            return;
+        }
+        if(StrUtil.isEmpty(floorcadStr)){
+            return;
+        }
 
         JSONObject floorcadObj = JSON.parseObject(floorcadStr);
         JSONArray floors = floorcadObj.getJSONArray("floors");
@@ -1351,13 +1351,18 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             }
 
             downloadName = num + "_images.zip";
+            long start = Calendar.getInstance().getTimeInMillis();
             //打包
             String zipPath = cachePath + downloadName;
             ZipUtil.zip(localImagesPath, zipPath);
+            long end1 = Calendar.getInstance().getTimeInMillis();
+            log.info("打包耗时:" + (end1 - start));
             //上传压缩包
 //            uploadToOssUtil.upload(zipPath, String.format(cacheFormat, num) + downloadName);
             uploadToOssUtil.uploadBySh(zipPath, String.format(cacheFormat, num) + downloadName);
             url = ossUrlPrefix + String.format(cacheFormat, num) + downloadName;
+            long end2 = Calendar.getInstance().getTimeInMillis();
+            log.info("上传耗时:" + (end2 - end1));
             //删除本地压缩包
             FileUtils.deleteFile(zipPath);
 //            //删除本地目录

+ 3 - 5
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -112,7 +112,8 @@ public class SceneEditServiceImpl implements ISceneEditService {
             throw new BusinessException(ErrorCode.FAILURE_CODE_5009);
         }
         if(SceneStatus.SUCCESS.code() != sceneProV3.getStatus()
-            && SceneStatus.NO_DISPLAY.code() != sceneProV3.getStatus()){
+            && SceneStatus.NO_DISPLAY.code() != sceneProV3.getStatus()
+            || (sceneProV3.getIsUpgrade() != null && sceneProV3.getIsUpgrade()== 2)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
         }
         if(PayStatus.PAY.code() != sceneProV3.getPayStatus()){
@@ -120,10 +121,7 @@ public class SceneEditServiceImpl implements ISceneEditService {
         }
         // TODO: 2022/5/19 请求v3的接口,获取场景的状态 待v3停机后要换成v4d的逻辑-------------------------send
 
-        ScenePlus scenePlus = scenePlusService.getOne(
-            new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num)
-                .eq(ScenePlus::getPayStatus, PayStatus.PAY.code()));
-//                .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
         if(scenePlus == null){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }

+ 12 - 5
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ZipUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
@@ -21,6 +22,7 @@ import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ConstantUrl;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.FileBizType;
+import com.fdkankan.common.constant.ImageUtil;
 import com.fdkankan.common.constant.OperationType;
 import com.fdkankan.common.constant.PayStatus;
 import com.fdkankan.common.constant.RecStatus;
@@ -93,6 +95,7 @@ import com.fdkankan.scene.vo.SceneProVO;
 import com.fdkankan.scene.vo.SceneVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import java.awt.image.BufferedImage;
 import java.nio.charset.StandardCharsets;
 import java.io.BufferedReader;
 import java.io.File;
@@ -113,6 +116,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
+import java.nio.charset.StandardCharsets;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
@@ -3536,6 +3540,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(!file.getOriginalFilename().endsWith(".zip")){
             throw new BusinessException(ErrorCode.FAILURE_CODE_7015);
         }
+        if(!FileUtils.checkFileSizeIsLimit(file.getSize(), 50, "M")){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7023, "50M");
+        }
 
 //        ScenePro scenePro = this.findBySceneNum(num);
         ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
@@ -3728,8 +3735,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
 
             if(data.getName().endsWith(".jpg") || data.getName().endsWith(".png")){
-                if(!FileUtils.checkFileSizeIsLimit(data.length(), 1.5, "M")){
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5020);
+                BufferedImage read = ImgUtil.read(data);
+                int widthImg = read.getWidth();
+                int heightImg = read.getHeight();
+                if (widthImg > 2048 && heightImg > 2048) {
+                    ImgUtil.scale(data, data, 2048, 2048, null);
                 }
             }
             if(data.getName().endsWith(".obj")){
@@ -3739,9 +3749,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 if(!data.getName().equals("mesh.obj")){
                     throw new BusinessException(ErrorCode.FAILURE_CODE_5060);
                 }
-                if(!FileUtils.checkFileSizeIsLimit(data.length(), 50, "M")){
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5020);
-                }
 
                 objFlag = true;
                 FileUtils.copyFile(dataPath + data.getName(), filePath + "mesh.obj", true);