ソースを参照

增加复制功能

dsx 2 年 前
コミット
ebfa93c064

+ 19 - 8
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -1,13 +1,16 @@
 package com.fdkankan.ucenter.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.UploadFilePath;
+import com.fdkankan.common.util.DateExtUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.MatrixToImageWriterUtil;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
@@ -26,10 +29,8 @@ import org.springframework.stereotype.Service;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 
@@ -134,10 +135,21 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         Long plusId = scenePlus.getId();
         ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plusId);
         String bucket = plusExt.getYunFileBucket();
+        String dataSource = plusExt.getDataSource();
+        String oldUuid = dataSource.substring(dataSource.lastIndexOf("/") + 1);
+        Thread.sleep(RandomUtil.randomInt(10, 100));
+        String newUuid = oldUuid.split("_")[0].concat(DateUtil.format(Calendar.getInstance().getTime(), "yyMMddHHmmssSSS"));
+        String newDataSource = plusExt.getDataSource().replace(oldUuid, newUuid);
+
+        ScenePro scenePro = sceneProService.getById(plusId);
+        scenePro.setId(null);
+        scenePro.setDataSource(newDataSource);
+        scenePro.setNum(newNum);
+        sceneProService.save(scenePro);
 
         // 拷贝数据
         scenePlus.setNum(newNum);
-        scenePlus.setId(null);
+        scenePlus.setId(scenePro.getId());
         scenePlus.setSceneStatus(0);
         this.save(scenePlus);
 
@@ -186,7 +198,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
 
                     sceneEditInfo.setId(null);
                     sceneEditInfo.setScenePlusId(scenePlus.getId());
-                    sceneEditInfo.setSceneProId(null);
+                    sceneEditInfo.setSceneProId(scenePlus.getId());
                     sceneEditInfo.setTitle(scenePlus.getTitle());
                     sceneEditInfoService.save(sceneEditInfo);
 
@@ -194,7 +206,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                     sceneEditInfoExt.setId(null);
                     sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
                     sceneEditInfoExt.setScenePlusId(scenePlus.getId());
-                    sceneEditInfoExt.setSceneProId(null);
+                    sceneEditInfoExt.setSceneProId(scenePlus.getId());
                     sceneEditInfoExtService.save(sceneEditInfoExt);
 
                     SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfoId);
@@ -210,7 +222,6 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                     sceneJson.setControls(sceneEditControlsVO);
                     sceneJson.setNum(newNum);
                     sceneJson.setCreateTime(scenePlus.getCreateTime());
-
                     sceneJson.setSceneResolution(plusExt.getSceneResolution());
                     sceneJson.setSceneFrom(plusExt.getSceneFrom());
                     sceneJson.setSceneKind(plusExt.getSceneKind());

+ 5 - 8
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -356,8 +356,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if((scenePro == null || scenePro.getCameraId() == null ) && (scenePlus== null || scenePlus.getCameraId() == null)){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
         }
-        Long cameraId = scenePro == null ? scenePlus.getCameraId() : scenePro.getCameraId();
-        Long userId = scenePro == null ? scenePlus.getUserId() :scenePro.getUserId();
+        Long cameraId = scenePro.getCameraId();
+        Long userId = scenePro.getUserId();
         if(userId == null){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5013, SceneConstant.FAILURE_MSG_5013);
         }
@@ -379,17 +379,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public void copySceneNoCheck(String sceneNum) throws Exception {
         ScenePro scenePro = this.getByNum(sceneNum);
         ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
-        Long cameraId = scenePro == null ? scenePlus.getCameraId() : scenePro.getCameraId();
+        Long cameraId = scenePro.getCameraId();
         CameraDetail detailEntity = cameraDetailService.getByCameraId(cameraId);
-        if(detailEntity == null){
-            throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
-        }
 
         String newNum = scene3dNumService.generateSceneNum(detailEntity.getType());
-        String title = scenePro == null ? scenePlus.getTitle() : scenePro.getSceneName();
+        String title = scenePro.getSceneName();
         String newTitle = title.concat("(copy)");
 
-        Long sceneId = scenePro == null ? scenePlus.getId() :scenePro.getId();
+        Long sceneId = scenePro.getId();
         Long newSceneId = null;
         FolderScene folderScene = folderSceneService.getByType(sceneId, null);
         String time = DateUtil.date2String(new Date(),DateUtil.YYYYMMDDHHMMSSSSS_DATA_FORMAT);