瀏覽代碼

更换场景主表

dengsixing 3 年之前
父節點
當前提交
937582c563
共有 21 個文件被更改,包括 615 次插入213 次删除
  1. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfo.java
  2. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java
  3. 18 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/ScenePlusExt.java
  4. 4 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneProPO.java
  5. 9 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/FloorLogoHandler.java
  6. 17 9
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/FloorPlanHandler.java
  7. 12 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/MusicHandler.java
  8. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/ScreenshotHandler.java
  9. 2 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoExtService.java
  10. 3 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java
  11. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScenePlusExtService.java
  12. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScenePlusService.java
  13. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java
  14. 55 42
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java
  15. 10 7
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java
  16. 391 106
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java
  17. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/ScenePlusExtServiceImpl.java
  18. 37 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java
  19. 24 18
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  20. 10 6
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java
  21. 1 10
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneEditInfoParamVO.java

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfo.java

@@ -31,6 +31,9 @@ public class SceneEditInfo implements Serializable {
     @TableField("scene_pro_id")
     private Long sceneProId;
 
+    @TableField("scene_plus_id")
+    private Long scenePlusId;
+
     /**
      * 地面logo名称
      */

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java

@@ -29,6 +29,9 @@ public class SceneEditInfoExt extends BaseEntity {
     @TableField("scene_pro_id")
     private Long sceneProId;
 
+    @TableField("scene_plus_id")
+    private Long scenePlusId;
+
     @TableField("edit_info_id")
     private Long editInfoId;
 

+ 18 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/ScenePlusExt.java

@@ -107,6 +107,24 @@ public class ScenePlusExt implements Serializable {
     private String buildType;
 
     /**
+     * 全景图加载方式,tiles/1k:1k瓦片图,tiles/2:2k瓦片图,tiles/4k:4k瓦片图,pan:全景图 ,local:本地切片,cube:立体图
+     */
+    @TableField("scene_resolution")
+    private String sceneResolution;
+
+    /**
+     * 场景来源,lite:双目lite相机,pro:八目相机,minion:双面转台相机,laser:激光相机,virtual:虚拟场景,sketch:图片建模场景
+     */
+    @TableField("scene_from")
+    private String sceneFrom;
+
+    /**
+     * 点位视频
+     */
+    @TableField("videos")
+    private String videos;
+
+    /**
      * 创建时间
      */
     @TableField("create_time")

+ 4 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneProPO.java

@@ -179,9 +179,9 @@ public class SceneProPO {
     @Transient
     private String cooperationUserId;
 
-    /**
-     * 触发mq调度,事务最后触发
-     */
-    private BuildSceneMqMessage mqMsg;
+//    /**
+//     * 触发mq调度,事务最后触发
+//     */
+//    private BuildSceneMqMessage mqMsg;
 
 }

+ 9 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/FloorLogoHandler.java

@@ -8,8 +8,10 @@ import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -32,12 +34,15 @@ public class FloorLogoHandler implements ISaveUploadHandler {
     private ISceneEditInfoService sceneEditInfoService;
     @Autowired
     private ISceneProService sceneProService;
+    @Autowired
+    private IScenePlusService scenePlusService;
 
     @Override
     public ResultData save(String num, String fileInfo) {
 
-        ScenePro scenePro = sceneProService.findBySceneNum(num);
-        if(Objects.isNull(scenePro))
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         JSONObject fileInfoJson = JSON.parseObject(fileInfo);
@@ -46,7 +51,7 @@ public class FloorLogoHandler implements ISaveUploadHandler {
         floorLogo = StrUtil.isBlank(floorLogo) ? "0" : floorLogo;
         Integer floorLogoSize = fileInfoJson.getInteger("floorLogoSize");
 
-        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         if(Objects.nonNull(sceneEditInfoDb)){
             sceneEditInfoService.update(new LambdaUpdateWrapper<SceneEditInfo>()
                     .set(SceneEditInfo::getFloorLogo, floorLogo)
@@ -54,7 +59,7 @@ public class FloorLogoHandler implements ISaveUploadHandler {
                     .eq(SceneEditInfo::getId, sceneEditInfoDb.getId()));
         }else{
             sceneEditInfoDb = new SceneEditInfo();
-            sceneEditInfoDb.setSceneProId(scenePro.getId());
+            sceneEditInfoDb.setScenePlusId(scenePlus.getId());
             sceneEditInfoDb.setFloorLogo(floorLogo);
             sceneEditInfoDb.setFloorLogoSize(floorLogoSize);
             sceneEditInfoService.save(sceneEditInfoDb);

+ 17 - 9
4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/FloorPlanHandler.java

@@ -14,9 +14,13 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProExt;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,12 +51,17 @@ public class FloorPlanHandler implements ISaveUploadHandler {
     private ISceneProExtService sceneProExtService;
     @Autowired
     UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
     @Override
     public ResultData save(String num, String fileInfo) throws Exception {
 
-        ScenePro scenePro = sceneProService.findBySceneNum(num);
-        if(Objects.isNull(scenePro))
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         JSONObject fileInfoJson = JSON.parseObject(fileInfo);
         //户型图文件路径
@@ -69,7 +78,7 @@ public class FloorPlanHandler implements ISaveUploadHandler {
 
 
         //写入数据库
-        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         if(Objects.nonNull(sceneEditInfoDb)){
             sceneEditInfoService.update(new LambdaUpdateWrapper<SceneEditInfo>()
                     .setSql("version=version+"+1)
@@ -78,7 +87,7 @@ public class FloorPlanHandler implements ISaveUploadHandler {
                     .eq(SceneEditInfo::getId, sceneEditInfoDb.getId()));
         }else{
             sceneEditInfoDb = new SceneEditInfo();
-            sceneEditInfoDb.setSceneProId(scenePro.getId());
+            sceneEditInfoDb.setScenePlusId(scenePlus.getId());
 //            sceneEditInfoDb.setFloorPlanPath(filePaths);
             sceneEditInfoDb.setCadInfo(cadInfo);
             sceneEditInfoService.save(sceneEditInfoDb);
@@ -92,12 +101,11 @@ public class FloorPlanHandler implements ISaveUploadHandler {
         String oldDataPath = String.format(ConstantFilePath.DATA_PATH_FORMAT, num);
 
         if(StrUtil.isEmpty(floorJsonData)){
-            if(scenePro == null){
-                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-            }
-            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+//            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+            ScenePlusExt scenePlusExt= scenePlusExtService
+                .getScenePlusExtByPlusId(scenePlus.getId());
             // TODO: 2022/1/27 老版本数据目录挂在nas,新版本目前流程尚不清楚,先暂时按照老版本写,以后再调整
-            FileUtils.copyFile(sceneProExt.getDataSource() + "/results/floor.json", localDataPath + "houst_floor.json", true);
+            FileUtils.copyFile(scenePlusExt.getDataSource() + "/results/floor.json", localDataPath + "houst_floor.json", true);
             uploadToOssUtil.upload(localDataPath + "houst_floor.json", dataPath + "houst_floor.json");
 
             // TODO: 2022/1/27 老版本上传目录 待删除

+ 12 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/MusicHandler.java

@@ -7,8 +7,11 @@ import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -31,25 +34,30 @@ public class MusicHandler implements ISaveUploadHandler {
     private ISceneEditInfoService sceneEditInfoService;
     @Autowired
     private ISceneProService sceneProService;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
     @Override
     public ResultData save(String num, String fileInfo) {
 
-        ScenePro scenePro = sceneProService.findBySceneNum(num);
-        if(Objects.isNull(scenePro))
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         JSONObject fileInfoJson = JSON.parseObject(fileInfo);
         String music = fileInfoJson.getString("music");
 
-        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfoDb = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         if(Objects.nonNull(sceneEditInfoDb)){
             sceneEditInfoService.update(new LambdaUpdateWrapper<SceneEditInfo>()
                     .set(SceneEditInfo::getMusic, music)
                     .eq(SceneEditInfo::getId, sceneEditInfoDb.getId()));
         }else{
             sceneEditInfoDb = new SceneEditInfo();
-            sceneEditInfoDb.setSceneProId(scenePro.getId());
+            sceneEditInfoDb.setScenePlusId(scenePlus.getId());
             sceneEditInfoDb.setMusic(music);
             sceneEditInfoService.save(sceneEditInfoDb);
         }

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/factory/handler/ScreenshotHandler.java

@@ -10,6 +10,8 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -30,6 +32,10 @@ public class ScreenshotHandler implements ISaveUploadHandler {
     private ISceneEditInfoService sceneEditInfoService;
     @Autowired
     private ISceneProService sceneProService;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
     @Override
     public ResultData save(String num, String fileInfo) {

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoExtService.java

@@ -13,4 +13,6 @@ import com.fdkankan.scene.entity.SceneEditInfoExt;
  */
 public interface ISceneEditInfoExtService extends IService<SceneEditInfoExt> {
 
+    public SceneEditInfoExt getByEditInfoId(long editInfoId);
+
 }

+ 3 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java

@@ -22,6 +22,8 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     SceneEditInfo getBySceneProId(long sceneProId);
 
+    SceneEditInfo getByScenePlusId(long scenePlusId);
+
     ResultData publicScene(SceneEditInfoParamVO param) throws Exception;
 
     SceneInfoVO getSceneInfo(SceneInfoParamVO param) throws Exception;
@@ -38,7 +40,7 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     ResultData downloadPanorama(FileParamVO param) throws Exception;
 
-    void saveTagsToSceneEditInfo(String num, Long sceneProId, SceneEditInfo sceneEditInfo);
+    void saveTagsToSceneEditInfo(String num, SceneEditInfo sceneEditInfo);
 
     ResultData saveVideoBox(FileNameAndDataParamVO param) throws Exception;
 

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScenePlusExtService.java

@@ -13,6 +13,6 @@ import com.fdkankan.scene.entity.ScenePlusExt;
  */
 public interface IScenePlusExtService extends IService<ScenePlusExt> {
 
-    ScenePlusExt getSceneProExtByPlusId(long plusId);
+    ScenePlusExt getScenePlusExtByPlusId(long plusId);
 
 }

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScenePlusService.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.ScenePlus;
 
 /**
@@ -15,4 +16,6 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     ScenePlus getScenePlusByNum(String num);
 
+    ResultData resetSpace(String num) throws Exception;
+
 }

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

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.scene.entity.SceneEditInfoExt;
 import com.fdkankan.scene.mapper.ISceneEditInfoExtMapper;
@@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMapper, SceneEditInfoExt> implements ISceneEditInfoExtService {
 
+    @Override
+    public SceneEditInfoExt getByEditInfoId(long editInfoId) {
+        return this.getOne(new LambdaQueryWrapper<SceneEditInfoExt>().eq(SceneEditInfoExt::getEditInfoId, editInfoId));
+    }
 }

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

@@ -33,6 +33,8 @@ import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.entity.SceneDataDownload;
 import com.fdkankan.scene.entity.SceneEditControls;
 import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProExt;
 import com.fdkankan.scene.factory.FloorLogoHandlerFactory;
@@ -42,6 +44,8 @@ import com.fdkankan.scene.mapper.ISceneEditInfoMapper;
 import com.fdkankan.scene.service.ISceneDataDownloadService;
 import com.fdkankan.scene.service.ISceneEditControlsService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.vo.*;
@@ -105,29 +109,33 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     PlatformGoodsClient platformGoodsClient;
     @Autowired
     PlatformUserClient platformUserClient;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
 
     @Transactional
     @Override
     public SceneEditInfoVO saveScene(SceneEditInfoParamVO param) {
 
-        ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
-        if(Objects.isNull(scenePro)){
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+//        ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
+        if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
-        SceneEditInfo sceneEditInfoDb = this.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
         SceneEditControls sceneEditControlsDb = null;
         if(Objects.nonNull(sceneEditInfoDb)){
             sceneEditControlsDb = sceneEditControlsService.getBySceneEditId(sceneEditInfoDb.getId());
         }
 
         SceneEditInfo sceneEditInfo = BeanUtil.copyProperties(param, SceneEditInfo.class);
-        sceneEditInfo.setSceneProId(scenePro.getId());
+        sceneEditInfo.setScenePlusId(scenePlus.getId());
         if(Objects.isNull(sceneEditInfoDb)){
             this.save(sceneEditInfo);
         }else{
             sceneEditInfo.setId(sceneEditInfoDb.getId());
-            sceneEditInfo.setUpdateTime(Calendar.getInstance().getTime());
             this.updateById(sceneEditInfo);
         }
 
@@ -151,26 +159,30 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     @Override
     public SceneEditInfo getBySceneProId(long sceneProId) {
         return this.getOne(new LambdaQueryWrapper<SceneEditInfo>()
-                .eq(SceneEditInfo::getTbStatus, TbStatus.VALID.code())
                 .eq(SceneEditInfo::getSceneProId, sceneProId));
     }
 
+    @Override
+    public SceneEditInfo getByScenePlusId(long scenePlusId) {
+        return this.getOne(new LambdaQueryWrapper<SceneEditInfo>()
+            .eq(SceneEditInfo::getScenePlusId, scenePlusId));
+    }
+
     @Transactional
     @Override
     public ResultData publicScene(SceneEditInfoParamVO param)  throws Exception{
-        String sceneNum = param.getNum();
-        if(StrUtil.isEmpty(sceneNum)){
-            throw new BusinessException(ErrorCode.PARAM_REQUIRED);
-        }
+        String num = param.getNum();
 
         //根据场景码查询数据库
-        ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
-        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
-        SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+//        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+        SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
         SceneEditControls sceneEditControls = null;
         if(sceneEditInfo == null){
             sceneEditInfo = new SceneEditInfo();
-            sceneEditInfo.setSceneProId(scenePro.getId());
+            sceneEditInfo.setSceneProId(scenePlus.getId());
         }else{
             sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
         }
@@ -183,38 +195,38 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         SceneJsonBean sceneJson = BeanUtil.copyProperties(sceneEditInfo, SceneJsonBean.class);
         SceneEditControlsVO sceneEditControlsVO = BeanUtil.copyProperties(sceneEditControls, SceneEditControlsVO.class);
         sceneJson.setControls(sceneEditControlsVO);
-        sceneJson.setNum(sceneNum);
+        sceneJson.setNum(num);
 //        if(StrUtil.isNotEmpty(sceneEditInfo.getFloorPlanPath())){
 //            sceneJson.setFloorPlanPaths(sceneEditInfo.getFloorPlanPath().split(","));
 //        }
-        sceneJson.setCreateTime(scenePro.getCreateTime());
+        sceneJson.setCreateTime(scenePlus.getCreateTime());
 
-        sceneJson.setSceneResolution(sceneProExt.getSceneResolution());
-        sceneJson.setSceneFrom(sceneProExt.getSceneFrom());
-        if(StrUtil.isNotEmpty(scenePro.getVideos())){
-            sceneJson.setVideos(JSON.parseObject(scenePro.getVideos()));
+        sceneJson.setSceneResolution(scenePlusExt.getSceneResolution());
+        sceneJson.setSceneFrom(scenePlusExt.getSceneFrom());
+        if(StrUtil.isNotEmpty(scenePlusExt.getVideos())){
+            sceneJson.setVideos(JSON.parseObject(scenePlusExt.getVideos()));
         }
 
         //处理热点数据,生成hot.json
-        this.publicHotData(sceneNum, sceneJson, sceneEditInfo);
+        this.publicHotData(num, sceneJson, sceneEditInfo);
 
         // TODO: 2022/3/2 这里的逻辑放在上传球幕视频接口中做了,这里先暂时注释掉,以后要删除
         //处理球幕视频
 //        this.buildVideo(sceneEditInfo, sceneProExt.getDataSource(), sceneNum);
 
         //本地写sceneJson文件
-        String localSceneJsonPath = String.format(ConstantFilePath.SCENE_PATH_FORMAT, sceneNum);
+        String localSceneJsonPath = String.format(ConstantFilePath.SCENE_PATH_FORMAT, num);
         FileUtils.writeFile(localSceneJsonPath, JSON.toJSONString(sceneJson));
         //上传sceneJson文件
-        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneNum);
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", num);
         uploadToOssUtil.upload(JSON.toJSONBytes(sceneJson), sceneJsonPath);
 
         //sceneJson放入缓存
-        String key = String.format(RedisKey.SCENE_JSON, sceneNum);
+        String key = String.format(RedisKey.SCENE_JSON, num);
         redisUtil.set(key, JSON.toJSONString(sceneJson));
 
         //删除发布数据中的user目录
-        String publicUserPath = String.format(UploadFilePath.USER_VIEW_PATH, sceneNum);
+        String publicUserPath = String.format(UploadFilePath.USER_VIEW_PATH, num);
         uploadToOssUtil.deleteFile(publicUserPath);
 
 //        String editUserPath = String.format(UploadFilePath.USER_EDIT_PATH, sceneNum);
@@ -296,9 +308,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             uploadToOssUtil.upload(jsonhots.toString().getBytes(), hotJsonPath);
 
             //修改tags状态为是,标识有热点数据
-            ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
-
-            this.saveTagsToSceneEditInfo(sceneNum, scenePro.getId(), sceneEditInfo);
+            this.saveTagsToSceneEditInfo(sceneNum, sceneEditInfo);
         }
     }
 
@@ -326,13 +336,15 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
      * @return com.fdkankan.scene.vo.SceneInfoVO
      **/
     private SceneInfoVO getSceneInfo4Edit(String num) throws Exception{
-        ScenePro scenePro = sceneProService.findBySceneNum(num);
-        if(Objects.isNull(scenePro)){
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
-        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+//        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
 
-        SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
         if(Objects.isNull(sceneEditInfo)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
@@ -344,13 +356,13 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
 //        if(StrUtil.isNotEmpty(sceneEditInfo.getFloorPlanPath())){
 //            sceneInfoVO.setFloorPlanPaths(sceneEditInfo.getFloorPlanPath().split(","));
 //        }
-        sceneInfoVO.setCreateTime(scenePro.getCreateTime());
+        sceneInfoVO.setCreateTime(scenePlus.getCreateTime());
 
-        sceneInfoVO.setSceneResolution(sceneProExt.getSceneResolution());
-        sceneInfoVO.setSceneFrom(sceneProExt.getSceneFrom());
-        sceneInfoVO.setVideos(scenePro.getVideos());
+        sceneInfoVO.setSceneResolution(scenePlusExt.getSceneResolution());
+        sceneInfoVO.setSceneFrom(scenePlusExt.getSceneFrom());
+        sceneInfoVO.setVideos(scenePlusExt.getVideos());
 
-        this.setExtData(sceneInfoVO, scenePro.getCameraId());
+        this.setExtData(sceneInfoVO, scenePlus.getCameraId());
 
         return sceneInfoVO;
     }
@@ -450,8 +462,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     public ResultData saveCad(BaseDataParamVO param) throws Exception {
 
         String num = param.getNum();
-        ScenePro scenePro = sceneProService.findBySceneNum(num);
-        if(Objects.isNull(scenePro))
+//        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus))
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         String editDataPath = String.format(UploadFilePath.DATA_EDIT_PATH, num);
@@ -526,7 +539,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
 //        if(CommonStatus.YES.code().equals(reSet)){
 //            floorPlanUser = CommonStatus.NO.code();
 //        }
-        SceneEditInfo sceneEditInfoDb = this.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
         if(Objects.nonNull(sceneEditInfoDb)){
             LambdaUpdateWrapper<SceneEditInfo> updateWrapper = new LambdaUpdateWrapper<SceneEditInfo>()
                 .setSql("version=version+" + 1)
@@ -543,7 +556,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             this.update(updateWrapper);
         }else{
             sceneEditInfoDb = new SceneEditInfo();
-            sceneEditInfoDb.setSceneProId(scenePro.getId());
+            sceneEditInfoDb.setScenePlusId(scenePlus.getId());
 //            sceneEditInfoDb.setFloorPlanPath(filePathStr);
             sceneEditInfoDb.setCadInfo(cadInfo);
             sceneEditInfoDb.setFloorPlanUser(floorPlanUser);
@@ -731,7 +744,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     }
 
     @Override
-    public void saveTagsToSceneEditInfo(String num, Long sceneProId, SceneEditInfo sceneEditInfo){
+    public void saveTagsToSceneEditInfo(String num, SceneEditInfo sceneEditInfo){
         //查询缓存是否包含热点数据
         String key = String.format(RedisKey.SCENE_HOT_DATA, num);
         Map<String, String> allTagsMap = redisUtil.hmget(key);

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

@@ -13,8 +13,10 @@ import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.platform.api.feign.PlatformUserClient;
 import com.fdkankan.platform.api.vo.Camera;
 import com.fdkankan.platform.api.vo.UserIncrement;
+import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.service.ISceneEditService;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.vo.BaseSceneParamVO;
 import com.fdkankan.scene.vo.SceneAuthVO;
@@ -40,23 +42,24 @@ public class SceneEditServiceImpl implements ISceneEditService {
     PlatformGoodsClient platformGoodsClient;
     @Autowired
     PlatformUserClient platformUserClient;
+    @Autowired
+    IScenePlusService scenePlusService;
 
     @Override
     public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{
 
-        ScenePro scenePro = sceneProService.getOne(
-            new LambdaQueryWrapper<ScenePro>()
-                .eq(ScenePro::getNum, param.getNum())
-                .eq(ScenePro::getPayStatus,PayStatus.PAY.code())
-                .in(ScenePro::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
-        if(scenePro == null){
+        ScenePlus scenePlus = scenePlusService.getOne(
+            new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, param.getNum())
+                .eq(ScenePlus::getPayStatus, PayStatus.PAY.code())
+                .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
+        if(scenePlus == null){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
         //判断该场景是否属于增值权益
         boolean isVip = false;
         //获取该相机是否有权益
         boolean isExpired  = false;
-        ResultData<Camera> cameraResultData = platformGoodsClient.getCameraById(scenePro.getCameraId());
+        ResultData<Camera> cameraResultData = platformGoodsClient.getCameraById(scenePlus.getCameraId());
         if(!cameraResultData.getSuccess()){
             throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
         }

+ 391 - 106
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -26,6 +26,7 @@ import com.fdkankan.platform.api.vo.Camera;
 import com.fdkankan.platform.api.vo.CameraDetail;
 import com.fdkankan.platform.api.vo.Company;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneFileBuildMapper;
 import com.fdkankan.scene.service.*;
@@ -150,6 +151,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     IFdkkLaserService fdkkLaserService;
     @Autowired
     ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    ISceneEditControlsService sceneEditControlsService;
+    @Autowired
+    ISceneEditInfoExtService sceneEditInfoExtService;
 
     @Override
     public SceneFileBuild findByFileId(String fileId) {
@@ -840,6 +845,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             cameraType = 6L;
         }
 
+        // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------start
         SceneProPO scene = this.createScenePro(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
                 jsonObject.getString("pwd"), unicode,
                 cameraType, "", prefix, zipName, icon, "0", cameraDetail.getUserId(), userName,
@@ -847,6 +853,20 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                 jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                 4, firmwareVersion.toString(), sceneUrl, buildType, type, ecsType, cameraDetail.getCooperationUser());
+        // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------end
+
+        Object[] objects = this.createScenePlus2(sceneNum, camera.getId(), camera.getChildName(),
+            jsonObject.getString("creator"),
+            jsonObject.getString("pwd"), unicode,
+            cameraType, "", prefix, zipName, icon, "0", cameraDetail.getUserId(), userName,
+            jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location"))
+                ? "sfm" : "slam",
+            jsonObject.getJSONArray("points").size(), jsonObject.getString("name"),
+            jsonObject.getString("info"),
+            jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
+            4, firmwareVersion.toString(), sceneUrl, buildType, ecsType,
+            cameraDetail.getCooperationUser());
+        BuildSceneMqMessage mqMessage = (BuildSceneMqMessage)objects[1];
 
         if(scene == null){
             log.info("双目相机入库失败");
@@ -866,7 +886,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         //删除oss的houst_floor.json
         uploadToOssUtil.delete("data/data"+sceneNum+File.separator+"houst_floor.json");
 
-        mqProducer.sendInOrder(topicModelingA, scene.getId()+"", scene.getMqMsg());
+        mqProducer.syncSend(topicModelingAPre, mqMessage);
 
         Map<String, String> map = new HashMap<>();
         map.put("sceneNum", sceneNum);
@@ -899,23 +919,25 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         }
 
         String sceneNum = "";
-
         String snCode = jsonObject.getJSONObject("cam").getString("uuid");
         String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime"); //从data.fage 取出
-//            sceneProService.updateRecStatus(unicode);
         //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
-        ScenePlusExt scene = scenePlusExtService.list(
+        ScenePlusExt scenePlusExt = scenePlusExtService.list(
             new LambdaQueryWrapper<ScenePlusExt>()
                 .like(ScenePlusExt::getDataSource, "%/" + fileId + "/%")).get(0);
+        ScenePlus scene1 = null;
+        if(Objects.nonNull(scenePlusExt)){
+            scene1 = scenePlusService.getById(scenePlusExt.getPlusId());
+        }
 
         // TODO: 2022/3/19 plus 版本稳定后删除-------------------------------start
-        SceneProPO scene = sceneProService.findByFileId("/" + fileId + "/");
+//        SceneProPO scene = sceneProService.findByFileId("/" + fileId + "/");
         // TODO: 2022/3/19 plus 版本稳定后删除-------------------------------end
 
         int rebuild = 1;
-        if(scene != null){
-            sceneNum = scene.getNum();
-            if(scene.getSceneStatus() == SceneStatus.wait.code()){
+        if(scene1 != null){
+            sceneNum = scene1.getNum();
+            if(scene1.getSceneStatus() == SceneStatus.wait.code()){
                 log.info(sceneNum + ":场景处于计算中,不能再计算");
                 return;
             }
@@ -962,7 +984,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
         }
 
-        String icon = null;//新系统
+        String icon = null;
         if(jsonObject.containsKey("icon") && StrUtil.isNotEmpty(jsonObject.getString("icon"))){
             CreateObjUtil.ossUtilCp(ConstantFilePath.OSS_PREFIX + prefix + jsonObject.getString("icon"), filePath);
             icon = prefixAli + imageViewPath + jsonObject.getString("icon");
@@ -1000,7 +1022,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         //重算的场景,先移除该场景对应的容量
         if(rebuild == 1){
+            scenePlusService.resetSpace(sceneNum);
+            // TODO: 2022/3/19 plus版本稳定后需要删除---------------start
             sceneProService.rebuildReduceSpaceBySceneNum(sceneNum);
+            // TODO: 2022/3/19 plus版本稳定后需要删除---------------end
         }else {
             //上传log-main.png
             uploadToOssUtil.upload(ConstantFilePath.LOGO_PATH + "logo-main.png", imageViewPath + "logo-main.png");
@@ -1013,13 +1038,24 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         }
         SceneProPO scene = null;
+        // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------start
         scene = this.createScenePro(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
                 jsonObject.getString("pwd"), unicode,
                 cameraType, String.valueOf(fileId), prefix, "", icon, "0", cameraDetail.getUserId(), userName,
                 jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
                 jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                 jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
-                jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type, ecsType,cameraDetail.getCooperationUser());
+                jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type, ecsType, cameraDetail.getCooperationUser());
+        // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------end
+
+        Object[] objects = this.createScenePlus2(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
+            jsonObject.getString("pwd"), unicode,
+            cameraType, String.valueOf(fileId), prefix, "", icon, "0", cameraDetail.getUserId(), userName,
+            jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
+            jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
+            jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
+            jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, ecsType, cameraDetail.getCooperationUser());
+        BuildSceneMqMessage  mqMessage = (BuildSceneMqMessage)objects[1];
 
         if(scene != null){
             JSONObject statusJson = new JSONObject();
@@ -1144,11 +1180,12 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         //激光转台 八目相机占用 10 和 11
         log.info("发送mq,camType:{}", jsonObject.getJSONObject("cam").getIntValue("type"));
         if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
-            mqProducer.sendOneWay(topicLaserA, scene.getMqMsg());
+//            mqProducer.sendOneWay(topicLaserA, mqMessage);
+            // TODO: 2022/3/19 这里应该是发送激光的 ,目前还不清楚,先统一发送同一个mq
+            mqProducer.syncSend(topicModelingAPre, mqMessage);
         }else if(scene != null){
 //            mqProducer.sendInOrder(topicModelingA, scene.getId()+"", scene.getMqMsg());
-            mqProducer.syncSend(topicModelingAPre, scene.getMqMsg());
-
+            mqProducer.syncSend(topicModelingAPre, mqMessage);
         }
     }
 
@@ -1338,7 +1375,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     uploadToOssUtil.upload(ConstantFilePath.LOGO_PATH + "logo-main-en.png", "images/images" + sceneNum + "/logo-main-en.png");
                 }
                 SceneProPO sceneProPO = null;
+                Object[] objects = null;
+                BuildSceneMqMessage mqMessage = null;
                 if(fromOss){
+                    // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------start
                     sceneProPO = this.createScenePro(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
                             jsonObject.getString("pwd"), unicode,
                             cameraType, String.valueOf(fileId), prefix, "", icon, "0", cameraDetail.getUserId(), userName,
@@ -1346,7 +1386,18 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                             jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                             jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                             jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type, ecsType,cameraDetail.getCooperationUser());
+                    // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------end
+
+                    objects = this.createScenePlus2(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
+                        jsonObject.getString("pwd"), unicode,
+                        cameraType, String.valueOf(fileId), prefix, "", icon, "0", cameraDetail.getUserId(), userName,
+                        jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
+                        jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
+                        jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
+                        jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, ecsType,cameraDetail.getCooperationUser());
+
                 }else {
+                    // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------start
                     sceneProPO = this.createScenePro(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
                             jsonObject.getString("pwd"), unicode,
                             cameraDetail.getGoodsId(), String.valueOf(fileId), "", "", icon, "0", cameraDetail.getUserId(), userName,
@@ -1354,7 +1405,17 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                             jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                             jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
                             jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type, ecsType, cameraDetail.getCooperationUser());
+                    // TODO: 2022/3/21 plus版本稳定后删除 ---------------------------------------------------------------------------------end
+
+                    objects = this.createScenePlus2(sceneNum, camera.getId(), camera.getChildName(), jsonObject.getString("creator"),
+                        jsonObject.getString("pwd"), unicode,
+                        cameraDetail.getGoodsId(), String.valueOf(fileId), "", "", icon, "0", cameraDetail.getUserId(), userName,
+                        jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
+                        jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
+                        jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), rebuild,
+                        jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, ecsType, cameraDetail.getCooperationUser());
                 }
+                mqMessage = (BuildSceneMqMessage)objects[1];
 
                 if(sceneProPO != null){
                     JSONObject statusJson = new JSONObject();
@@ -1477,7 +1538,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     return;
                 }
                 if(sceneProPO != null){
-                    mqProducer.sendInOrder(topicModelingA, sceneProPO.getId()+"", sceneProPO.getMqMsg());
+                    mqProducer.syncSend(topicModelingAPre,  mqMessage);
                 }
 
             }
@@ -1631,6 +1692,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         MatrixToImageWriterUtil.createQRCode(url + projectNum + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+projectNum+"_en.png", null);
         log.info("二维码生成完成");
 
+
         BeanUtil.copyProperties(sceneExt, scenePo);
         BeanUtil.copyProperties(scene, scenePo);
 
@@ -1646,13 +1708,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         ScenePlusVO scenePlusVO = new ScenePlusVO();
         ScenePlus scenePlus = new ScenePlus();
         ScenePlusExt scenePlusExt = new ScenePlusExt();
-//        ScenePO scenePo = new ScenePO();
-//        Scene scene = new Scene();
-//        SceneExt sceneExt = new SceneExt();
         scenePlusExt.setWebSite(url+projectNum);
         scenePlus.setCameraId(cameraId);
         scenePlus.setPhoneId(phoneId);
-        scenePlus.setNum(String.valueOf(projectNum));
+        scenePlus.setNum(projectNum);
         if(scenepsd == null)
         {
             scenepsd = "";
@@ -1664,10 +1723,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 //        }
         // TODO: 2022/3/16 这里暂时不确定要不要 ---end
 
-        if(!org.springframework.util.StringUtils.isEmpty(ecsType)){
-            scenePlusExt.setEcs(ecsType);
-        }
-
         String path =  ConstantFilePath.BUILD_MODEL_PATH + unicode;
 
         if(cameraType.longValue() >= 4){
@@ -1687,6 +1742,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         }
 
+        if(!org.springframework.util.StringUtils.isEmpty(ecsType)){
+            scenePlusExt.setEcs(ecsType);
+        }
+
         if(pic!=null&&pic.length()>5) {
             scenePlusExt.setThumb(pic);
         }else{
@@ -1906,8 +1965,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         //type=0为新生成场景,其余为重新计算场景
 
         // TODO: 2022/2/23  SceneProEdit 重构版本SceneProEdit 这个表可能不用,这里先暂时注释掉
-//        SceneProEdit sceneProEdit = new SceneProEdit();
-//        SceneProEditExt sceneProEditExt = new SceneProEditExt();
+        SceneProEdit sceneProEdit = new SceneProEdit();
+        SceneProEditExt sceneProEditExt = new SceneProEditExt();
         if(type == 0){
             scenePro.setSceneStatus(SceneStatus.wait.code());
             sceneProService.save(scenePro);
@@ -1918,35 +1977,35 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             sceneEditInfo.setSceneProId(scenePro.getId());
             sceneEditInfoService.save(sceneEditInfo);
 
-//            sceneProEdit.setNeedKey(0);
-//            if(sceneKey == null) {
-//                sceneKey = "";
-//            }
-//            sceneProEdit.setSceneKey(sceneKey);
-//            if(!sceneKey.equals("")) {
-//                sceneProEdit.setNeedKey(1);
-//            }else {
-//                sceneProEdit.setNeedKey(0);
-//            }
-//
-//            sceneProEdit.setProId(scenePro.getId());
-//            sceneProEdit.setFloorLogoSize(100);
-//            sceneProEdit.setCreateTime(Calendar.getInstance().getTime());
-//            sceneProEditService.save(sceneProEdit);
-//
-//            sceneProEditExt.setProEditId(sceneProEdit.getId());
-//            sceneProEditExt.setProId(scenePro.getId());
-//            sceneProEditExt.setMapVisi(1);
-//            sceneProEditExt.setTourVisi(1);
-//            sceneProEditExt.setVrVisi(1);
-//            sceneProEditExt.setRulerVisi(1);
-//            sceneProEditExt.setCadImgVisi(1);
-//            sceneProEditExt.setPanoVisi(1);
-//            sceneProEditExt.setM2dVisi(1);
-//            sceneProEditExt.setM3dVisi(1);
-//            sceneProEditExt.setMeasureVisi(0);
-//            sceneProEditExt.setCreateTime(Calendar.getInstance().getTime());
-//            sceneProEditExtService.save(sceneProEditExt);
+            sceneProEdit.setNeedKey(0);
+            if(sceneKey == null) {
+                sceneKey = "";
+            }
+            sceneProEdit.setSceneKey(sceneKey);
+            if(!sceneKey.equals("")) {
+                sceneProEdit.setNeedKey(1);
+            }else {
+                sceneProEdit.setNeedKey(0);
+            }
+
+            sceneProEdit.setProId(scenePro.getId());
+            sceneProEdit.setFloorLogoSize(100);
+            sceneProEdit.setCreateTime(Calendar.getInstance().getTime());
+            sceneProEditService.save(sceneProEdit);
+
+            sceneProEditExt.setProEditId(sceneProEdit.getId());
+            sceneProEditExt.setProId(scenePro.getId());
+            sceneProEditExt.setMapVisi(1);
+            sceneProEditExt.setTourVisi(1);
+            sceneProEditExt.setVrVisi(1);
+            sceneProEditExt.setRulerVisi(1);
+            sceneProEditExt.setCadImgVisi(1);
+            sceneProEditExt.setPanoVisi(1);
+            sceneProEditExt.setM2dVisi(1);
+            sceneProEditExt.setM3dVisi(1);
+            sceneProEditExt.setMeasureVisi(0);
+            sceneProEditExt.setCreateTime(Calendar.getInstance().getTime());
+            sceneProEditExtService.save(sceneProEditExt);
 
 
             //新增场景时,同时新增场景协作信息
@@ -1998,56 +2057,54 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
             sceneEditInfoService.updateById(sceneEditInfo);
 
+            SceneProEdit oldSceneProEdit = sceneProEditService.findByProId(scenePro.getId());
+            SceneProEditExt oldSceneProEditeExt = sceneProEditExtService.getByProEditId(oldSceneProEdit.getId());
+            sceneProEdit.setNeedKey(0);
 
-//            SceneProEdit oldSceneProEdit = sceneProEditService.findByProId(scenePro.getId());
-//            SceneProEditExt oldSceneProEditeExt = sceneProEditExtService.getByProEditId(oldSceneProEdit.getId());
-//            sceneProEdit.setNeedKey(0);
-//
-//            if(sceneKey == null) {
-//                sceneKey = "";
-//            }
-//            sceneProEdit.setSceneKey(sceneKey);
-//            if(!sceneKey.equals("")) {
-//                sceneProEdit.setNeedKey(1);
-//            }else {
-//                sceneProEdit.setNeedKey(0);
-//            }
-//
-//            sceneProEdit.setId(oldSceneProEdit.getId());
-//            sceneProEdit.setProId(scenePro.getId());
-//            sceneProEdit.setFloorLogoSize(100);
-//            sceneProEdit.setTbStatus(TbStatus.VALID.code());
-//            sceneProEdit.setFloorPublishVer(oldSceneProEdit.getFloorEditVer() + 1);
-//            sceneProEdit.setFloorEditVer(oldSceneProEdit.getFloorEditVer() + 1);
-//            sceneProEdit.setVersion(oldSceneProEdit.getVersion() + 1);
-//            sceneProEdit.setUpdateTime(Calendar.getInstance().getTime());
-//            sceneProEditService.updateById(sceneProEdit);
-//
-//            sceneProEditExt.setId(oldSceneProEditeExt.getId());
-//            sceneProEditExt.setProId(scenePro.getId());
-//            sceneProEditExt.setMapVisi(1);
-//            sceneProEditExt.setTourVisi(1);
-//            sceneProEditExt.setVrVisi(1);
-//            sceneProEditExt.setRulerVisi(1);
-//            sceneProEditExt.setCadImgVisi(1);
-//            sceneProEditExt.setPanoVisi(1);
-//            sceneProEditExt.setM2dVisi(1);
-//            sceneProEditExt.setM3dVisi(1);
-//            sceneProEditExt.setMeasureVisi(0);
-//            sceneProEditExt.setCreateTime(oldSceneProEdit.getCreateTime());
-//            sceneProEditExt.setImagesVersion(oldSceneProEditeExt.getImagesVersion() + 1);
-//            sceneProEditExt.setUpdateTime(Calendar.getInstance().getTime());
-//            sceneProEditExtService.updateById(sceneProEditExt);
-
-        }
+            if(sceneKey == null) {
+                sceneKey = "";
+            }
+            sceneProEdit.setSceneKey(sceneKey);
+            if(!sceneKey.equals("")) {
+                sceneProEdit.setNeedKey(1);
+            }else {
+                sceneProEdit.setNeedKey(0);
+            }
 
-        BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
-                projectNum, cameraName, unicode, cameraType, fileId, prefix, imgsName, isModel,
-                userName, algorithm, resolution, buildType, path, scenePro.getId(), scenePro.getSceneName(),
-                scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
-                sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
+            sceneProEdit.setId(oldSceneProEdit.getId());
+            sceneProEdit.setProId(scenePro.getId());
+            sceneProEdit.setFloorLogoSize(100);
+            sceneProEdit.setTbStatus(TbStatus.VALID.code());
+            sceneProEdit.setFloorPublishVer(oldSceneProEdit.getFloorEditVer() + 1);
+            sceneProEdit.setFloorEditVer(oldSceneProEdit.getFloorEditVer() + 1);
+            sceneProEdit.setVersion(oldSceneProEdit.getVersion() + 1);
+            sceneProEdit.setUpdateTime(Calendar.getInstance().getTime());
+            sceneProEditService.updateById(sceneProEdit);
+
+            sceneProEditExt.setId(oldSceneProEditeExt.getId());
+            sceneProEditExt.setProId(scenePro.getId());
+            sceneProEditExt.setMapVisi(1);
+            sceneProEditExt.setTourVisi(1);
+            sceneProEditExt.setVrVisi(1);
+            sceneProEditExt.setRulerVisi(1);
+            sceneProEditExt.setCadImgVisi(1);
+            sceneProEditExt.setPanoVisi(1);
+            sceneProEditExt.setM2dVisi(1);
+            sceneProEditExt.setM3dVisi(1);
+            sceneProEditExt.setMeasureVisi(0);
+            sceneProEditExt.setCreateTime(oldSceneProEdit.getCreateTime());
+            sceneProEditExt.setImagesVersion(oldSceneProEditeExt.getImagesVersion() + 1);
+            sceneProEditExt.setUpdateTime(Calendar.getInstance().getTime());
+            sceneProEditExtService.updateById(sceneProEditExt);
+
+        }
+
+//        BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
+//                projectNum, cameraName, unicode, cameraType, fileId, prefix, imgsName, isModel,
+//                userName, algorithm, resolution, buildType, path, scenePro.getId(), scenePro.getSceneName(),
+//                scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
+//                sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
 
-        sceneProPO.setMqMsg(buildSceneMqMessage);
         BeanUtil.copyProperties(sceneProExt, sceneProPO);
         BeanUtil.copyProperties(scenePro, sceneProPO);
 
@@ -2069,13 +2126,13 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         }
         scenejson.put("createTime", new DateTime(new Date()).toString("yyyy-MM-dd HH:mm"));
 
-//        scenejson.put("floorPublishVer", sceneProEdit.getFloorPublishVer());
-//        scenejson.put("floorEditVer", sceneProEdit.getFloorEditVer());
+        scenejson.put("floorPublishVer", sceneProEdit.getFloorPublishVer());
+        scenejson.put("floorEditVer", sceneProEdit.getFloorEditVer());
         scenejson.put("entry", null);
 
-//        if(!org.springframework.util.StringUtils.isEmpty(sceneProEdit.getHotsIds())){
-//            scenejson.put("hots", 1);
-//        }
+        if(!org.springframework.util.StringUtils.isEmpty(sceneProEdit.getHotsIds())){
+            scenejson.put("hots", 1);
+        }
 
         File file = new File(ConstantFilePath.SCENE_PATH+"data/data"+projectNum);
         if(!file.exists()||!file.isDirectory())
@@ -2093,6 +2150,228 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return sceneProPO;
     }
 
+    public Object[] createScenePlus2(String projectNum, Long cameraId, String cameraName, String phoneId, String sceneKey,
+        String unicode, Long cameraType, String fileId, String prefix,
+        String imgsName, String pic, String isModel, Long userId, String userName,
+        String algorithm, Integer sceneShootCount, String sceneName,
+        String sceneDec, Integer sceneType, String gps,Integer type,
+        Integer resolution, String firmwareVersion, String url, String buildType, String ecsType,
+        Long cooperationUser)throws Exception{
+
+//        SceneProPO sceneProPO = new SceneProPO();
+//        ScenePro scenePro = new ScenePro();
+//        SceneProExt sceneProExt = new SceneProExt();
+//        scenePro.setWebSite(url+projectNum);
+//        scenePro.setCameraId(cameraId);
+//        sceneProExt.setPhoneId(phoneId);
+//        scenePro.setNum(projectNum);
+        ScenePlusVO scenePlusVO = new ScenePlusVO();
+        ScenePlus scenePlus = new ScenePlus();
+        ScenePlusExt scenePlusExt = new ScenePlusExt();
+        scenePlusExt.setWebSite(url+projectNum);
+        scenePlus.setCameraId(cameraId);
+        scenePlus.setPhoneId(phoneId);
+        scenePlus.setNum(projectNum);
+
+        String path =  ConstantFilePath.BUILD_MODEL_PATH + unicode;
+
+        scenePlus.setSceneSource(1);
+        if(cameraType.longValue() == 5 || cameraType.longValue() == 6){
+            //场景来源双目相机
+            scenePlus.setSceneSource(2);
+            scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_PATH + unicode);
+        }else if(cameraType.longValue() == 14){
+
+            scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_LASER_PATH +
+                cameraName.replace("4DKKPRO_", "").replace("-fdage", "").toLowerCase() + File.separator +
+                fileId + File.separator + unicode);
+            path =  ConstantFilePath.BUILD_MODEL_LASER_PATH + unicode;
+            log.info("激光相机 dataSource :" + scenePlusExt.getDataSource());
+
+        }else if(cameraType.longValue() >= 3){
+            scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_PATH +
+                cameraName.replace("4DKKPRO_", "").replace("-fdage", "").toLowerCase() + File.separator +
+                fileId + File.separator + unicode);
+        }else {
+            scenePlusExt.setDataSource(prefix+imgsName);
+        }
+
+        if(!org.springframework.util.StringUtils.isEmpty(ecsType)){
+            scenePlusExt.setEcs(ecsType);
+        }
+
+        if(resolution == null || resolution.intValue() == 0){
+            scenePlusExt.setSceneScheme(cameraType.intValue());
+        }else {
+            scenePlusExt.setSceneScheme(4);
+        }
+
+        //场景来源双目相机,sceneScheme为4,加载high,low图
+        if(cameraType.longValue() == 5 || cameraType.longValue() == 6){
+            scenePlusExt.setSceneScheme(4);
+        }
+
+        //转台相机用4k图
+        if(cameraType.longValue() == 13 ){
+            scenePlus.setSceneSource(3);
+            scenePlusExt.setSceneScheme(10);
+        }
+
+        //激光相机
+        if(cameraType.longValue() == 14 ){
+            scenePlus.setSceneSource(4);
+            scenePlusExt.setSceneScheme(10);
+        }
+
+        if(pic!=null&&pic.length()>5)
+        {
+            scenePlusExt.setThumb(pic);
+        }
+        else
+        {
+            scenePlusExt.setThumb(ConstantUrl.DEFAULT_SCENE_PIC);
+        }
+        scenePlusExt.setThumb(scenePlusExt.getThumb().concat("?t=")+System.currentTimeMillis());
+
+        if(!ObjectUtils.isEmpty(userName)){
+            scenePlus.setUserId(userId);
+        }
+
+        if(sceneShootCount == null)
+        {
+            scenePlusExt.setShootCount(0);
+        }
+        else
+        {
+            scenePlusExt.setShootCount(sceneShootCount);
+        }
+        if(sceneName!=null)
+        {
+            scenePlus.setTitle(sceneName);
+        }
+        if(sceneDec!=null)
+        {
+            scenePlus.setDescription("<p>"+ new String(sceneDec.getBytes("UTF-8"))+"</p>");
+        }
+
+        if(sceneType!=null)
+        {
+            scenePlus.setSceneType(sceneType);
+        }
+
+        if(gps!=null&&!gps.trim().equals(""))
+        {
+            scenePlusExt.setGps(gps);
+        }
+
+        scenePlusExt.setAlgorithm(algorithm);
+        if(!org.springframework.util.StringUtils.isEmpty(firmwareVersion)){
+            scenePlusExt.setFirmwareVersion(firmwareVersion);
+        }
+        scenePlusExt.setBuildType(buildType);
+        log.info("场景记录添加到数据库:"+projectNum);
+        //type=0为新生成场景,其余为重新计算场景
+
+        SceneEditInfo sceneEditInfo = new SceneEditInfo();
+        SceneEditInfoExt sceneEditInfoExt = new SceneEditInfoExt();
+        SceneEditControls sceneEditControls = new SceneEditControls();
+        if(type == 0){
+            scenePlus.setSceneStatus(SceneStatus.wait.code());
+            scenePlusService.save(scenePlus);
+            scenePlusExt.setPlusId(scenePlus.getId());
+            scenePlusExtService.save(scenePlusExt);
+
+            sceneEditInfo.setScenePlusId(scenePlus.getId());
+
+            if(StrUtil.isNotBlank(sceneKey)) {
+                sceneEditInfo.setScenePassword(sceneKey);
+                sceneEditControls.setShowLock((int) CommonStatus.YES.code());
+            }
+
+            sceneEditInfoService.save(sceneEditInfo);
+            sceneEditControls.setEditInfoId(sceneEditInfo.getId());
+            sceneEditControlsService.save(sceneEditControls);
+
+            //新增场景时,同时新增场景协作信息
+            if(cooperationUser != null){
+                SceneCooperation sceneCooperationEntity = new SceneCooperation();
+                sceneCooperationEntity.setNum(projectNum);
+                sceneCooperationEntity.setUserId(cooperationUser);
+                sceneCooperationService.save(sceneCooperationEntity);
+
+                List<SceneResourceCamera> resourceCameraList = sceneResourceCameraService.findListByCameraId(cameraId);
+
+                SceneResourceCooperation sceneResourceCooperation = null;
+                if(resourceCameraList != null && resourceCameraList.size() > 0){
+                    for (SceneResourceCamera sceneResourceCamera : resourceCameraList) {
+                        sceneResourceCooperation = new SceneResourceCooperation();
+                        sceneResourceCooperation.setSceneResourceId(sceneResourceCamera.getSceneResourceId());
+                        sceneResourceCooperation.setSceneCooperationId(sceneCooperationEntity.getId());
+                        sceneResourceCooperationService.save(sceneResourceCooperation);
+                    }
+                }
+            }
+        }else {
+            ScenePlus oldScene = scenePlusService.getScenePlusByNum(projectNum);
+            scenePlus.setId(oldScene.getId());
+            scenePlus.setSceneStatus(0);
+            scenePlus.setTbStatus(TbStatus.VALID.code());
+            scenePlus.setPayStatus(0);
+            scenePlus.setCreateTime(Calendar.getInstance().getTime());
+
+            ScenePlusExt oldSceneExt = scenePlusExtService.getScenePlusExtByPlusId(oldScene.getId());
+            scenePlusExt.setSpace(oldSceneExt.getSpace());
+            scenePlusExt.setEcs(oldSceneExt.getEcs());
+            scenePlusExt.setViewCount(oldSceneExt.getViewCount());
+            if(sceneName!=null) {
+                scenePlus.setTitle(sceneName);
+            }
+            if(sceneType!=null) {
+                scenePlus.setSceneType(sceneType);
+            }
+            scenePlusService.updateById(scenePlus);
+            scenePlusExtService.updateById(scenePlusExt);
+
+            SceneEditInfo oldSceneEditInfo = sceneEditInfoService.getByScenePlusId(oldScene.getId());
+            SceneEditInfoExt oldSceneEditeIinfoExt = sceneEditInfoExtService.getByEditInfoId(oldSceneEditInfo.getId());
+            if(StrUtil.isNotBlank(sceneKey)) {
+                sceneEditInfo.setScenePassword(sceneKey);
+                sceneEditControls.setShowLock((int) CommonStatus.YES.code());
+            }else{
+                sceneEditInfo.setScenePassword("");
+                sceneEditControls.setShowLock((int)CommonStatus.NO.code());
+            }
+
+            sceneEditInfo.setId(oldSceneEditInfo.getId());
+            sceneEditInfo.setScenePlusId(scenePlus.getId());
+            sceneEditInfo.setFloorLogoSize(100);
+            sceneEditInfo.setTbStatus(TbStatus.VALID.code());
+            sceneEditInfo.setFloorPublishVer(oldSceneEditInfo.getFloorEditVer() + 1);
+            sceneEditInfo.setFloorEditVer(oldSceneEditInfo.getFloorEditVer() + 1);
+            sceneEditInfo.setVersion(oldSceneEditInfo.getVersion() + 1);
+            sceneEditInfoService.updateById(sceneEditInfo);
+
+            sceneEditInfoExt.setId(oldSceneEditeIinfoExt.getId());
+            sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
+            sceneEditInfoExt.setScenePlusId(scenePlus.getId());
+            sceneEditInfoExtService.updateById(sceneEditInfoExt);
+
+        }
+
+        BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
+            projectNum, cameraName, unicode, cameraType, fileId, prefix, imgsName, isModel,
+            userName, algorithm, resolution, buildType, path, scenePlus.getId(), scenePlus.getTitle(),
+            scenePlusExt.getWebSite(), scenePlus.getCreateTime(), scenePlus.getUserId(),
+            scenePlusExt.getDataSource(), scenePlus.getSceneStatus(), scenePlus.getPayStatus(), scenePlusExt.getThumb());
+
+        BeanUtil.copyProperties(scenePlusExt, scenePlusVO);
+        BeanUtil.copyProperties(scenePlus, scenePlusVO);
+
+
+        //当mq排队数大于指定数量时使用弹性升缩
+        return new Object[]{scenePlusVO, buildSceneMqMessage};
+    }
+
     public BuildSceneMqMessage getBuildSceneMqMessage(String projectNum, String cameraName, String unicode,
                                                              Long cameraType, String fileId,String prefix, String imgsName,
                                                              String isModel, String userName,String algorithm, Integer resolution,
@@ -2270,7 +2549,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
-        ScenePlusExt scenePlusExt = scenePlusExtService.getSceneProExtByPlusId(scenePlus.getId());
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
         String path = scenePlusExt.getDataSource();
         Integer sceneSource = scenePlus.getSceneSource();
         String dataSource = scenePlusExt.getDataSource();
@@ -2372,7 +2651,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 userName = user.getUserName();
             }
             //重算的场景,先移除该场景对应的容量
+            scenePlusService.resetSpace(num);
+            // TODO: 2022/3/19 plus版本稳定后需要删除---------------start
             sceneProService.rebuildReduceSpaceBySceneNum(num);
+            // TODO: 2022/3/19 plus版本稳定后需要删除---------------end
 
             JSONObject statusJson = new JSONObject();
             //临时将-2改成1,app还没完全更新
@@ -2422,7 +2704,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 mqProducer.syncSend(topicModelingAPre, buildSceneMqMessage);
             }
 
+            // TODO: plus版本稳定后删除 -------------------------------start
             sceneProService.updateStatus(num,0);
+            // TODO: plus版本稳定后删除 -------------------------------end
+
             scenePlusService.update(new LambdaUpdateWrapper<ScenePlus>()
                 .set(ScenePlus::getSceneStatus, SceneStatus.wait.code())
                 .eq(ScenePlus::getNum, num));

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/ScenePlusExtServiceImpl.java

@@ -19,7 +19,7 @@ import org.springframework.stereotype.Service;
 public class ScenePlusExtServiceImpl extends ServiceImpl<IScenePlusExtMapper, ScenePlusExt> implements IScenePlusExtService {
 
     @Override
-    public ScenePlusExt getSceneProExtByPlusId(long plusId) {
+    public ScenePlusExt getScenePlusExtByPlusId(long plusId) {
         return this.getOne(new LambdaQueryWrapper<ScenePlusExt>().eq(ScenePlusExt::getPlusId, plusId));
     }
 }

+ 37 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java

@@ -1,10 +1,21 @@
 package com.fdkankan.scene.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.ScenePlusExt;
+import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.entity.SceneProExt;
 import com.fdkankan.scene.mapper.IScenePlusMapper;
+import com.fdkankan.scene.service.IScenePlusExtService;
 import com.fdkankan.scene.service.IScenePlusService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.Calendar;
+import java.util.Objects;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,11 +26,37 @@ import org.springframework.stereotype.Service;
  * @author 
  * @since 2022-03-16
  */
+@Slf4j
 @Service
 public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
 
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private PlatformGoodsClient platformGoodsClient;
+
     @Override
     public ScenePlus getScenePlusByNum(String num) {
         return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
     }
+
+    @Override
+    public ResultData resetSpace(String num) throws Exception{
+        ScenePlus scenePlus = this.getScenePlusByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+        if(Objects.isNull(scenePlus)){
+            log.info("该场景不存在无法重置容量,场景码为:" + num);
+            return ResultData.error(ErrorCode.FAILURE_CODE_5058);
+        }
+        if (scenePlusExt.getSceneScheme() < 4){
+            log.info("该场景不属于八目相机无法重置容量,场景码为:" + num);
+            return ResultData.error(ErrorCode.FAILURE_CODE_5057);
+        }
+        platformGoodsClient.updateCameraDetailByCameraIdAndSpace(scenePlus.getCameraId(), -scenePlusExt.getSpace());
+
+        scenePlusExt.setSpace(Long.parseLong("0"));
+        scenePlusExtService.updateById(scenePlusExt);
+
+        return ResultData.ok();
+    }
 }

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

@@ -115,6 +115,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneEditInfoService sceneEditInfoService;
     @Autowired
     ISceneEditControlsService sceneEditControlsService;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
     @Override
     public List<SceneVO> convert(List<ScenePro> list){
@@ -849,20 +853,22 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Override
     public ResultData saveInitialPage(FileNameAndDataParamVO param) throws Exception{
 
-        ScenePro scenePro = this.findBySceneNum(param.getNum());
-        if(scenePro == null){
+//        ScenePro scenePro = this.findBySceneNum(param.getNum());
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if(scenePlus == null){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
 
         //更新缩略图url
         String thumbUrl = this.ossUrlPrefix + String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + param.getFileName();
-        scenePro.setThumb(thumbUrl);
-        this.updateById(scenePro);
+        scenePlusExt.setThumb(thumbUrl);
+        scenePlusExtService.updateById(scenePlusExt);
 
-        SceneEditInfo sceneEditInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         if(sceneEditInfo == null){
             sceneEditInfo = new SceneEditInfo();
-            sceneEditInfo.setSceneProId(scenePro.getId());
+            sceneEditInfo.setScenePlusId(scenePlus.getId());
             sceneEditInfo.setEntry(param.getData());
             sceneEditInfoService.save(sceneEditInfo);
         }else{
@@ -871,8 +877,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     .set(SceneEditInfo::getEntry, param.getData())
                     .setSql("version = version + 1")
                     .eq(SceneEditInfo::getId, sceneEditInfo.getId()));
-
-
         }
 
         return ResultData.ok();
@@ -2290,9 +2294,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Override
     public ResultData deleteIcons(DeleteHotIconParamVO param) throws Exception {
 
-        ScenePro scenePro = this.findBySceneNum(param.getNum());
-        if (scenePro == null)
-            return ResultData.error(ErrorCode.FAILURE_CODE_5005);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if (scenePlus == null)
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
         List<String> fileNameList = param.getFileNameList();
 
@@ -2883,8 +2887,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 //    @SystemServiceLog(description = "保存热点可见性的数据")
     public ResultData saveTagsVisible(SaveTagsVisibleParamVO param) throws Exception {
 
-        ScenePro scenePro = findBySceneNum(param.getNum());
-        if (scenePro == null ) {
+//        ScenePro scenePro = findBySceneNum(param.getNum());
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if (scenePlus == null ) {
             return ResultData.error(ErrorCode.FAILURE_CODE_5005);
         }
         JSONArray visiblePanos = JSONArray.parseArray(param.getData());
@@ -2914,7 +2919,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         });
 
         //更新版本号
-        SceneEditInfo editInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo editInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         sceneEditInfoService.upgradeVersionById(editInfo.getId());
 
         //放入缓存
@@ -2933,8 +2938,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 //    @SystemServiceLog(description = "漫游可行")
     public ResultData saveRoam(BaseDataParamVO param) throws Exception {
 
-        ScenePro scenePro = this.findBySceneNum(param.getNum());
-        if (scenePro == null ) {
+//        ScenePro scenePro = this.findBySceneNum(param.getNum());
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if (scenePlus == null ) {
             return ResultData.error(ErrorCode.FAILURE_CODE_5005);
         }
 
@@ -2984,10 +2990,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         uploadToOssUtil.upload(localDataPath + "vision.modeldata", editImagesPath + "vision.modeldata");
 
         //更新版本号
-        SceneEditInfo editInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
+        SceneEditInfo editInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         if(Objects.isNull(editInfo)){
             editInfo = new SceneEditInfo();
-            editInfo.setSceneProId(scenePro.getId());
+            editInfo.setScenePlusId(scenePlus.getId());
             sceneEditInfoService.save(editInfo);
         }else{
             sceneEditInfoService.upgradeVersionById(editInfo.getId());

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

@@ -1,9 +1,12 @@
 package com.fdkankan.scene.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.constant.TbStatus;
 import com.fdkankan.common.constant.UploadFilePath;
 import com.fdkankan.common.exception.BusinessException;
@@ -63,9 +66,6 @@ public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, Scen
     @Override
     public String uploads(String imgData,String fileName,String blzType,MultipartFile[] files,String sceneCode,Integer type,String token) throws Exception{
         SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
-//        if(ssoUser == null ){
-//            throw new BusinessException(ErrorCode.USER_NOT_LOGIN);
-//        }
         Long userId = ssoUser == null ? null :ssoUser.getId();
 
         List<MultipartFile> multipartFiles = new ArrayList<>();
@@ -96,9 +96,13 @@ public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, Scen
     }
 
     public String uploadFiles(String sendFileName,String bizType,List<MultipartFile> files, String sceneCode, Integer type,Long userId) throws Exception{
-        if (StringUtils.isEmpty(sceneCode) || files == null || files.size() <= 0 || StringUtils.isEmpty(bizType)) {
-            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
-        }
+        if (StrUtil.isEmpty(sceneCode))
+            throw new BusinessException(ServerCode.PARAM_REQUIRED, "num");
+        if(CollUtil.isEmpty(files))
+            throw new BusinessException(ServerCode.PARAM_REQUIRED, "files");
+        if(StrUtil.isEmpty(bizType))
+            throw new BusinessException(ServerCode.PARAM_REQUIRED, "bizType");
+
         List<String> urlList = new ArrayList<>();
         if(type != null && 1 == type){
             this.updateFileByPreFix(sceneCode,bizType);

+ 1 - 10
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneEditInfoParamVO.java

@@ -12,20 +12,11 @@ import javax.validation.constraints.NotBlank;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class SceneEditInfoParamVO {
+public class SceneEditInfoParamVO extends BaseSceneParamVO{
 
 
-    /**
-     * 逐渐
-     */
     private Long id;
 
-    /**
-     * 场景吗
-     */
-    @NotBlank(message = "场景码不能为空")
-    private String num;
-
     private Long sceneProId;
 
     /**