lyhzzz 2 лет назад
Родитель
Сommit
29c6192c8d

+ 36 - 24
src/main/java/com/fdkankan/manage_jp/service/impl/ScenePlusServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.manage_jp.service.impl;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -21,6 +22,8 @@ import org.springframework.stereotype.Service;
 import java.io.File;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
 
 /**
  * <p>
@@ -95,6 +98,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
 
         scenePlus.setNum(newNum);
         scenePlus.setTitle(scenePlus.getTitle() +"(copy)");
+        scenePlus.setSceneStatus(0);
         scenePlus.setId(null);
         this.save(scenePlus);
 
@@ -148,32 +152,40 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
             laserService.cloudPointBuild(oldNum,newNum);
         }
 
-        try {
-            //重新生成编辑页基础设置二维码
-            sceneCommonService.createNewQrCode(SceneVersionType.V4.code(),sceneEditInfoExt.getShareLogoImg(),newNum,plusExt.getWebSite());
-            //copyDataSource
-            cn.hutool.core.io.FileUtil.copyContent(new File(oldDataSource),new File(newDataSource),true);
-
-            this.copyOssAndNas(oldNum,newNum);
-
-            //修改 oss status.json ,nas scene.json
-            String targetData = String.format(SceneResourcePath.DATA_VIEW_PATH,newNum);
-            sceneCommonService.updateOssJson(targetData,oldNum,newNum,"v4");
-
-            sceneCommonService.updateNasSceneJson(targetData,oldNum,newNum,oldSceneName,scenePlus.getTitle(),"v4");
-
-            if(scenePlus.getSceneSource() == 4){  //深时复制
-                String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());
-                laserService.copy(scenePlus.getCameraId(),scenePlus.getCreateTime(),newNum,2,laserPath,
-                        sceneEditInfo.getScenePassword(),scenePlus.getTitle(),scenePlus.getUserId(),"V4");
+        ExecutorService executor = ThreadUtil.newSingleExecutor();
+        CompletableFuture.runAsync(() -> {
+            try {
+                //重新生成编辑页基础设置二维码
+                sceneCommonService.createNewQrCode(SceneVersionType.V4.code(),sceneEditInfoExt.getShareLogoImg(),newNum,plusExt.getWebSite());
+                //copyDataSource
+                cn.hutool.core.io.FileUtil.copyContent(new File(oldDataSource),new File(newDataSource),true);
+
+                this.copyOssAndNas(oldNum,newNum);
+
+                //修改 oss status.json ,nas scene.json
+                String targetData = String.format(SceneResourcePath.DATA_VIEW_PATH,newNum);
+                sceneCommonService.updateOssJson(targetData,oldNum,newNum,"v4");
+
+                sceneCommonService.updateNasSceneJson(targetData,oldNum,newNum,oldSceneName,scenePlus.getTitle(),"v4");
+
+                if(scenePlus.getSceneSource() == 4){  //深时复制
+                    String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());
+                    laserService.copy(scenePlus.getCameraId(),scenePlus.getCreateTime(),newNum,2,laserPath,
+                            sceneEditInfo.getScenePassword(),scenePlus.getTitle(),scenePlus.getUserId(),"V4");
+                }
+                scenePlus.setSceneStatus(-2);
+                this.updateById(scenePlus);
+            }catch (Exception e){
+                log.error("复制场景失败-V4-sceneNum:{},error:{}",oldNum,e);
+                scenePlus.setSceneStatus(-1);
+                this.updateById(scenePlus);
+                throw new BusinessException(ResultCode.SCENE_DATA_ERROR);
             }
+        }, executor).whenComplete((reslut, e) -> {
+            log.info("copy-success-");
+        });
+
 
-        }catch (Exception e){
-            log.error("复制场景失败-V4-sceneNum:{},error:{}",oldNum,e);
-            scenePlus.setSceneStatus(-1);
-            this.updateById(scenePlus);
-            throw new BusinessException(ResultCode.SCENE_DATA_ERROR);
-        }
         return scenePlus;
     }
 

+ 46 - 36
src/main/java/com/fdkankan/manage_jp/service/impl/SceneProServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.manage_jp.service.impl;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
@@ -41,6 +42,8 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
 
 /**
@@ -220,6 +223,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         scenePro.setViewCount(0);
         scenePro.setThumb(scenePro.getThumb().replaceAll(oldNum,scenePro.getNum()));
         scenePro.setWebSite(scenePro.getWebSite().replaceAll(oldNum,scenePro.getNum()));
+        scenePro.setStatus(0);
         scenePro.setDataSource(newDataSource);
         this.save(scenePro);
 
@@ -246,43 +250,49 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
          * video/video{SceneNum}
          * voice/voice{SceneNum}
          */
-        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(scenePro.getCameraId(),scenePro.getCreateTime(),newNum,2,laserPath,
-                        oldEditScene.getSceneKey(),scenePro.getSceneName(),scenePro.getUserId(),"V3");
+        ExecutorService executor = ThreadUtil.newSingleExecutor();
+        CompletableFuture.runAsync(() -> {
+            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(scenePro.getCameraId(),scenePro.getCreateTime(),newNum,2,laserPath,
+                            oldEditScene.getSceneKey(),scenePro.getSceneName(),scenePro.getUserId(),"V3");
+                }
+                scenePro.setStatus(-2);
+                this.updateById(scenePro);
+            }catch ( Exception e){
+                log.error("复制场景失败-sceneNum:{},error:{}",oldNum,e);
+                scenePro.setStatus(-1);
+                this.updateById(scenePro);
+                throw new BusinessException(ResultCode.SCENE_DATA_ERROR);
             }
-
-        }catch ( Exception e){
-            log.error("复制场景失败-sceneNum:{},error:{}",oldNum,e);
-            scenePro.setStatus(-1);
-            this.updateById(scenePro);
-            throw new BusinessException(ResultCode.SCENE_DATA_ERROR);
-        }
+        }, executor).whenComplete((reslut, e) -> {
+            log.info("copy-success-");
+        });
 
         return scenePro;
     }