|
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fdkankan.common.constant.SceneConstant;
|
|
|
import com.fdkankan.common.constant.SceneKind;
|
|
|
+import com.fdkankan.common.constant.SceneVersionType;
|
|
|
import com.fdkankan.common.exception.BusinessException;
|
|
|
import com.fdkankan.common.util.*;
|
|
|
import com.fdkankan.model.constants.UploadFilePath;
|
|
@@ -24,6 +25,7 @@ import com.fdkankan.image.MatrixToImageWriterUtil;
|
|
|
import com.fdkankan.ucenter.common.constants.ConstantFilePath;
|
|
|
import com.fdkankan.redis.util.RedisUtil;
|
|
|
import com.fdkankan.ucenter.common.constants.NacosProperty;
|
|
|
+import com.fdkankan.ucenter.common.constants.ResultCode;
|
|
|
import com.fdkankan.ucenter.common.utils.ShellUtil;
|
|
|
import com.fdkankan.ucenter.constant.CameraConstant;
|
|
|
import com.fdkankan.ucenter.constant.LoginConstant;
|
|
@@ -33,6 +35,7 @@ import com.fdkankan.ucenter.mapper.ISceneProMapper;
|
|
|
import com.fdkankan.ucenter.mapper.ISceneUpgradeMapper;
|
|
|
import com.fdkankan.ucenter.service.*;
|
|
|
import com.fdkankan.ucenter.util.DateUserUtil;
|
|
|
+import com.fdkankan.ucenter.util.SceneResourcePath;
|
|
|
import com.fdkankan.ucenter.vo.ResponseScene;
|
|
|
import com.fdkankan.ucenter.vo.request.RequestScene;
|
|
|
import com.fdkankan.ucenter.vo.request.SceneParam;
|
|
@@ -112,6 +115,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
@Autowired
|
|
|
private ISceneProEditService sceneProEditService;
|
|
|
@Autowired
|
|
|
+ private SceneCommonService sceneCommonService;
|
|
|
+ @Autowired
|
|
|
private RedisUtil redisUtil;
|
|
|
@Autowired
|
|
|
private ISceneUpgradeMapper sceneUpgradeMapper;
|
|
@@ -120,6 +125,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
@Autowired
|
|
|
LaserService laserService;
|
|
|
@Autowired
|
|
|
+ private FYunFileServiceInterface fYunFileServiceInterface;
|
|
|
+ @Autowired
|
|
|
ISceneDelLogService sceneDelLogService;
|
|
|
|
|
|
@Value("${scene.pro.url}")
|
|
@@ -697,27 +704,23 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
}
|
|
|
|
|
|
String newNum = scene3dNumService.generateSceneNum(detailEntity.getType());
|
|
|
- String title = scenePro == null ? scenePlus.getTitle() : scenePro.getSceneName();
|
|
|
- String newTitle = title.concat("(copy)");
|
|
|
|
|
|
Long sceneId = scenePro == null ? scenePlus.getId() :scenePro.getId();
|
|
|
Long newSceneId = null;
|
|
|
FolderScene folderScene = folderSceneService.getByType(sceneId, null);
|
|
|
- String time = DateUtil.date2String(new Date(),DateUtil.YYYYMMDDHHMMSSSSS_DATA_FORMAT);
|
|
|
|
|
|
if(scenePro !=null){ //v3场景复制
|
|
|
- log.info("场景复制--V3--OldNum:{},oldTitle:{},newNum:{},newTitle:{}",
|
|
|
- scenePro.getNum(),scenePro.getSceneName(),newNum,newTitle);
|
|
|
- scenePro.setSceneName(newTitle);
|
|
|
- newSceneId = this.copyV3Scene(scenePro, newNum, detailEntity,time);
|
|
|
+ log.info("场景复制--V3--OldNum:{},oldTitle:{},newNum:{},", scenePro.getNum(),scenePro.getSceneName(),newNum);
|
|
|
+
|
|
|
+ newSceneId = this.copyV3Scene(scenePro, newNum, detailEntity);
|
|
|
}
|
|
|
if(scenePlus != null){ //v4场景复制
|
|
|
- log.info("场景复制--V4--OldNum:{},oldTitle:{},newNum:{},newTitle:{}",
|
|
|
- scenePlus.getNum(),scenePlus.getTitle(),newNum,newTitle);
|
|
|
- scenePlus.setTitle(newTitle);
|
|
|
- newSceneId = scenePlusService.copyV4Scene(scenePlus,newNum,detailEntity,time);
|
|
|
+ log.info("场景复制--V4--OldNum:{},oldTitle:{},newNum:{}", scenePlus.getNum(),scenePlus.getTitle(),newNum);
|
|
|
+
|
|
|
+ newSceneId = scenePlusService.copyV4Scene(scenePlus,newNum,detailEntity);
|
|
|
}
|
|
|
log.info("场景复制--完成--sceneId:{}",newSceneId);
|
|
|
+
|
|
|
if(newSceneId != null && folderScene!= null){
|
|
|
folderScene.setId(null);
|
|
|
folderScene.setSceneId(newSceneId);
|
|
@@ -739,221 +742,109 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public Long copyV3Scene(ScenePro oldScene,String newNum,CameraDetail cameraDetail,String time) throws Exception {
|
|
|
- SceneProEdit oldEditScene = sceneProEditService.getByProId(oldScene.getId());
|
|
|
-
|
|
|
- String oldNum = oldScene.getNum();
|
|
|
- //复制数据库数据
|
|
|
- oldScene.setId(null);
|
|
|
- oldScene.setStatus(0);
|
|
|
- oldScene.setNum(newNum);
|
|
|
- oldScene.setWebSite(oldScene.getWebSite().replace(oldNum, newNum));
|
|
|
- oldScene.setThumb(oldScene.getThumb().replace(oldNum, newNum));
|
|
|
- oldScene.setVideos(this.setVideos(oldScene.getVideos(),oldNum,newNum));
|
|
|
- oldScene.setViewCount(0);
|
|
|
- String preDataSource = oldScene.getDataSource();
|
|
|
- String newDataSource = this.setDataSource(preDataSource,time);
|
|
|
- oldScene.setDataSource(newDataSource);
|
|
|
-
|
|
|
- this.save(oldScene);
|
|
|
- if(oldScene.getSceneSource() == 4){ //深时复制
|
|
|
- laserService.copy(oldNum,oldScene.getCameraId(),oldScene.getCreateTime(),newNum,0,null,
|
|
|
- oldEditScene.getSceneKey(),oldScene.getSceneName(),oldScene.getUserId(),"V3",oldScene.getIsObj());
|
|
|
- }
|
|
|
- //更新video
|
|
|
- Map map = new HashMap();
|
|
|
- JSONObject object = new JSONObject();
|
|
|
- if(StringUtils.isNotEmpty(oldScene.getVideos())){
|
|
|
- object = JSONObject.parseObject(oldScene.getVideos());
|
|
|
- if(object.containsKey("upPath")){
|
|
|
- String upPath = object.getString("upPath");
|
|
|
- upPath = upPath.replace(oldNum,newNum);
|
|
|
- object.put("upPath",upPath);
|
|
|
- }
|
|
|
- oldScene.setVideos(object.toJSONString());
|
|
|
- log.info("更新 scene.json");
|
|
|
- map.put("videos",oldScene.getVideos());
|
|
|
- }
|
|
|
- map.put("sceneName",oldScene.getSceneName());
|
|
|
- map.put("webSite",oldScene.getWebSite());
|
|
|
- map.put("thumb",oldScene.getThumb());
|
|
|
- map.put("num",oldScene.getNum());
|
|
|
- map.put("id",oldScene.getId());
|
|
|
- map.put("dataSource",oldScene.getDataSource());
|
|
|
-
|
|
|
- //复制完成更新相机容量
|
|
|
-
|
|
|
- oldEditScene.setId(null);
|
|
|
- oldEditScene.setProId(oldScene.getId());
|
|
|
- oldEditScene.setScreencapVoiceSrc(oldEditScene.getScreencapVoiceSrc() == null ? null : oldEditScene.getScreencapVoiceSrc().replace(oldNum, newNum));
|
|
|
- oldEditScene.setScreencapVoiceSound(oldEditScene.getScreencapVoiceSound() == null ? null : oldEditScene.getScreencapVoiceSound().replace(oldNum, newNum));
|
|
|
- oldEditScene.setScreencapVoiceSoundsync(oldEditScene.getScreencapVoiceSoundsync() == null ? null : oldEditScene.getScreencapVoiceSoundsync().replace(oldNum, newNum));
|
|
|
- oldEditScene.setPlayData(oldEditScene.getPlayData() == null ? null : oldEditScene.getPlayData().replace(oldNum, newNum));
|
|
|
- oldEditScene.setScreencapThumb(oldEditScene.getScreencapThumb() == null ? null : oldEditScene.getScreencapThumb().replace(oldNum, newNum));
|
|
|
- oldEditScene.setFloorPlanPng(oldEditScene.getFloorPlanPng() == null ? null : oldEditScene.getFloorPlanPng().replace(oldNum, newNum));
|
|
|
- sceneProEditService.save(oldEditScene);
|
|
|
-
|
|
|
- this.setQrCode(oldScene.getBuildType(), oldScene.getNum());
|
|
|
- ExecutorService executor = ThreadUtil.newSingleExecutor();
|
|
|
- try {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- try {
|
|
|
- log.info("开始复制场景-{}", new Date());
|
|
|
- String buildModelPath = ConstantFilePath.BUILD_MODEL_PATH;
|
|
|
- if(oldScene.getSceneSource().equals(4)){
|
|
|
- buildModelPath = ConstantFilePath.BUILD_MODEL_LASER_PATH;
|
|
|
- }
|
|
|
- this.copyFdage(preDataSource,newDataSource,buildModelPath,time);
|
|
|
- //oss复制计算结果资源
|
|
|
- downloadFromOldNumFromOss(oldNum, newNum);
|
|
|
- // 复制本地secen.json
|
|
|
- copyOldSceneLocalToNew(oldNum, newNum);
|
|
|
- FileUtils.writeJsonFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + File.separator + "scene.json", map);
|
|
|
- //上传资源到oss
|
|
|
- uploadNewSceneToOss(newNum);
|
|
|
-
|
|
|
- FileUtils.delFolder(ConstantFilePath.SCENE_PATH + "images/images" + newNum);
|
|
|
- FileUtils.delFolder(ConstantFilePath.SCENE_PATH + "data/data" + newNum);
|
|
|
- FileUtils.delFolder(ConstantFilePath.SCENE_PATH + "voice/voice" + newNum);
|
|
|
- FileUtils.delFolder(ConstantFilePath.SCENE_PATH + "video/video" + newNum);
|
|
|
-
|
|
|
- FileUtils.copyDirectiory(ConstantFilePath.SCENE_PATH +"images/images" + oldNum,ConstantFilePath.SCENE_PATH +"images/images" + newNum);
|
|
|
- FileUtils.copyDirectiory(ConstantFilePath.SCENE_PATH +"data/data" + oldNum,ConstantFilePath.SCENE_PATH +"data/data" + newNum);
|
|
|
- FileUtils.writeJsonFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + File.separator + "scene.json", map);
|
|
|
- reloadFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + "/link-scene.json",oldNum, newNum);
|
|
|
- reloadFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + "/hot.json",oldNum, newNum);
|
|
|
- FileUtils.copyDirectiory(ConstantFilePath.SCENE_PATH +"voice/voice" + oldNum,ConstantFilePath.SCENE_PATH +"voice/voice" + newNum);
|
|
|
- FileUtils.copyDirectiory(ConstantFilePath.SCENE_PATH +"video/video" + oldNum,ConstantFilePath.SCENE_PATH +"video/video" + newNum);
|
|
|
- oldScene.setStatus(-2);
|
|
|
- this.updateById(oldScene);
|
|
|
-
|
|
|
- cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + oldScene.getSpace());
|
|
|
- cameraDetailService.updateById(cameraDetail);
|
|
|
- if(oldScene.getPayStatus() == -2){
|
|
|
- this.updateOssStatus(String.format(OssPath.v3_statusPath,oldScene.getNum()),-2);
|
|
|
- }
|
|
|
- if(oldScene.getSceneSource() == 4){ //深时复制
|
|
|
- String laserPath = laserService.copyDataSource(preDataSource,oldScene.getDataSource());
|
|
|
- laserService.copy(oldNum,oldScene.getCameraId(),oldScene.getCreateTime(),newNum,2,laserPath,
|
|
|
- oldEditScene.getSceneKey(),oldScene.getSceneName(),oldScene.getUserId(),"V3",oldScene.getIsObj());
|
|
|
- }
|
|
|
- sceneCopyLogService.saveByNum(oldNum,newNum,oldScene.getUserId());
|
|
|
+ public Long copyV3Scene(ScenePro scenePro,String newNum,CameraDetail cameraDetail) throws Exception {
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- this.removeById(oldScene.getId());
|
|
|
- log.error("复制场景异常", e);
|
|
|
- }
|
|
|
- }, executor).whenComplete((reslut, e) -> {
|
|
|
- log.info("复制场景oldNum:{},newNum:{}结束-{}",oldNum,newNum, new Date());
|
|
|
- });
|
|
|
- }catch (Exception e){
|
|
|
- log.error("线程错误:{}",e);
|
|
|
- }finally {
|
|
|
- executor.shutdown();
|
|
|
- }
|
|
|
+ String oldNum = scenePro.getNum();
|
|
|
+ Long sceneProId = scenePro.getId();
|
|
|
+ String oldSceneName = scenePro.getSceneName();
|
|
|
|
|
|
- return oldScene.getId();
|
|
|
- }
|
|
|
+ scenePro.setNum(newNum);
|
|
|
+ scenePro.setId(null);
|
|
|
+ scenePro.setSceneName(scenePro.getSceneName() +"(copy)");
|
|
|
+ scenePro.setViewCount(0);
|
|
|
+ scenePro.setThumb(scenePro.getThumb().replaceAll(oldNum,scenePro.getNum()));
|
|
|
+ scenePro.setWebSite(scenePro.getWebSite().replaceAll(oldNum,scenePro.getNum()));
|
|
|
+ scenePro.setStatus(0);
|
|
|
+ this.save(scenePro);
|
|
|
|
|
|
- /**
|
|
|
- * 从旧场景下载资源
|
|
|
- * @param sceneNum
|
|
|
- * @param newNum
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- private void downloadFromOldNumFromOss(String sceneNum, String newNum) {
|
|
|
- ShellUtil.yunDownload("images/images" + sceneNum + "/", ConstantFilePath.SCENE_PATH + "images/images" + newNum);
|
|
|
- ShellUtil.yunDownload("data/data" + sceneNum + "/", ConstantFilePath.SCENE_PATH + "data/data" + newNum);
|
|
|
- ShellUtil.yunDownload("voice/voice" + sceneNum + "/", ConstantFilePath.SCENE_PATH + "voice/voice" + newNum);
|
|
|
- ShellUtil.yunDownload("video/video" + sceneNum + "/", ConstantFilePath.SCENE_PATH + "video/video" + newNum);
|
|
|
- }
|
|
|
+ ExecutorService executor = ThreadUtil.newSingleExecutor();
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+
|
|
|
+ String oldDataSource = scenePro.getDataSource();
|
|
|
+ String newDataSource = sceneCommonService.getNewDataSource(oldDataSource);
|
|
|
+
|
|
|
+ log.info("sceneCopy--oldNum:{},oldDataSource:{},newNum:{},newDataSource:{}",
|
|
|
+ oldNum,oldDataSource,newNum,newDataSource);
|
|
|
+
|
|
|
+ scenePro.setDataSource(newDataSource);
|
|
|
+ this.updateById(scenePro);
|
|
|
+
|
|
|
+ SceneProEdit oldEditScene = sceneProEditService.getByProId(sceneProId);
|
|
|
+ oldEditScene.setId(null);
|
|
|
+ oldEditScene.setProId(scenePro.getId());
|
|
|
+ oldEditScene.setScreencapVoiceSrc(oldEditScene.getScreencapVoiceSrc() == null ? null : oldEditScene.getScreencapVoiceSrc().replace(oldNum, scenePro.getNum()));
|
|
|
+ oldEditScene.setScreencapVoiceSound(oldEditScene.getScreencapVoiceSound() == null ? null : oldEditScene.getScreencapVoiceSound().replace(oldNum, scenePro.getNum()));
|
|
|
+ oldEditScene.setScreencapVoiceSoundsync(oldEditScene.getScreencapVoiceSoundsync() == null ? null : oldEditScene.getScreencapVoiceSoundsync().replace(oldNum, scenePro.getNum()));
|
|
|
+ oldEditScene.setPlayData(oldEditScene.getPlayData() == null ? null : oldEditScene.getPlayData().replace(oldNum, scenePro.getNum()));
|
|
|
+ oldEditScene.setScreencapThumb(oldEditScene.getScreencapThumb() == null ? null : oldEditScene.getScreencapThumb().replace(oldNum, scenePro.getNum()));
|
|
|
+ oldEditScene.setFloorPlanPng(oldEditScene.getFloorPlanPng() == null ? null : oldEditScene.getFloorPlanPng().replace(oldNum, scenePro.getNum()));
|
|
|
+ sceneProEditService.save(oldEditScene);
|
|
|
+
|
|
|
+ if(scenePro.getSceneSource() == 4){ //深时复制
|
|
|
+ laserService.copy(oldNum,scenePro.getCameraId(),scenePro.getCreateTime(),newNum,0,null,
|
|
|
+ oldEditScene.getSceneKey(),scenePro.getSceneName(),scenePro.getUserId(),"V3",scenePro.getIsObj());
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 从本地旧场景拷贝资源到新场景
|
|
|
- * @param sceneNum
|
|
|
- * @param newNum
|
|
|
- */
|
|
|
- private void copyOldSceneLocalToNew(String sceneNum, String newNum) throws Exception {
|
|
|
- FileUtils.copyFolderAllFiles(ConstantFilePath.SCENE_PATH + "data/data" + sceneNum + "/",
|
|
|
- ConstantFilePath.SCENE_PATH + "data/data" + newNum + "/", true);
|
|
|
+ try {
|
|
|
+ //重新生成编辑页基础设置二维码
|
|
|
+ sceneCommonService.createNewQrCode(SceneVersionType.V3.code(),oldEditScene.getShareLogo(),newNum,scenePro.getWebSite());
|
|
|
+ //copyDataSource
|
|
|
+ cn.hutool.core.io.FileUtil.copyContent(new File(oldDataSource),new File(newDataSource),true);
|
|
|
+
|
|
|
+ String sourceData = String.format(SceneResourcePath.dataPath, oldNum);
|
|
|
+ String targetData = String.format(SceneResourcePath.dataPath, scenePro.getNum());
|
|
|
+ this.copyOssAndNas(oldNum,scenePro.getNum(),sourceData,targetData);
|
|
|
+ //修改 oss status.json ,nas scene.json
|
|
|
+ sceneCommonService.updateOssJson(targetData,oldNum,newNum,"v3");
|
|
|
+ sceneCommonService.updateNasSceneJson(targetData,oldNum,newNum,oldSceneName,scenePro.getSceneName(),"v3");
|
|
|
+
|
|
|
+ String sourceImages = String.format(SceneResourcePath.imagesPath, oldNum);
|
|
|
+ String targetImages = String.format(SceneResourcePath.imagesPath, scenePro.getNum());
|
|
|
+ this.copyOssAndNas(oldNum,scenePro.getNum(),sourceImages,targetImages);
|
|
|
+
|
|
|
+ String sourceVideo = String.format(SceneResourcePath.videoPath, oldNum);
|
|
|
+ String targetVideo = String.format(SceneResourcePath.videoPath, scenePro.getNum());
|
|
|
+ this.copyOssAndNas(oldNum,scenePro.getNum(),sourceVideo,targetVideo);
|
|
|
+
|
|
|
+ String sourceVoice = String.format(SceneResourcePath.voicePath, oldNum);
|
|
|
+ String targetVoice = String.format(SceneResourcePath.voicePath, scenePro.getNum());
|
|
|
+ this.copyOssAndNas(oldNum,scenePro.getNum(),sourceVoice,targetVoice);
|
|
|
+
|
|
|
+ if(scenePro.getSceneSource() == 4){ //深时复制
|
|
|
+ String laserPath = laserService.copyDataSource(oldDataSource,scenePro.getDataSource());
|
|
|
+ laserService.copy(oldNum,scenePro.getCameraId(),scenePro.getCreateTime(),newNum,2,laserPath,
|
|
|
+ oldEditScene.getSceneKey(),scenePro.getSceneName(),scenePro.getUserId(),"V3",scenePro.getIsObj());
|
|
|
+ }
|
|
|
+ scenePro.setStatus(-2);
|
|
|
+ this.updateById(scenePro);
|
|
|
+ cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + scenePro.getSpace());
|
|
|
+ cameraDetailService.updateById(cameraDetail);
|
|
|
+ sceneCopyLogService.saveByNum(oldNum,newNum,scenePro.getUserId());
|
|
|
+
|
|
|
+ }catch ( Exception e){
|
|
|
+ log.error("复制场景失败-sceneNum:{},error:{}",oldNum,e);
|
|
|
+ scenePro.setStatus(-1);
|
|
|
+ this.updateById(scenePro);
|
|
|
+ throw new BusinessException(ResultCode.FAILURE_CODE_400006,ResultCode.FAILURE_MSG_400006);
|
|
|
+ }
|
|
|
+ }, executor).whenComplete((reslut, e) -> {
|
|
|
+ log.info("copy-success-");
|
|
|
+ });
|
|
|
|
|
|
- reloadFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + "/link-scene.json",sceneNum, newNum);
|
|
|
- reloadFile(ConstantFilePath.SCENE_PATH + "data/data" + newNum + "/hot.json",sceneNum, newNum);
|
|
|
+ return scenePro.getId();
|
|
|
}
|
|
|
-
|
|
|
- public void copyFdage(String oldDataSource,String newDataSource,String buildModelPath,String time) throws Exception {
|
|
|
-
|
|
|
- ShellUtil.yunDownload(ConstantFilePath.OSS_PREFIX + oldDataSource.replace(buildModelPath, "")+"/", newDataSource);
|
|
|
- // 修改data.fdage
|
|
|
- String data = FileUtils.readFile(newDataSource + "/data.fdage");
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(data);
|
|
|
- if(ObjectUtils.isEmpty(jsonObject)){
|
|
|
- log.error("data.fdage文件不存在");
|
|
|
- throw new BusinessException(-1,"拷贝场景出错,data.fdage文件不存在");
|
|
|
+ private void copyOssAndNas(String oldNum ,String newNum ,String sourcePath,String targetPath){
|
|
|
+ log.info("sceneCopy-ossSource-oldNum:{},newNum:{},sourcePath:{},targetPath:{}",oldNum,newNum,sourcePath,targetPath);
|
|
|
+ fYunFileServiceInterface.copyFileInBucket(sourcePath,targetPath);
|
|
|
+ File fileData = new File(SceneResourcePath.nasBasePath + sourcePath);
|
|
|
+ if(fileData.exists()){
|
|
|
+ cn.hutool.core.io.FileUtil.copyContent(fileData,new File(SceneResourcePath.nasBasePath + targetPath),true);
|
|
|
}
|
|
|
- jsonObject.put("uuidtime",time);
|
|
|
- FileUtils.writeFile(newDataSource + "/data.fdage", jsonObject.toJSONString());
|
|
|
- ShellUtil.yunUpload(newDataSource, ConstantFilePath.OSS_PREFIX + newDataSource.replace(buildModelPath, ""));
|
|
|
-
|
|
|
- // 复制计算结果
|
|
|
- ShellUtil.yunDownload(ConstantFilePath.OSS_PREFIX + oldDataSource.concat("_results/").replace(buildModelPath, ""), newDataSource.concat("_results"));
|
|
|
- if(new File(newDataSource.concat("_results")).exists()){
|
|
|
- ShellUtil.yunUpload(newDataSource.concat("_results"), ConstantFilePath.OSS_PREFIX + newDataSource.concat("_results").replace(buildModelPath, ""));
|
|
|
- FileUtils.delAllFile(newDataSource.concat("_results"));
|
|
|
- }
|
|
|
- FileUtils.delAllFile(newDataSource);
|
|
|
-
|
|
|
- try {
|
|
|
- FileUtils.copyFolderAllFiles(oldDataSource+"/",newDataSource+"/", true);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("dataSource复制失败,{}不存在",oldDataSource);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- @Override
|
|
|
- public String setDataSource(String preDataSource,String time) throws Exception {
|
|
|
- SnowflakeIdGenerator snowflakeIdGenerator = new SnowflakeIdGenerator(0,1);
|
|
|
- String[] datasource = preDataSource.split("/");
|
|
|
- datasource[4] = snowflakeIdGenerator.nextId()+"";
|
|
|
- datasource[5] = datasource[5].split("_")[0] + "_" + time;
|
|
|
- return Arrays.stream(datasource).collect(Collectors.joining("/"));
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public String setVideos(String videos,String oldNum,String newNum) {
|
|
|
- JSONObject object = new JSONObject();
|
|
|
- if(StringUtils.isNotEmpty(videos)){
|
|
|
- object = JSONObject.parseObject(videos);
|
|
|
- if(object.containsKey("upPath")){
|
|
|
- String upPath = object.getString("upPath");
|
|
|
- upPath = upPath.replace(oldNum,newNum);
|
|
|
- object.put("upPath",upPath);
|
|
|
- }
|
|
|
- log.info("更新 scene.json");
|
|
|
- }
|
|
|
- return object.toJSONString();
|
|
|
- }
|
|
|
|
|
|
- private void reloadFile(String filePath,String sceneNum, String newNum) throws Exception {
|
|
|
- // 修改link-scene.json
|
|
|
- String content = FileUtils.readFile(filePath);
|
|
|
- if (!ObjectUtils.isEmpty(content)) {
|
|
|
- content = content.replaceAll(sceneNum, newNum);
|
|
|
- FileUtils.writeFile(filePath,content);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 上传新场景资源到oss
|
|
|
- * @param newNum
|
|
|
- */
|
|
|
- private void uploadNewSceneToOss(String newNum) {
|
|
|
- ShellUtil.yunUpload("/mnt/4Dkankan/scene/images/images" + newNum, "images/images" + newNum);
|
|
|
- ShellUtil.yunUpload("/mnt/4Dkankan/scene/data/data" + newNum, "data/data" + newNum);
|
|
|
- ShellUtil.yunUpload("/mnt/4Dkankan/scene/voice/voice" + newNum, "voice/voice" + newNum);
|
|
|
- ShellUtil.yunUpload("/mnt/4Dkankan/scene/video/video" + newNum, "video/video" + newNum);
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
public void delete(String sceneNum,Long userId) {
|
|
@@ -1149,19 +1040,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
return sceneSource;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void setQrCode(String buildType,String num) throws Exception {
|
|
|
- String basePath = NacosProperty.getMainUrl();
|
|
|
- if("V2".equals(buildType)){
|
|
|
- basePath += sceneProUrl;
|
|
|
- }
|
|
|
- if("V3".equals(buildType)){
|
|
|
- basePath += sceneProNewUrl;
|
|
|
- }
|
|
|
- MatrixToImageWriterUtil.createQRCode(basePath + num, ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+".png", false,null);
|
|
|
- MatrixToImageWriterUtil.createQRCode(basePath + num + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png", false,null);
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
public void generateObjFile(String num) {
|
|
@@ -1182,16 +1060,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
|
|
|
// 拷贝文件
|
|
|
String path = sceneProEntity.getDataSource();
|
|
|
- if (!new File(path + "/caches/reconstruction/final.bin").exists()
|
|
|
- || !new File(path + "/caches/reconstruction/chunk.json").exists()
|
|
|
- || !new File(path + "/caches/images").exists()
|
|
|
- || !new File(path + "/caches/depthmap").exists()
|
|
|
- || !new File(path + "/caches/depthmap_csc").exists()
|
|
|
- || !new File(path + "/caches/floor_group_fix.json").exists()
|
|
|
- || !new File(path + "/caches/panorama.json").exists()
|
|
|
- || !new File(path + "/results/laserData/laser.ply").exists()) {
|
|
|
- log.error("生成obj缺少必要文件,生成失败!");
|
|
|
- throw new BusinessException(SceneConstant.FAILURE_CODE_5038, SceneConstant.FAILURE_MSG_5038);
|
|
|
+ String ossPath = path.replace("/mnt/data","home");
|
|
|
+ if(!fYunFileService.fileExist(ossPath)){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3003, "原始资源不存在");
|
|
|
}
|
|
|
|
|
|
// 获取最新的场景名称
|
|
@@ -1241,6 +1112,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
|
|
|
ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
|
|
|
|
|
|
+ String ossPath = scenePlusExt.getDataSource().replace("/mnt/data","home");
|
|
|
+ if(!fYunFileService.fileExist(ossPath)){
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3003, "原始资源不存在");
|
|
|
+ }
|
|
|
+
|
|
|
// 拷贝文件
|
|
|
String ossResultPath = String.format(UploadFilePath.scene_result_data_path, num);
|
|
|
String ossReconstruction = ossResultPath + "caches/reconstruction/";
|