ソースを参照

场景中心业务代码迁移

dengsixing 3 年 前
コミット
e36d5a648c
16 ファイル変更797 行追加621 行削除
  1. 4 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/SnCode.java
  2. 92 602
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java
  3. 44 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneCooperationController.java
  4. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java
  5. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneCooperationService.java
  6. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneFileBuildService.java
  7. 10 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java
  8. 5 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneService.java
  9. 47 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java
  10. 193 5
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java
  11. 255 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  12. 49 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java
  13. 28 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/RebuildVedioSceneParamVO.java
  14. 28 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneCooperationParamVO.java
  15. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneParamVO.java
  16. 24 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/VideoSceneProgressVO.java

+ 4 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/entity/SnCode.java

@@ -1,9 +1,7 @@
 package com.fdkankan.platform.goods.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+
 import java.io.Serializable;
 import java.util.Date;
 import lombok.Getter;
@@ -45,8 +43,8 @@ public class SnCode implements Serializable {
     /**
      * 0正常,1删除
      */
-   @TableField("tb_status")
-@TableLogic(value="0",delval = "1")
+    @TableField("tb_status")
+    @TableLogic(value="0",delval = "1")
     private Integer tbStatus;
 
 

+ 92 - 602
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -9,10 +9,9 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.ComputerUtil;
 import com.fdkankan.common.util.CreateObjUtil;
 import com.fdkankan.common.util.FileUtils;
-import com.fdkankan.scene.service.ISceneFileBuildService;
-import com.fdkankan.scene.service.ISceneProService;
-import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.service.impl.SceneFileBuildServiceImpl;
+import com.fdkankan.scene.vo.RebuildVedioSceneParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
 import org.apache.commons.lang3.StringUtils;
@@ -45,6 +44,10 @@ public class SceneController {
     ISceneService sceneService;
     @Autowired
     ISceneFileBuildService sceneFileBuildService;
+    @Autowired
+    IVideoSceneProgressService videoSceneProgressService;
+    @Autowired
+    IPicSceneProgressService picSceneProgressService;
 
 
     /**
@@ -111,605 +114,92 @@ public class SceneController {
     }
 
 
-//    /**
-//     * 场景模型重新计算
-//     */
-//    @ApiOperation("场景视频重新计算")
-//    @PostMapping(value = "/rebuildVideoScene")
-//    public ResultData rebuildVideoScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
-//
-//        if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum()) || StringUtils.isEmpty(requestRebuildVedioScene.getPanoId())){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        String num = requestRebuildVedioScene.getSceneNum();
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(num);
-//        SceneEntity scene = null;
-//        String path = "";
-//        if(sceneProEntity == null){
-//            scene = sceneService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
-//            if(scene == null){
-//                throw new BaseRuntimeException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//            }else {
-//                path = ConstantFilePath.BUILD_MODEL_PATH + scene.getDataSource().split("/")[scene.getDataSource().split("/").length - 2];
-//            }
-//        }else {
-//            path = sceneProEntity.getDataSource();
-//        }
-//
-//        //先从备份文件下拉取
-//        CreateObjUtil.ossUtilCp("video/video" +sceneProEntity.getNum()  + File.separator + "back" + File.separator,
-//                sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp");
-//
-//        String backpathtemp = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp";
-//        File fileback = new File(backpathtemp);
-//        File[] filebackList = fileback.listFiles();
-//
-//        if(filebackList.length<=0){
-//            String backpath = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback";
-//            log.info("------------------" +  backpath);
-//
-//            File file = new File(backpath);
-//
-//            //验证video 文件夹下是否有备份
-//            CreateObjUtil.ossUtilCp("video/video" +sceneProEntity.getNum()  + File.separator,
-//                    sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback");
-//
-//            String name = "";
-//            Map<String,String> map = new HashMap<String,String>();
-//            file = new File(backpath);
-//            File[] fileList = file.listFiles();
-//            if(fileList.length>0){
-//                for(File f:fileList){
-//                    name = f.getName();
-//                    log.info("file name :" + name);
-//                    map.put(sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback" + File.separator + name,
-//                            "video/video" +sceneProEntity.getNum()  + File.separator + "back" + File.separator + name);
-//
-//                }
-//            }
-//            //上传
-//            log.info("上传内容 ===== + " + map);
-//            uploadToOssUtil.uploadMulFiles(map);
-//            FileUtils.deleteDirectory(backpathtemp);
-//        }
-//
-//
-//        //更新旧记录
-//        rebuildVideoProgressService.updateProgressRec(requestRebuildVedioScene);
-//
-//        //往文件中写入值
-//        JSONObject reObject = new JSONObject();
-//        JSONObject Object = new JSONObject();
-//        Object.put("name",requestRebuildVedioScene.getPanoId());
-//        Object.put("x",requestRebuildVedioScene.getX());
-//        Object.put("y",requestRebuildVedioScene.getY());
-//        Object.put("width",requestRebuildVedioScene.getW());
-//        Object.put("height",requestRebuildVedioScene.getH());
-//        JSONArray arrayRe = new JSONArray();
-//        arrayRe.add(Object);
-//        reObject.put("required_videos",arrayRe);
-//
-//        JSONObject hdrObject = new JSONObject();
-//        if(StringUtils.isNotEmpty(sceneProEntity.getVideos())){
-//            JSONObject object = JSONObject.parseObject(sceneProEntity.getVideos());
-//            if(object.containsKey("data")){
-//                JSONArray array = new JSONArray();
-//                array = (JSONArray) object.get("data");
-//                arrayRe = new JSONArray();
-//                if(array.size()>0){
-//                    for(int i = 0; i < array.size(); i++) {
-//                        JSONObject obj = (JSONObject) array.get(i);
-//                        Object = new JSONObject();
-//                        Object.put("name",(String) obj.get("id"));
-//                        Object.put("value",(String) obj.get("value"));
-//                        Object.put("fov",(String) obj.get("blend_fov"));
-//                        arrayRe.add(Object);
-//                    }
-//                    hdrObject.put("hdr_param",arrayRe);
-//                }
-//            }
-//        }else{
-//            hdrObject.put("hdr_param","{}");
-//        }
-//
-//        //重新计算时需要删除文件夹,否知使用缓存
-//        log.info("开始清除result");
-//        FileUtils.delAllFile(path + File.separator + "results");
-//        log.info("清除result结束");
-//
-//        String fileId = path.split("/")[path.split("/").length - 2];
-//        log.info("fileId:" + fileId);
-//
-//        String parametr = "";
-//        parametr += sceneProEntity.getNum() + ":;" +
-//                requestRebuildVedioScene.getPanoId();
-//
-//
-//
-//        long start = System.currentTimeMillis();
-//
-//        VideoSceneProgressEntity videoSceneProgressEntity = new VideoSceneProgressEntity();
-//        videoSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
-//        videoSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
-//        videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
-//        videoSceneProgressEntity.setRebuildResult(2);
-//        videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
-//        videoSceneProgressEntity.setRebuildQueueStartTime(new Date());
-//        videoSceneProgressEntity.setHdrParam(hdrObject.toJSONString());
-//        videoSceneProgressEntity.setRebuildParam(reObject.toJSONString());
-//        rebuildVideoProgressService.save(videoSceneProgressEntity);
-//
-//        producer.sendMsg2(parametr);
-//
-//        return Result.success("视频场景计算中");
-//    }
-//
-//
-//    /**
-//     * 场景模型重新计算
-//     */
-//    @ApiOperation("场景视频重新计算")
-//    @PostMapping(value = "/rebuildPicScene")
-//    public ResultData rebuildPicScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
-//
-//        if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum())){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        String num = requestRebuildVedioScene.getSceneNum();
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(num);
-//        String path = "";
-//        if(sceneProEntity == null){
-//            throw new BaseRuntimeException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-//
-//        path = sceneProEntity.getDataSource();
-//
-//        PicSceneProgressEntity picSceneProgress = rebuildPicProgressService.findrebuildVideoProgressDetail(num,null);
-//        if(!ObjectUtils.isEmpty(picSceneProgress) && (picSceneProgress.getRebuildResult() == 2 || picSceneProgress.getRebuildResult() == 3)){
-//            return Result.failure(SceneConstant.FAILURE_CODE_5035,SceneConstant.FAILURE_MSG_5035);
-//        }
-//
-//        //更新旧记录
-//        rebuildPicProgressService.updateProgressRec(requestRebuildVedioScene);
-//
-//        //重新计算时需要删除文件夹,否知使用缓存
-//        log.info("开始清除result");
-//        FileUtils.delAllFile(path + File.separator + "results");
-//        log.info("清除result结束");
-//
-//        String fileId = path.split("/")[path.split("/").length - 2];
-//        log.info("fileId:" + fileId);
-//
-//        PicSceneProgressEntity picSceneProgressEntity = new PicSceneProgressEntity();
-//        picSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
-//        picSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
-//        picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
-//        picSceneProgressEntity.setRebuildResult(2);
-//        picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
-//        picSceneProgressEntity.setRebuildQueueStartTime(new Date());
-//        picSceneProgressEntity.setRebuildParam(JSONObject.toJSONString(requestRebuildVedioScene));
-//        rebuildPicProgressService.save(picSceneProgressEntity);
-//
-//        String parametr = picSceneProgressEntity.getId()+"";
-//        producer.sendMsgPic(parametr);
-//
-//        return Result.success("图片场景计算中");
-//    }
-//    /**
-//     * 场景视频重新计算进度
-//     */
-//    @PostMapping(value = "/rebuildVideoSceneProgress")
-//    public ResultData rebuildVideoSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
-//
-//        if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum())){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
-//        if(null == sceneProEntity){
-//            throw new BaseRuntimeException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-//
-//
-//        return Result.success(rebuildVideoProgressService.findVideoSceneProgress(requestRebuildVedioScene));
-//    }
-//
-//    /**
-//     * 场景视频重新计算进度
-//     */
-//    @PostMapping(value = "/rebuildPicSceneProgress")
-//    public ResultData rebuildPicSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
-//
-//        if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum())){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
-//        if(null == sceneProEntity){
-//            throw new BaseRuntimeException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-//
-//        ResponseVideoSceneProgress picSceneProgress = rebuildPicProgressService.findPicSceneProgress(requestRebuildVedioScene);
-//        return Result.success(picSceneProgress.getRebuildResult());
-//    }
-//
-//
-//    /**
-//     * 查看场景对应的数据,给刘强用的
-//     */
-//    @ApiIgnore
-//    @ApiOperation("查看场景对应的数据")
-//    @PostMapping(value = "/querySceneDataSource")
-//    @ApiImplicitParam(name = "num", value = "场景码", dataType = "String")
-//    public void querySceneDataSource(HttpServletRequest request,HttpServletResponse response){
-//
-//        log.info("querySceneDataSource:查询模型数据");
-//        try
-//        {
-//            response.setContentType("text/html;charset=UTF-8");
-//            String num = request.getParameter("num");
-//            if(num==null&&num.trim().equals(""))
-//            {
-//                response.getWriter().print("请输入场景号");
-//                return;
-//            }
-//            SceneEntity scene = sceneService.findBySceneNum(num);
-//            String data = null;
-//            if(scene == null) {
-//                SceneProEntity sceneProEntity = sceneProService.findBySceneNum(num);
-//                if(sceneProEntity == null){
-//                    response.getWriter().print("找不到这个场景");
-//                    return;
-//                }
-//                data = sceneProEntity.getDataSource();
-//            }else {
-//                data = scene.getDataSource();
-//            }
-//            if(data != null && !"".equals(data) && data.startsWith("http")){
-//                data = ConstantFilePath.BUILD_MODEL_PATH + data.split("/")[data.split("/").length - 2];
-//            }
-//            response.getWriter().print(data);
-//            return;
-//        }
-//        catch(Exception e){
-//            e.printStackTrace();
-//            StringWriter trace=new StringWriter();
-//            e.printStackTrace(new PrintWriter(trace));
-//            log.error(trace.toString());
-//        }
-//
-//    }
-//
-//    /**
-//     * 查看场景对应的场景码,给刘强用的
-//     */
-//    @ApiIgnore
-//    @ApiOperation("查看场景对应的场景码")
-//    @PostMapping(value = "/querySceneNum")
-//    @ApiImplicitParam(name = "path", value = "场景路径", dataType = "String")
-//    public void querySceneNum(HttpServletRequest request,HttpServletResponse response){
-//
-//        log.info("querySceneDataSource:查询模型数据");
-//        try
-//        {
-//            response.setContentType("text/html;charset=UTF-8");
-//            String path = request.getParameter("path");
-//            if(path==null&&path.trim().equals(""))
-//            {
-//                response.getWriter().print("请输入场景号");
-//                return;
-//            }
-//            path = path.split("/")[path.split("/").length - 1];
-//            SceneEntity scene = sceneService.getSceneStatusByUnicode(path, "A");
-//            String sceneNum = null;
-//            if(scene == null)
-//            {
-//                SceneProEntity sceneProEntity = sceneProService.getSceneStatusByUnicode(path, "A");
-//                if(sceneProEntity == null){
-//                    response.getWriter().print("找不到这个场景");
-//                    return;
-//                }
-//
-//                sceneNum = sceneProEntity.getNum();
-//            }else {
-//                sceneNum = scene.getNum();
-//            }
-//            response.getWriter().print(sceneNum);
-//            return;
-//        }
-//        catch(Exception e){
-//            e.printStackTrace();
-//            StringWriter trace=new StringWriter();
-//            e.printStackTrace(new PrintWriter(trace));
-//            log.error(trace.toString());
-//        }
-//
-//    }
-//
-//    /**
-//     * 查看场景对应的数据,给刘强用的
-//     */
-//    @ApiIgnore
-//    @ApiOperation("查看场景对应的数据")
-//    @PostMapping(value = "/downloadCapture")
-//    @ApiImplicitParam(name = "num", value = "场景码", dataType = "String")
-//    public void downloadCapture(HttpServletRequest request,HttpServletResponse response){
-//
-//        log.info("querySceneDataSource:查询模型数据");
-//        try
-//        {
-//            response.setContentType("text/html;charset=UTF-8");
-//            String num = request.getParameter("num");
-//            if(num==null&&num.trim().equals(""))
-//            {
-//                response.getWriter().print("请输入场景号");
-//                return;
-//            }
-//            String data = null;
-//            SceneProEntity sceneProEntity = sceneProService.findBySceneNum(num);
-//            if(sceneProEntity == null){
-//                response.getWriter().print("找不到这个场景");
-//                return;
-//            }
-//            data = sceneProEntity.getDataSource();
-//            CreateObjUtil.ossUtilCp(data.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX) + File.separator,
-//                    data + "/capture");
-//            response.getWriter().print(data);
-//            return;
-//        }
-//        catch(Exception e){
-//            e.printStackTrace();
-//            StringWriter trace=new StringWriter();
-//            e.printStackTrace(new PrintWriter(trace));
-//            log.error(trace.toString());
-//        }
-//
-//    }
-//
-//    /**
-//     * 上传results数据
-//     * @param request
-//     */
-//    @ApiIgnore
-//    @ApiOperation("上传results数据")
-//    @PostMapping(value = "/uploadResultsData")
-//    @ApiImplicitParams({
-//            @ApiImplicitParam(name = "path", value = "场景路径", dataType = "String"),
-//            @ApiImplicitParam(name = "num", value = "场景码", dataType = "String")})
-//    public ResultData uploadResultsData(HttpServletRequest request) throws Exception{
-//        String path = request.getParameter("path");
-//        String projectNum = request.getParameter("num");
-//        String type = request.getParameter("type");
-//        String oldNum = request.getParameter("oldNum");
-//
-//        if("change".equals(type)){
-//            SceneProEntity sceneProEntity = sceneProService.findBySceneNum(projectNum);
-//            if(sceneProEntity != null){
-//                sceneProService.updateStatus(projectNum, 0);
-//                return Result.success("一键换装场景存在,不重复生成");
-//            }
-//
-//            //根据旧的场景生成新的vr场景
-//            sceneProEntity = sceneProService.findBySceneNum(oldNum);
-//            if(sceneProEntity == null){
-//                return Result.failure("场景不存在");
-//            }
-//
-//            SceneProEditEntity sceneProEditEntity = sceneProEditService.findByProId(sceneProEntity.getId());
-//
-//            sceneProEntity.setId(null);
-//            sceneProEntity.setSceneType(99);
-//            sceneProEntity.setWebSite(sceneProEntity.getWebSite().replace(oldNum, projectNum));
-//            sceneProEntity.setNum(projectNum);
-//            sceneProEntity.setStatus(0);
-//            sceneProEntity.setSceneScheme(11);
-//            sceneProEntity.setSceneSource(11);
-//            sceneProEntity.setSpace(new BigInteger("0"));
-//            sceneProEntity.setCreateTime(new Date());
-//            sceneProService.save(sceneProEntity);
-//
-//            sceneProEditEntity.setId(null);
-//            sceneProEditEntity.setProId(sceneProEntity.getId());
-//            sceneProEditService.save(sceneProEditEntity);
-//
-//            JSONObject scenejson = JSONObject.parseObject(JSONObject.toJSONString(sceneProEntity));
-//            FileUtils.writeFile(ConstantFilePath.SCENE_PATH+"data/data"+projectNum+File.separator+"scene.json", scenejson.toString());
-//
-//            uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + oldNum + File.separator + "floorplan.png",
-//                    "images/images" + projectNum + File.separator + "floorplan.png");
-//            path = sceneProEntity.getDataSource();
-//        }
-//
-//        Map<String, String> map = new HashMap<>();
-//
-//        if(StringUtils.isEmpty(path) || StringUtils.isEmpty(projectNum)){
-//            return Result.failure("参数为空");
-//        }
-//
-//        boolean vision2 = false;
-//        //读取upload文件,检验需要上传的文件是否存在
-//        String uploadData = FileUtils.readFile(path + File.separator + "results" +File.separator+"upload.json");
-//        JSONObject uploadJson = null;
-//        JSONArray array = null;
-//        if(uploadData!=null) {
-//            uploadJson = JSONObject.parseObject(uploadData);
-//            array = uploadJson.getJSONArray("upload");
-//        }
-//        if(array == null){
-//            throw new Exception("upload.json数据出错");
-//        }
-//        JSONObject fileJson = null;
-//        String fileName = "";
-//        String meshfix = "";  //双模型时候会有改文件路径
-//        for(int i = 0, len = array.size(); i < len; i++){
-//            fileJson = array.getJSONObject(i);
-//            fileName = fileJson.getString("file");
-//            //文件不存在抛出异常
-//            if(!new File(path + File.separator + "results" +File.separator + fileName).exists()){
-//                throw new Exception(path + File.separator + "results" +File.separator + fileName+"文件不存在");
-//            }
-//
-//            //判断是否有vision2.txt
-//            if("vision2.txt".equals(fileName)){
-//                vision2 = true;
-//            }
-//
-//            //tex文件夹
-//            if(fileJson.getIntValue("clazz") == 2 && !fileJson.containsKey("pack-file")){
-//                if(fileName.contains("meshfix.txt")){
-//                    meshfix = fileName;
-//                }else {
-//                    map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
-//                            projectNum+"/"+ ConstantFileName.modelUUID+"_50k_texture_jpg_high1/"+fileName.replace("tex/", ""));
-//                }
-//                continue;
-//            }
-//
-//            //high文件夹
-//            if(fileJson.getIntValue("clazz") == 3){
-//                map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
-//                        projectNum+"/pan/high/"+ fileName.replace("high/", ""));
-//                continue;
-//            }
-//            //low文件夹
-//            if(fileJson.getIntValue("clazz") == 4){
-//                map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
-//                        projectNum+"/pan/low/"+ fileName.replace("low/", ""));
-//                continue;
-//            }
-//
-//            //tiles文件夹
-//            if(fileJson.getIntValue("clazz") == 5 ){
-//                map.put(path + File.separator + "results" + File.separator+ fileName,"images/images"+
-//                        projectNum+ File.separator + fileName);
-//                continue;
-//            }
-//
-//            //updown文件复制一份到ecs中并去掉换行符
-//            if(fileJson.getIntValue("clazz") == 10){
-//                String updown = FileUtils.readFile(path + File.separator + "results" +File.separator+ fileName);
-//                JSONObject updownJson = JSONObject.parseObject(updown);
-//                FileUtils.writeFile(ConstantFilePath.SCENE_PATH + "data" + File.separator + "data" + projectNum +
-//                        File.separator + fileName.replace("updown", "mapping"), updownJson.toString());
-//                continue;
-//            }
-//
-//            //video视频文件或封面图
-//            if(fileJson.getIntValue("clazz") == 11 || fileJson.getIntValue("clazz") == 12){
-//                map.put(path + File.separator + "results" + File.separator+ fileName,"video/video"+
-//                        projectNum+ File.separator + fileName.replace("videos/", ""));
-//            }
-//
-//            //2048的模型和贴图
-//            if(fileJson.getIntValue("clazz") == 16){
-//                map.put(path + File.separator + "results" + File.separator+ fileName,"data/data"+
-//                        projectNum+ File.separator + fileName);
-//            }
-//        }
-//
-//        CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k.dam");
-//        CreateObjUtil.convertDamToLzma(path + File.separator + "results");
-//        CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k.dam");
-//        //有meshfix,表示双模型
-//        if(!"".equals(meshfix)){
-//            CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+meshfix, path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k2.dam");
-//            CreateObjUtil.convertDamToLzma2(path + File.separator + "results");
-//            CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+meshfix, path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k2.dam");
-//            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam.lzma", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam.lzma");
-//            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam");
-//        }
-//        CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision.txt",path + File.separator + "results" +File.separator+"vision.modeldata");
-//        //8目相机有两个vision.txt因此第二个叫vision2.txt
-//        if(vision2){
-//            CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision2.txt",path + File.separator + "results" +File.separator+"vision2.modeldata");
-//            map.put(path + File.separator + "results" +File.separator+"vision2.modeldata", "images/images"+projectNum+"/"+"vision2.modeldata");
-//        }
-//        log.info("数据转换完成:"+projectNum);
-//
-//        File file = new File(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma");
-//        while(!file.exists())
-//        {
-//            Thread.sleep(60000);
-//        }
-//
-//        map.put(path + File.separator + "results" +File.separator+"vision.modeldata", "images/images"+projectNum+"/"+"vision.modeldata");
-//        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam.lzma");
-//        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam");
-//
-//        file = new File(ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum);
-//        if(!file.exists())
-//        {
-//            file.mkdir();
-//        }
-//        FileUtils.copyFile(path + File.separator + "results" +File.separator+"floor.json", ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum+File.separator+"floor.json", true);
-//        log.info("floor.json路径:"+ path + File.separator + "results" +File.separator+"floor.json");
-//        map.put(path + File.separator + "results" +File.separator+"floor.json","data/data"+projectNum+"/floor.json");
-//        log.info("准备上传文件到oss:"+projectNum);
-//        uploadToOssUtil.uploadMulFiles(map);
-//
-//        return Result.success("上传完成");
-//    }
-//
-//    /**
-//     * 一键换装完成修改场景状态
-//     * @param request
-//     */
-//    @ApiIgnore
-//    @ApiOperation("一键换装完成修改场景状态")
-//    @PostMapping(value = "/updateStatusByScene")
-//    @ApiImplicitParams({
-//            @ApiImplicitParam(name = "num", value = "场景码", dataType = "String")})
-//    public ResultData updateStatusByScene(HttpServletRequest request) throws Exception{
-//        String sceneNum = request.getParameter("num");
-//        String status = request.getParameter("status");
-//
-//        if(StringUtil.isEmpty(sceneNum)){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(sceneNum);
-//        if(sceneProEntity != null){
-//            sceneProEntity.setStatus(Integer.parseInt(status));
-//            sceneProService.update(sceneProEntity);
-//
-//            SceneProEditEntity sceneProEditEntity = sceneProEditService.findByProId(sceneProEntity.getId());
-//            sceneProEditEntity.setImagesVersion(sceneProEditEntity.getImagesVersion() + 1);
-//            sceneProEditEntity.setVersion(sceneProEditEntity.getVersion() + 1);
-//            sceneProEditEntity.setFloorEditVer(sceneProEditEntity.getFloorEditVer() + 1);
-//            sceneProEditEntity.setFloorPublishVer(sceneProEditEntity.getFloorPublishVer() + 1);
-//            sceneProEditEntity.setVideosUser(null);
-//            sceneProEditService.update(sceneProEditEntity);
-//        }
-//        return Result.success();
-//    }
-//
-//
-//    /**
-//     * 获取一键换装场景状态
-//     * @param request
-//     */
-//    @ApiOperation("获取一键换装场景状态")
-//    @PostMapping(value = "/getStatusByScene")
-//    @ApiImplicitParams({
-//            @ApiImplicitParam(name = "num", value = "场景码", dataType = "String")})
-//    public ResultData getStatusByScene(HttpServletRequest request) throws Exception{
-//        String sceneNum = request.getParameter("num");
-//
-//        if(StringUtil.isEmpty(sceneNum)){
-//            throw new BaseRuntimeException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
-//        }
-//
-//        SceneProEntity sceneProEntity = sceneProService.findBySceneNum(sceneNum);
-//        if(sceneProEntity != null){
-//            return Result.success(sceneProEntity.getStatus() == -2? 1 : sceneProEntity.getStatus());
-//        }
-//        return Result.success();
-//    }
-//
+    /**
+     * 场景模型重新计算
+     */
+    @PostMapping(value = "/rebuildVideoScene")
+    public ResultData rebuildVideoScene(@RequestBody RebuildVedioSceneParamVO param) throws Exception {
+        return sceneFileBuildService.rebuildVideoScene(param);
+    }
+
+
+    /**
+     * 场景模型重新计算
+     */
+    @PostMapping(value = "/rebuildPicScene")
+    public ResultData rebuildPicScene(@RequestBody RebuildVedioSceneParamVO param) throws Exception {
+        return sceneFileBuildService.rebuildPicScene(param);
+    }
+
+    /**
+     * 场景视频重新计算进度
+     */
+    @PostMapping(value = "/rebuildVideoSceneProgress")
+    public ResultData rebuildVideoSceneProgress(@RequestBody RebuildVedioSceneParamVO param) throws Exception {
+        return videoSceneProgressService.rebuildVideoSceneProgress(param);
+    }
+
+    /**
+     * 场景视频重新计算进度
+     */
+    @PostMapping(value = "/rebuildPicSceneProgress")
+    public ResultData rebuildPicSceneProgress(@RequestBody RebuildVedioSceneParamVO param) throws Exception {
+        return picSceneProgressService.rebuildPicSceneProgress(param);
+    }
+
+
+    /**
+     * 查看场景对应的数据,给刘强用的
+     */
+    @PostMapping(value = "/querySceneDataSource")
+    public ResultData querySceneDataSource(@RequestBody SceneParamVO param){
+        return sceneService.querySceneDataSource(param);
+    }
+
+    /**
+     * 查看场景对应的场景码,给刘强用的
+     */
+    @PostMapping(value = "/querySceneNum")
+    public ResultData querySceneNum(@RequestBody SceneParamVO param){
+        return sceneService.querySceneNum(param);
+    }
+
+    /**
+     * 查看场景对应的数据,给刘强用的
+     */
+    @PostMapping(value = "/downloadCapture")
+    public ResultData downloadCapture(@RequestBody SceneParamVO param) throws Exception {
+        return sceneProService.downloadCapture(param);
+    }
+
+    /**
+     * 上传results数据
+     * @param param
+     */
+    @PostMapping(value = "/uploadResultsData")
+    public ResultData uploadResultsData(@RequestBody SceneParamVO param) throws Exception{
+        return sceneProService.uploadResultsData(param);
+    }
+
+    /**
+     * 一键换装完成修改场景状态
+     * @param param
+     */
+    @PostMapping(value = "/updateStatusByScene")
+    public ResultData updateStatusByScene(@RequestBody SceneParamVO param) throws Exception{
+        return sceneProService.updateStatusByScene(param);
+    }
+
+
+    /**
+     * 获取一键换装场景状态
+     * @param request
+     */
+    @PostMapping(value = "/getStatusByScene")
+    public ResultData getStatusByScene(SceneParamVO param) throws Exception{
+        return sceneProService.getStatusByScene(param);
+    }
+
 //    /**
 //     * 获取场景详情
 //     */

+ 44 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneCooperationController.java

@@ -1,8 +1,24 @@
 package com.fdkankan.scene.controller;
 
 
+import cn.hutool.core.util.StrUtil;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.user.SSOLoginHelper;
+import com.fdkankan.common.user.SSOUser;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.vo.Camera;
+import com.fdkankan.scene.entity.SceneCooperation;
+import com.fdkankan.scene.service.ISceneCooperationService;
+import com.fdkankan.scene.vo.SceneCooperationParamVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -14,8 +30,34 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2021-12-23
  */
 @RestController
-@RequestMapping("/scene/sceneCooperation")
-public class SceneCooperationController {
+@RequestMapping("/api/user/scene/cooperation")
+public class SceneCooperationController extends BaseController {
+
+    @Autowired
+    private SSOLoginHelper ssoLoginHelper;
+    @Autowired
+    private ISceneCooperationService sceneCooperationService;
+
+    /**
+     * 协作者根据场景码获取场景资源集合
+     * @return
+     */
+    @RequestMapping(value = "/sceneResourceBySceneNum")
+    public ResultData sceneResourceBySceneNum(@RequestBody SceneCooperationParamVO param) throws Exception{
+        SSOUser ssoUser = ssoLoginHelper.loginCheck(getToken());
+
+        if(StrUtil.isEmpty(param.getSceneNum())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        // 解密获得username,用于和数据库进行对比
+        String username = JwtUtil.getUsername(getToken());
+
+        param.setUserId(ssoUser.getId());
+        param.setUserName(username);
+
+        return sceneCooperationService.sceneResourceBySceneNum(param);
+    }
 
 }
 

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -21,7 +21,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") + "\\4dkankan-center-scene";
 
         generate(path,"scene", getTables(new String[]{
-                "t_test"
+                "t_video_scene_progress","t_pic_scene_progress"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

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

@@ -1,7 +1,10 @@
 package com.fdkankan.scene.service;
 
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.SceneCooperation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.vo.SceneCooperationParamVO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * <p>
@@ -19,4 +22,6 @@ public interface ISceneCooperationService extends IService<SceneCooperation> {
 
     SceneCooperation findBySceneNum(String sceneNum);
 
+    ResultData sceneResourceBySceneNum(SceneCooperationParamVO param) throws Exception;
+
 }

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneFileBuildService.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.service;
 import com.fdkankan.scene.entity.SceneFileBuild;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.scene.vo.BuildSceneParamVO;
+import com.fdkankan.scene.vo.RebuildVedioSceneParamVO;
 import com.fdkankan.scene.vo.ResponseSceneFile;
 import com.fdkankan.common.response.ResultData;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -49,4 +50,9 @@ public interface ISceneFileBuildService extends IService<SceneFileBuild> {
 
     ResultData rebuildScene(String sceneCode) throws Exception;
 
+    ResultData rebuildVideoScene(RebuildVedioSceneParamVO param) throws Exception;
+
+    ResultData rebuildPicScene(@RequestBody RebuildVedioSceneParamVO param) throws Exception;
+
+
 }

+ 10 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java

@@ -6,8 +6,10 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProPO;
 import com.fdkankan.scene.vo.SceneEditParamVO;
+import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
 import com.fdkankan.scene.vo.FileParamVO;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -181,6 +183,14 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ResultData downloadTexData(SceneEditParamVO param) throws Exception ;
 
+    ResultData downloadCapture(@RequestBody SceneParamVO param) throws Exception;
+
+    ResultData uploadResultsData(SceneParamVO param) throws Exception;
+
+    ResultData updateStatusByScene(SceneParamVO param) throws Exception;
+
+    ResultData getStatusByScene(SceneParamVO param) throws Exception;
+
 
 
 

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

@@ -61,7 +61,7 @@ public interface ISceneService extends IService<Scene> {
 
     IPage<SceneVO> queryByParamNew(SceneParamVO param) throws Exception;
 
-    ScenePO findBySceneNum(String sceneNum) throws Exception;
+    ScenePO findBySceneNum(String sceneNum);
 
     Scene getSceneBySceneCode(String sceneCode);
 
@@ -93,6 +93,10 @@ public interface ISceneService extends IService<Scene> {
 
     Page loadAllScene2(SceneParamVO param);
 
+    ResultData querySceneDataSource(SceneParamVO param);
+
+    ResultData querySceneNum(SceneParamVO param);
+
 
 
 }

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

@@ -1,16 +1,31 @@
 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.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.RecStatus;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.user.SSOLoginHelper;
+import com.fdkankan.common.user.SSOUser;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.vo.Camera;
 import com.fdkankan.scene.entity.Scene3dfamily;
 import com.fdkankan.scene.entity.SceneCooperation;
+import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.mapper.ISceneCooperationMapper;
 import com.fdkankan.scene.service.ISceneCooperationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.scene.service.ISceneProService;
+import com.fdkankan.scene.service.ISceneResourceService;
+import com.fdkankan.scene.vo.SceneCooperationParamVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.Calendar;
 import java.util.List;
@@ -27,6 +42,15 @@ import java.util.Objects;
 @Service
 public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMapper, SceneCooperation> implements ISceneCooperationService {
 
+    @Autowired
+    SSOLoginHelper ssoLoginHelper;
+    @Autowired
+    PlatformGoodsClient platformGoodsClient;
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    ISceneResourceService sceneResourceService;
+
     @Override
     public void updateRecStatus(String sceneNum) {
         this.update(new LambdaUpdateWrapper<SceneCooperation>()
@@ -57,4 +81,27 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
         return list.get(0);
     }
 
+    @Override
+    public ResultData sceneResourceBySceneNum(SceneCooperationParamVO param) throws Exception{
+
+        ResultData<Camera> cameraResult = platformGoodsClient.getCameraByChildName(param.getUserName());
+        Camera camera = cameraResult.getData();
+        if(camera != null){
+            return ResultData.ok();
+        }
+
+        SceneCooperation sceneCooperation = this.findBySceneNum(param.getSceneNum());
+        //若数据为空表示可操作全部资源
+        if(sceneCooperation == null || !sceneCooperation.getUserId().equals(param.getUserId())){
+            return ResultData.ok();
+        }
+
+        ScenePro scenePro= sceneProService.findBySceneNum(param.getSceneNum());
+        if(scenePro != null && scenePro.getUserId().equals(sceneCooperation.getUserId())){
+            return ResultData.ok();
+        }
+
+        return ResultData.ok(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
+    }
+
 }

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

@@ -27,10 +27,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneFileBuildMapper;
 import com.fdkankan.scene.service.*;
-import com.fdkankan.scene.vo.BuildSceneParamVO;
-import com.fdkankan.scene.vo.ResponseSceneFile;
-import com.fdkankan.scene.vo.SceneParamVO;
-import com.fdkankan.scene.vo.SceneVO;
+import com.fdkankan.scene.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang3.StringUtils;
@@ -97,11 +94,20 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     @Value("${rocketmq.build-scene.topicName.topic-laser-a}")
     private String topicLaserA;
 
+    @Value("${rocketmq.build-scene.topicName.topic-video-a}")
+    private String topicVideoA;
+
+    @Value("${rocketmq.build-scene.topicName.topic-pic-a}")
+    private String topicPicA;
+
+    @Autowired
+    IPicSceneProgressService picSceneProgressService;
+    @Autowired
+    IVideoSceneProgressService videoSceneProgressService;
     @Autowired
     PlatformGoodsClient platformGoodsClient;
     @Autowired
     PlatformUserClient platformUserClient;
-
     @Autowired
     ISceneFileUploadService sceneFileUploadService;
     @Autowired
@@ -2128,6 +2134,188 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return ResultData.ok();
     }
 
+    public ResultData rebuildVideoScene(RebuildVedioSceneParamVO param) throws Exception {
+
+        if(StringUtils.isEmpty(param.getSceneNum()) || StringUtils.isEmpty(param.getPanoId())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        String num = param.getSceneNum();
+
+        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        SceneProExt sceneProExt = null;
+        ScenePO scene = null;
+        String path = "";
+        if(scenePro == null){
+            scene = sceneService.findBySceneNum(num);
+            if(scene == null){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }else {
+                path = ConstantFilePath.BUILD_MODEL_PATH + scene.getDataSource().split("/")[scene.getDataSource().split("/").length - 2];
+            }
+        }else {
+            sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+            path = sceneProExt.getDataSource();
+        }
+
+        //先从备份文件下拉取
+        CreateObjUtil.ossUtilCp("video/video" +scenePro.getSceneCode()  + File.separator + "back" + File.separator,
+                sceneProExt.getDataSource() + "_rv" + File.separator + "videoback_temp");
+
+        String backpathtemp = sceneProExt.getDataSource() + "_rv" + File.separator + "videoback_temp";
+        File fileback = new File(backpathtemp);
+        File[] filebackList = fileback.listFiles();
+
+        if(filebackList.length<=0){
+            String backpath = sceneProExt.getDataSource() + "_rv" + File.separator + "videoback";
+            log.info("------------------" +  backpath);
+
+            File file = new File(backpath);
+
+            //验证video 文件夹下是否有备份
+            CreateObjUtil.ossUtilCp("video/video" +scenePro.getSceneCode()  + File.separator,
+                    sceneProExt.getDataSource() + "_rv" + File.separator + "videoback");
+
+            String name = "";
+            Map<String,String> map = new HashMap<>();
+            file = new File(backpath);
+            File[] fileList = file.listFiles();
+            if(fileList.length>0){
+                for(File f:fileList){
+                    name = f.getName();
+                    log.info("file name :" + name);
+                    map.put(sceneProExt.getDataSource() + "_rv" + File.separator + "videoback" + File.separator + name,
+                            "video/video" +scenePro.getSceneCode()  + File.separator + "back" + File.separator + name);
+
+                }
+            }
+            //上传
+            log.info("上传内容 ===== + " + map);
+            uploadToOssUtil.uploadMulFiles(map);
+            FileUtils.deleteDirectory(backpathtemp);
+        }
+
+
+        //更新旧记录
+        videoSceneProgressService.updateProgressRec(param);
+
+        //往文件中写入值
+        JSONObject reObject = new JSONObject();
+        JSONObject Object = new JSONObject();
+        Object.put("name",param.getPanoId());
+        Object.put("x",param.getX());
+        Object.put("y",param.getY());
+        Object.put("width",param.getW());
+        Object.put("height",param.getH());
+        JSONArray arrayRe = new JSONArray();
+        arrayRe.add(Object);
+        reObject.put("required_videos",arrayRe);
+
+        JSONObject hdrObject = new JSONObject();
+        if(StringUtils.isNotEmpty(scenePro.getVideos())){
+            JSONObject object = JSONObject.parseObject(scenePro.getVideos());
+            if(object.containsKey("data")){
+                JSONArray array = new JSONArray();
+                array = (JSONArray) object.get("data");
+                arrayRe = new JSONArray();
+                if(array.size()>0){
+                    for(int i = 0; i < array.size(); i++) {
+                        JSONObject obj = (JSONObject) array.get(i);
+                        Object = new JSONObject();
+                        Object.put("name",(String) obj.get("id"));
+                        Object.put("value",(String) obj.get("value"));
+                        Object.put("fov",(String) obj.get("blend_fov"));
+                        arrayRe.add(Object);
+                    }
+                    hdrObject.put("hdr_param",arrayRe);
+                }
+            }
+        }else{
+            hdrObject.put("hdr_param","{}");
+        }
+
+        //重新计算时需要删除文件夹,否知使用缓存
+        log.info("开始清除result");
+        FileUtils.delAllFile(path + File.separator + "results");
+        log.info("清除result结束");
+
+        String fileId = path.split("/")[path.split("/").length - 2];
+        log.info("fileId:" + fileId);
+
+        String parametr = "";
+        parametr += scenePro.getSceneCode() + ":;" +
+                param.getPanoId();
+
+
+
+        long start = System.currentTimeMillis();
+
+        VideoSceneProgress videoSceneProgress= new VideoSceneProgress();
+        videoSceneProgress.setSceneCode(scenePro.getSceneCode());
+        videoSceneProgress.setVideoName(param.getPanoId());
+        videoSceneProgress.setDataSource(sceneProExt.getDataSource());
+        videoSceneProgress.setRebuildResult(2);
+        videoSceneProgress.setDataSource(sceneProExt.getDataSource());
+        videoSceneProgress.setRebuildQueueStartTime(new Date());
+        videoSceneProgress.setHdrParam(hdrObject.toJSONString());
+        videoSceneProgress.setRebuildParam(reObject.toJSONString());
+        videoSceneProgressService.save(videoSceneProgress);
+
+        mqProducer.syncSend(topicVideoA, parametr);
+
+        return ResultData.ok();
+    }
+
+    public ResultData rebuildPicScene(@RequestBody RebuildVedioSceneParamVO param) throws Exception {
+
+        if(StringUtils.isEmpty(param.getSceneNum())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        String num = param.getSceneNum();
+
+        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        String path = "";
+        if(scenePro == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+
+        path = sceneProExt.getDataSource();
+
+        PicSceneProgress picSceneProgressFromDb = picSceneProgressService.findrebuildVideoProgressDetail(num,null);
+        if(!ObjectUtils.isEmpty(picSceneProgressFromDb) && (picSceneProgressFromDb.getRebuildResult() == 2 || picSceneProgressFromDb.getRebuildResult() == 3)){
+            return ResultData.error(ErrorCode.FAILURE_CODE_5035);
+        }
+
+        //更新旧记录
+        picSceneProgressService.updateProgressRec(param);
+
+        //重新计算时需要删除文件夹,否知使用缓存
+        log.info("开始清除result");
+        FileUtils.delAllFile(path + File.separator + "results");
+        log.info("清除result结束");
+
+        String fileId = path.split("/")[path.split("/").length - 2];
+        log.info("fileId:" + fileId);
+
+        PicSceneProgress picSceneProgress = new PicSceneProgress();
+        picSceneProgress.setSceneCode(scenePro.getSceneCode());
+        picSceneProgress.setVideoName(param.getPanoId());
+        picSceneProgress.setDataSource(sceneProExt.getDataSource());
+        picSceneProgress.setRebuildResult(2);
+        picSceneProgress.setDataSource(sceneProExt.getDataSource());
+        picSceneProgress.setRebuildQueueStartTime(new Date());
+        picSceneProgress.setRebuildParam(JSONObject.toJSONString(param));
+        picSceneProgressService.save(picSceneProgress);
+
+        String parametr = picSceneProgress.getId()+"";
+        mqProducer.syncSend(topicPicA, parametr);
+
+        return ResultData.ok();
+    }
+
+
     public static void main(String[] args) {
 //        ScenePro scenePro = new ScenePro();
 //        scenePro.setCameraId(1l);

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

@@ -1,5 +1,6 @@
 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.util.StrUtil;
@@ -23,12 +24,10 @@ import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
-import com.fdkankan.scene.vo.FileParamVO;
-import com.fdkankan.scene.vo.SceneEditParamVO;
-import com.fdkankan.scene.vo.SceneProVO;
-import com.fdkankan.scene.vo.SceneVO;
+import com.fdkankan.scene.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import net.coobird.thumbnailator.Thumbnails;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,8 +35,10 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -100,6 +101,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneDataDownloadService sceneDataDownloadService;
     @Autowired
     PlatformGoodsClient platformGoodsClient;
+    @Autowired
+    ISceneProService sceneProService;
 
     @Override
     public List<SceneVO> convert(List<ScenePro> list){
@@ -4695,6 +4698,254 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
     }
 
+    @Override
+    public ResultData downloadCapture(SceneParamVO param) throws Exception {
+
+        log.info("querySceneDataSource:查询模型数据");
+        String num = param.getNum();
+        if(num==null&&num.trim().equals(""))
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7002);
+        String data = null;
+        ScenePro scenePro= sceneProService.findBySceneNum(num);
+        if(scenePro == null)
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+        data = sceneProExt.getDataSource();
+        CreateObjUtil.ossUtilCp(data.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX) + File.separator,
+                data + "/capture");
+        return ResultData.ok(data);
+
+    }
+
+    public ResultData uploadResultsData(SceneParamVO param) throws Exception{
+        String path = param.getPath();
+        String projectNum = param.getNum();
+        String type = param.getType();
+        String oldNum = param.getOldNum();
+
+        if("change".equals(type)){
+            ScenePro scenePro = sceneProService.findBySceneNum(projectNum);
+            if(scenePro != null){
+                sceneProService.updateStatus(projectNum, SceneStatus.wait.code());
+                return ResultData.ok("一键换装场景存在,不重复生成");
+            }
+
+            //根据旧的场景生成新的vr场景
+            scenePro = sceneProService.findBySceneNum(oldNum);
+            if(scenePro == null)
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+
+
+            SceneProEdit sceneProEdit = sceneProEditService.findByProId(scenePro.getId());
+            SceneProEditExt sceneProEditExt = sceneProEditExtService.getByProEditId(sceneProEdit.getId());
+
+
+            scenePro.setId(null);
+            scenePro.setSceneType(99);
+            scenePro.setWebSite(scenePro.getWebSite().replace(oldNum, projectNum));
+            scenePro.setSceneCode(projectNum);
+            scenePro.setSceneStatus(0);
+            scenePro.setSceneScheme(11);
+            scenePro.setCreateTime(new Date());
+            sceneProService.save(scenePro);
+            sceneProExt.setSceneSource(11);
+            sceneProExt.setSpace(new Long("0"));
+            sceneProExt.setId(null);
+            sceneProExt.setSceneProId(scenePro.getId());
+            sceneProExtService.save(sceneProExt);
+
+            sceneProEdit.setId(null);
+            sceneProEdit.setProId(scenePro.getId());
+            sceneProEditService.save(sceneProEdit);
+            sceneProEditExt.setId(null);
+            sceneProEditExt.setProEditId(sceneProEdit.getId());
+            sceneProEditExtService.save(sceneProEditExt);
+
+            SceneProPO sceneProPO = new SceneProPO();
+            BeanUtil.copyProperties(sceneProExt, sceneProPO);
+            BeanUtil.copyProperties(scenePro, sceneProPO);
+
+            JSONObject scenejson = JSONObject.parseObject(JSONObject.toJSONString(sceneProPO));
+            FileUtils.writeFile(ConstantFilePath.SCENE_PATH+"data/data"+projectNum+File.separator+"scene.json", scenejson.toString());
+
+            uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + oldNum + File.separator + "floorplan.png",
+                    "images/images" + projectNum + File.separator + "floorplan.png");
+            path = sceneProExt.getDataSource();
+        }
+
+        Map<String, String> map = new HashMap<>();
+
+        if(StringUtils.isEmpty(path) || StringUtils.isEmpty(projectNum)){
+            return ResultData.error(ErrorCode.PARAM_REQUIRED);
+        }
+
+        boolean vision2 = false;
+        //读取upload文件,检验需要上传的文件是否存在
+        String uploadData = FileUtils.readFile(path + File.separator + "results" +File.separator+"upload.json");
+        JSONObject uploadJson = null;
+        JSONArray array = null;
+        if(uploadData!=null) {
+            uploadJson = JSONObject.parseObject(uploadData);
+            array = uploadJson.getJSONArray("upload");
+        }
+        if(array == null){
+            throw new Exception("upload.json数据出错");
+        }
+        JSONObject fileJson = null;
+        String fileName = "";
+        String meshfix = "";  //双模型时候会有改文件路径
+        for(int i = 0, len = array.size(); i < len; i++){
+            fileJson = array.getJSONObject(i);
+            fileName = fileJson.getString("file");
+            //文件不存在抛出异常
+            if(!new File(path + File.separator + "results" +File.separator + fileName).exists()){
+                throw new Exception(path + File.separator + "results" +File.separator + fileName+"文件不存在");
+            }
+
+            //判断是否有vision2.txt
+            if("vision2.txt".equals(fileName)){
+                vision2 = true;
+            }
+
+            //tex文件夹
+            if(fileJson.getIntValue("clazz") == 2 && !fileJson.containsKey("pack-file")){
+                if(fileName.contains("meshfix.txt")){
+                    meshfix = fileName;
+                }else {
+                    map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
+                            projectNum+"/"+ ConstantFileName.modelUUID+"_50k_texture_jpg_high1/"+fileName.replace("tex/", ""));
+                }
+                continue;
+            }
+
+            //high文件夹
+            if(fileJson.getIntValue("clazz") == 3){
+                map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
+                        projectNum+"/pan/high/"+ fileName.replace("high/", ""));
+                continue;
+            }
+            //low文件夹
+            if(fileJson.getIntValue("clazz") == 4){
+                map.put(path + File.separator + "results" +File.separator+ fileName,"images/images"+
+                        projectNum+"/pan/low/"+ fileName.replace("low/", ""));
+                continue;
+            }
+
+            //tiles文件夹
+            if(fileJson.getIntValue("clazz") == 5 ){
+                map.put(path + File.separator + "results" + File.separator+ fileName,"images/images"+
+                        projectNum+ File.separator + fileName);
+                continue;
+            }
+
+            //updown文件复制一份到ecs中并去掉换行符
+            if(fileJson.getIntValue("clazz") == 10){
+                String updown = FileUtils.readFile(path + File.separator + "results" +File.separator+ fileName);
+                JSONObject updownJson = JSONObject.parseObject(updown);
+                FileUtils.writeFile(ConstantFilePath.SCENE_PATH + "data" + File.separator + "data" + projectNum +
+                        File.separator + fileName.replace("updown", "mapping"), updownJson.toString());
+                continue;
+            }
+
+            //video视频文件或封面图
+            if(fileJson.getIntValue("clazz") == 11 || fileJson.getIntValue("clazz") == 12){
+                map.put(path + File.separator + "results" + File.separator+ fileName,"video/video"+
+                        projectNum+ File.separator + fileName.replace("videos/", ""));
+            }
+
+            //2048的模型和贴图
+            if(fileJson.getIntValue("clazz") == 16){
+                map.put(path + File.separator + "results" + File.separator+ fileName,"data/data"+
+                        projectNum+ File.separator + fileName);
+            }
+        }
+
+        CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k.dam");
+        CreateObjUtil.convertDamToLzma(path + File.separator + "results");
+        CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k.dam");
+        //有meshfix,表示双模型
+        if(!"".equals(meshfix)){
+            CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+meshfix, path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k2.dam");
+            CreateObjUtil.convertDamToLzma2(path + File.separator + "results");
+            CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+meshfix, path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k2.dam");
+            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam.lzma", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam.lzma");
+            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam");
+        }
+        CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision.txt",path + File.separator + "results" +File.separator+"vision.modeldata");
+        //8目相机有两个vision.txt因此第二个叫vision2.txt
+        if(vision2){
+            CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision2.txt",path + File.separator + "results" +File.separator+"vision2.modeldata");
+            map.put(path + File.separator + "results" +File.separator+"vision2.modeldata", "images/images"+projectNum+"/"+"vision2.modeldata");
+        }
+        log.info("数据转换完成:"+projectNum);
+
+        File file = new File(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma");
+        while(!file.exists())
+        {
+            Thread.sleep(60000);
+        }
+
+        map.put(path + File.separator + "results" +File.separator+"vision.modeldata", "images/images"+projectNum+"/"+"vision.modeldata");
+        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam.lzma");
+        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam", "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam");
+
+        file = new File(ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum);
+        if(!file.exists())
+        {
+            file.mkdir();
+        }
+        FileUtils.copyFile(path + File.separator + "results" +File.separator+"floor.json", ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum+File.separator+"floor.json", true);
+        log.info("floor.json路径:"+ path + File.separator + "results" +File.separator+"floor.json");
+        map.put(path + File.separator + "results" +File.separator+"floor.json","data/data"+projectNum+"/floor.json");
+        log.info("准备上传文件到oss:"+projectNum);
+        uploadToOssUtil.uploadMulFiles(map);
+
+        return ResultData.ok("上传完成");
+    }
+
+    @Override
+    public ResultData updateStatusByScene(SceneParamVO param) throws Exception{
+        String sceneNum = param.getNum();
+        Integer status = param.getStatus();
+
+        if(StrUtil.isEmpty(sceneNum)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
+        if(scenePro != null){
+            scenePro.setSceneStatus(status);
+            sceneProService.updateById(scenePro);
+
+            SceneProEdit sceneProEdit = sceneProEditService.findByProId(scenePro.getId());
+            SceneProEditExt sceneProEditExt = sceneProEditExtService.getByProEditId(sceneProEdit.getId());
+            sceneProEdit.setVersion(sceneProEdit.getVersion() + 1);
+            sceneProEdit.setFloorEditVer(sceneProEdit.getFloorEditVer() + 1);
+            sceneProEdit.setFloorPublishVer(sceneProEdit.getFloorPublishVer() + 1);
+            sceneProEditService.updateById(sceneProEdit);
+            sceneProEditExt.setImagesVersion(sceneProEditExt.getImagesVersion() + 1);
+            sceneProEditExt.setVideosUser(null);
+            sceneProEditExtService.updateById(sceneProEditExt);
+        }
+        return ResultData.ok();
+    }
+
+    @Override
+    public ResultData getStatusByScene(SceneParamVO param) throws Exception{
+        String sceneNum = param.getNum();
+
+        if(StrUtil.isEmpty(sceneNum)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
+        if(scenePro != null){
+            return ResultData.ok(scenePro.getSceneStatus() == -2? 1 : scenePro.getSceneStatus());
+        }
+        return ResultData.ok();
+    }
+
 
 
 

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

@@ -45,6 +45,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
@@ -1170,6 +1172,53 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         return result;
     }
 
+    @Override
+    public ResultData querySceneDataSource(SceneParamVO param){
+
+        log.info("querySceneDataSource:查询模型数据");
+        String num = param.getNum();
+        if(StrUtil.isEmpty(num))
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7002);
+        ScenePO scene = sceneService.findBySceneNum(num);
+        String data = null;
+        if(scene == null) {
+            ScenePro scenePro = sceneProService.findBySceneNum(num);
+            if(scenePro == null)
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+            data = sceneProExt.getDataSource();
+        }else {
+            data = scene.getDataSource();
+        }
+        if(data != null && !"".equals(data) && data.startsWith("http")){
+            data = ConstantFilePath.BUILD_MODEL_PATH + data.split("/")[data.split("/").length - 2];
+        }
+        return ResultData.ok(data);
+
+    }
+
+    @Override
+    public ResultData querySceneNum(SceneParamVO param){
+        log.info("querySceneDataSource:查询模型数据");
+        String path = param.getPath();
+        if(path==null&&path.trim().equals(""))
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7002);
+        path = path.split("/")[path.split("/").length - 1];
+        Scene scene = sceneService.getSceneStatusByUnicode(path, "A");
+        String sceneNum = null;
+        if(scene == null)
+        {
+            SceneProPO scenePro = sceneProService.getSceneStatusByUnicode(path, "A");
+            if(scenePro == null)
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+
+            sceneNum = scenePro.getSceneCode();
+        }else {
+            sceneNum = scene.getSceneCode();
+        }
+        return ResultData.ok(sceneNum);
+    }
+
 
 
 }

+ 28 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/RebuildVedioSceneParamVO.java

@@ -0,0 +1,28 @@
+package com.fdkankan.scene.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class RebuildVedioSceneParamVO extends RequestBase implements Serializable {
+
+    private String sceneNum;
+
+    private String panoId;
+
+    private String x;
+
+    private String y;
+
+    private String w;
+
+    private String h;
+
+
+    private List<Map<String,Object>> images;
+
+}

+ 28 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneCooperationParamVO.java

@@ -0,0 +1,28 @@
+package com.fdkankan.scene.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Created by Hb_zzZ on 2020/7/21.
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SceneCooperationParamVO {
+
+    private Long id;
+
+    private String sceneNum;
+
+    private Long userId;
+
+    private String userName;
+
+    private String resourceIds;
+
+    private Long cameraId;
+}

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneParamVO.java

@@ -167,4 +167,10 @@ public class SceneParamVO extends RequestBase implements Serializable {
 
     private String likeNum;
 
+    private String path;
+
+    private String oldNum;
+
+    private Integer status;
+
 }

+ 24 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/VideoSceneProgressVO.java

@@ -0,0 +1,24 @@
+package com.fdkankan.scene.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 视频进度返回
+ */
+@Data
+public class VideoSceneProgressVO implements Serializable {
+
+    private static final long serialVersionUID = 661912133849676944L;
+
+    private Long id;
+
+    private int rebuildResult;
+
+    private String videoName;
+
+
+
+
+}