SceneCopyServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import cn.hutool.extra.qrcode.QrCodeUtil;
  6. import cn.hutool.extra.qrcode.QrConfig;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.fdkankan.common.constant.SceneVersionType;
  10. import com.fdkankan.common.exception.BusinessException;
  11. import com.fdkankan.common.util.FileUtils;
  12. import com.fdkankan.common.util.SnowflakeIdGenerator;
  13. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  14. import com.fdkankan.rabbitmq.util.RabbitMqProducer;
  15. import com.fdkankan.scene.entity.*;
  16. import com.fdkankan.scene.mq.consumer.SceneResourcePath;
  17. import com.fdkankan.scene.service.*;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.ObjectUtils;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.beans.factory.annotation.Value;
  23. import org.springframework.stereotype.Service;
  24. import javax.annotation.Resource;
  25. import java.io.File;
  26. import java.util.*;
  27. @Service
  28. @Slf4j
  29. public class SceneCopyServiceImpl implements ISceneCopyService {
  30. @Autowired
  31. ISceneProService sceneProService;
  32. @Autowired
  33. ISceneProEditService sceneProEditService;
  34. @Autowired
  35. IScenePlusService scenePlusService;
  36. @Autowired
  37. IScenePlusExtService scenePlusExtService;
  38. @Autowired
  39. ISceneEditInfoService sceneEditInfoService;
  40. @Autowired
  41. ISceneEditInfoExtService sceneEditInfoExtService;
  42. @Autowired
  43. ISceneEditControlsService sceneEditControlsService;
  44. @Autowired
  45. ISurveillanceService surveillanceService;
  46. @Autowired
  47. IFolderSceneService folderSceneService;
  48. @Autowired
  49. ILaserService laserService;
  50. @Resource
  51. FYunFileServiceInterface fYunFileServiceInterface;
  52. @Autowired
  53. RabbitMqProducer rabbitMqProducer;
  54. @Autowired
  55. ISceneMarkShapeService sceneMarkShapeService;
  56. @Override
  57. public void copyScene(String oldNum, String newNum) {
  58. ScenePro scenePro = sceneProService.getByNum(oldNum);
  59. if(scenePro != null && scenePro.getIsUpgrade() == 0){
  60. cpV3(scenePro,oldNum,newNum);
  61. }
  62. ScenePlus scenePlus = scenePlusService.getScenePlusByNum(oldNum);
  63. if(scenePlus != null){
  64. cpV4(scenePlus,oldNum,newNum);
  65. }
  66. }
  67. private void cpV4(ScenePlus scenePlus, String oldNum, String newNum) {
  68. try {
  69. Long plusId = scenePlus.getId();
  70. ScenePlusExt plusExt = scenePlusExtService.getScenePlusExtByPlusId(plusId);
  71. if(plusExt == null){
  72. return;
  73. }
  74. scenePlus.setNum(newNum);
  75. scenePlus.setTitle(scenePlus.getTitle() +"(copy)");
  76. scenePlus.setLaserTitle(scenePlus.getLaserTitle() +"(copy)");
  77. scenePlus.setSceneStatus(0);
  78. scenePlus.setId(null);
  79. scenePlusService.save(scenePlus);
  80. this.saveFolder(plusId,scenePlus.getId());
  81. String oldDataSource = plusExt.getDataSource();
  82. String newDataSource = this.getNewDataSource(oldDataSource);
  83. log.info("sceneCopy-V4-oldNum:{},oldDataSource:{},newNum:{},newDataSource:{}", oldNum,oldDataSource,newNum,newDataSource);
  84. String newVideos = plusExt.getVideos();
  85. if(StrUtil.isNotEmpty(newVideos)){
  86. newVideos = plusExt.getVideos().replaceAll("/data/data" + oldNum, "/scene_view_data/" + newNum + "/data").replaceAll(oldNum, newNum);
  87. }
  88. plusExt.setId(null);
  89. plusExt.setPlusId(scenePlus.getId());
  90. plusExt.setDataSource(newDataSource);
  91. plusExt.setWebSite(plusExt.getWebSite().replace(oldNum, newNum));
  92. plusExt.setThumb(plusExt.getThumb().replace(oldNum, newNum));
  93. plusExt.setVideos(newVideos);
  94. plusExt.setViewCount(0);
  95. scenePlusExtService.save(plusExt);
  96. SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plusId);
  97. Long sceneEditInfoId = sceneEditInfo.getId();
  98. sceneEditInfo.setId(null);
  99. sceneEditInfo.setScenePlusId(scenePlus.getId());
  100. sceneEditInfo.setSceneProId(null);
  101. sceneEditInfo.setTitle(scenePlus.getTitle());
  102. sceneEditInfoService.save(sceneEditInfo);
  103. SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoId);
  104. sceneEditInfoExt.setId(null);
  105. sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
  106. sceneEditInfoExt.setScenePlusId(scenePlus.getId());
  107. sceneEditInfoExt.setSceneProId(null);
  108. sceneEditInfoExtService.save(sceneEditInfoExt);
  109. SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfoId);
  110. sceneEditControls.setId(null);
  111. sceneEditControls.setEditInfoId(sceneEditInfo.getId());
  112. sceneEditControlsService.save(sceneEditControls);
  113. List<Surveillance> list = surveillanceService.list(new LambdaQueryWrapper<Surveillance>().eq(Surveillance::getNum, oldNum));
  114. if (!Objects.isNull(list)) {
  115. list.stream().forEach(item -> {
  116. item.setNum(newNum);
  117. item.setId(null);
  118. surveillanceService.save(item);
  119. });
  120. }
  121. if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){ //深时复制
  122. laserService.copy(oldNum,newNum,newDataSource,true);
  123. }else {
  124. laserService.cloudPointBuild(oldNum,newNum);
  125. }
  126. //重新生成编辑页基础设置二维码
  127. this.createNewQrCode(SceneVersionType.V4.code(),sceneEditInfoExt.getShareLogoImg(),newNum,plusExt.getWebSite());
  128. //copyDataSource
  129. //cn.hutool.core.io.FileUtil.copyContent(new File(oldDataSource),new File(newDataSource),true);
  130. this.copyOssAndNasV4(oldNum,newNum);
  131. this.copyMarkShape(oldNum,newNum);
  132. //修改 oss status.json ,nas scene.json
  133. String targetData = String.format(SceneResourcePath.DATA_VIEW_PATH,newNum);
  134. this.updateOssJson(targetData,oldNum,newNum,"status.json");
  135. this.updateNasSceneJson(targetData,oldNum,newNum,scenePlus.getTitle(),"v4","scene.json");
  136. if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){ //深时复制
  137. laserService.copy(oldNum,newNum,newDataSource,false);
  138. }else {
  139. scenePlus.setSceneStatus(-2);
  140. scenePlusService.updateById(scenePlus);
  141. sendMq(oldNum,newNum);
  142. }
  143. }catch (Exception e){
  144. log.error("copy-V4-error-oldNum:{},newNum:{}",oldNum,newNum,e);
  145. scenePlus.setSceneStatus(-1);
  146. scenePlusService.updateById(scenePlus);
  147. }
  148. }
  149. private void copyMarkShape(String oldNum, String newNum){
  150. List<SceneMarkShape> sceneMarkShapes = sceneMarkShapeService.findByNum(oldNum);
  151. if(CollUtil.isEmpty(sceneMarkShapes)){
  152. return;
  153. }
  154. sceneMarkShapes.stream().forEach(v->{
  155. v.setId(null);
  156. v.setNum(newNum);
  157. v.setCreateTime(new Date());
  158. v.setUpdateTime(null);
  159. });
  160. sceneMarkShapeService.saveBatch(sceneMarkShapes);
  161. }
  162. private void cpV3(ScenePro scenePro ,String oldNum,String newNum) {
  163. try {
  164. Long sceneProId = scenePro.getId();
  165. scenePro.setNum(newNum);
  166. scenePro.setId(null);
  167. scenePro.setSceneName(scenePro.getSceneName() +"(copy)");
  168. scenePro.setViewCount(0);
  169. scenePro.setThumb(scenePro.getThumb().replaceAll(oldNum,scenePro.getNum()));
  170. scenePro.setWebSite(scenePro.getWebSite().replaceAll(oldNum,scenePro.getNum()));
  171. scenePro.setStatus(0);
  172. sceneProService.save(scenePro);
  173. this.saveFolder(sceneProId,scenePro.getId());
  174. String oldDataSource = scenePro.getDataSource();
  175. String newDataSource = this.getNewDataSource(oldDataSource);
  176. if(StringUtils.isBlank(newDataSource)){
  177. log.info("cpv3-error-newDataSource为空:{}",newDataSource);
  178. return;
  179. }
  180. log.info("sceneCopy-v3-oldNum:{},oldDataSource:{},newNum:{},newDataSource:{}", oldNum,oldDataSource,newNum,newDataSource);
  181. scenePro.setDataSource(newDataSource);
  182. SceneProEdit oldEditScene = sceneProEditService.getByProId(sceneProId);
  183. oldEditScene.setId(null);
  184. oldEditScene.setProId(scenePro.getId());
  185. oldEditScene.setScreencapVoiceSrc(oldEditScene.getScreencapVoiceSrc() == null ? null : oldEditScene.getScreencapVoiceSrc().replace(oldNum, scenePro.getNum()));
  186. oldEditScene.setScreencapVoiceSound(oldEditScene.getScreencapVoiceSound() == null ? null : oldEditScene.getScreencapVoiceSound().replace(oldNum, scenePro.getNum()));
  187. oldEditScene.setScreencapVoiceSoundsync(oldEditScene.getScreencapVoiceSoundsync() == null ? null : oldEditScene.getScreencapVoiceSoundsync().replace(oldNum, scenePro.getNum()));
  188. oldEditScene.setPlayData(oldEditScene.getPlayData() == null ? null : oldEditScene.getPlayData().replace(oldNum, scenePro.getNum()));
  189. oldEditScene.setScreencapThumb(oldEditScene.getScreencapThumb() == null ? null : oldEditScene.getScreencapThumb().replace(oldNum, scenePro.getNum()));
  190. oldEditScene.setFloorPlanPng(oldEditScene.getFloorPlanPng() == null ? null : oldEditScene.getFloorPlanPng().replace(oldNum, scenePro.getNum()));
  191. sceneProEditService.save(oldEditScene);
  192. if(scenePro.getSceneSource() == 4 || scenePro.getSceneSource() == 5) { //深时复制
  193. laserService.copy(oldNum,newNum,newDataSource,true);
  194. }
  195. //重新生成编辑页基础设置二维码
  196. this.createNewQrCode(SceneVersionType.V3.code(),oldEditScene.getShareLogo(),newNum,scenePro.getWebSite());
  197. //copyDataSource
  198. // cn.hutool.core.io.FileUtil.copyContent(new File(oldDataSource),new File(newDataSource),true);
  199. String sourceData = String.format(SceneResourcePath.dataPath, oldNum);
  200. String targetData = String.format(SceneResourcePath.dataPath, scenePro.getNum());
  201. this.copyOssAndNasV3(oldNum,scenePro.getNum(),sourceData,targetData);
  202. //修改 oss status.json ,nas scene.json
  203. this.updateOssJson(targetData,oldNum,newNum,"status.json");
  204. this.updateOssJson(targetData,oldNum,newNum,"hot.json");
  205. this.updateNasSceneJson(targetData,oldNum,newNum,scenePro.getSceneName(),"v3","scene.json");
  206. this.updateNasSceneJson(targetData,oldNum,newNum,scenePro.getSceneName(),"v3","hot.json");
  207. String sourceImages = String.format(SceneResourcePath.imagesPath, oldNum);
  208. String targetImages = String.format(SceneResourcePath.imagesPath, scenePro.getNum());
  209. this.copyOssAndNasV3(oldNum,scenePro.getNum(),sourceImages,targetImages);
  210. String sourceVideo = String.format(SceneResourcePath.videoPath, oldNum);
  211. String targetVideo = String.format(SceneResourcePath.videoPath, scenePro.getNum());
  212. this.copyOssAndNasV3(oldNum,scenePro.getNum(),sourceVideo,targetVideo);
  213. String sourceVoice = String.format(SceneResourcePath.voicePath, oldNum);
  214. String targetVoice = String.format(SceneResourcePath.voicePath, scenePro.getNum());
  215. this.copyOssAndNasV3(oldNum,scenePro.getNum(),sourceVoice,targetVoice);
  216. if(scenePro.getSceneSource() == 4 || scenePro.getSceneSource() == 5){ //深时复制
  217. laserService.copy(oldNum,newNum,newDataSource,false);
  218. }else {
  219. scenePro.setStatus(-2);
  220. sceneProService.updateById(scenePro);
  221. sendMq(oldNum,newNum);
  222. }
  223. }catch (Exception e){
  224. log.info("cpv3-error:{},{}",oldNum,newNum,e);
  225. scenePro.setStatus(-1);
  226. sceneProService.updateById(scenePro);
  227. }
  228. }
  229. private void saveFolder(Long oldSceneId,Long newSceneId) {
  230. FolderScene folderScene = folderSceneService.getByType(oldSceneId, null);
  231. if(folderScene!= null){
  232. folderScene.setId(null);
  233. folderScene.setSceneId(newSceneId);
  234. folderSceneService.save(folderScene);
  235. }
  236. }
  237. @Value("${queue.scene.copy.result:ucenter-copy-scene-result}")
  238. private String ucenterCpResultQueue;
  239. private void sendMq(String oldNum, String newNum) {
  240. HashMap<String,Object> map = new HashMap<>();
  241. map.put("oldNum",oldNum);
  242. map.put("newNum",newNum);
  243. rabbitMqProducer.sendByWorkQueue(ucenterCpResultQueue,map);
  244. }
  245. public String getNewDataSource(String oldDataSource){
  246. String newDataSource = null;
  247. if(StringUtils.isBlank(oldDataSource)){
  248. log.info("oldDataSource为空:{}",oldDataSource);
  249. return null;
  250. }
  251. if(!oldDataSource.contains("/")){
  252. log.info("oldDataSource格式错误:{}",oldDataSource);
  253. return null;
  254. }
  255. String time = com.fdkankan.common.util.DateUtil.date2String(new Date(), com.fdkankan.common.util.DateUtil.YYYYMMDDHHMMSSSSS_DATA_FORMAT);
  256. String[] split = oldDataSource.split("/");
  257. if(split.length == 6 ){
  258. String oldFileId = split[4];
  259. Long fileId = new SnowflakeIdGenerator(1,1).nextId();
  260. newDataSource = oldDataSource.replace(oldFileId,fileId.toString());
  261. String snCodeTime = split[5];
  262. if(!snCodeTime.contains("_") || snCodeTime.split("_").length <= 1){
  263. log.info("oldDataSource格式错误:{}",oldDataSource);
  264. }
  265. newDataSource = newDataSource.replace(snCodeTime.split("_")[1],time);
  266. //this.copyFdage(oldDataSource,newDataSource,time);
  267. }
  268. if(newDataSource == null){
  269. log.info("newDataSource格式错误:{}",newDataSource);
  270. }
  271. return newDataSource;
  272. }
  273. public void createNewQrCode(String sceneVersion,String logoPath ,String newNum, String webSite){
  274. String localLogoPath = null;
  275. try {
  276. if(StringUtils.isNotBlank(logoPath)){
  277. if(sceneVersion.equals(SceneVersionType.V3.code())){
  278. localLogoPath = SceneResourcePath.nasBasePath + logoPath;
  279. }else{
  280. localLogoPath = SceneResourcePath.qrCodeBasePath + newNum +"/logo/logo.png";
  281. fYunFileServiceInterface.downloadFile(logoPath,localLogoPath);
  282. }
  283. }
  284. String outPathZh = SceneResourcePath.qrCodeBasePath + newNum + ".png";
  285. String outPathEn = SceneResourcePath.qrCodeBasePath + newNum + "_en.png";
  286. QrConfig qrConfig = QrConfig.create();
  287. qrConfig.setWidth(1024);
  288. qrConfig.setHeight(1024);
  289. if(!ObjectUtils.isEmpty(localLogoPath)){
  290. qrConfig.setImg(localLogoPath);
  291. }
  292. QrCodeUtil.generate(webSite, qrConfig, FileUtil.file(outPathZh));
  293. QrCodeUtil.generate(webSite + "&lang=en", qrConfig, FileUtil.file(outPathEn));
  294. fYunFileServiceInterface.uploadFile(outPathZh, String.format(SceneResourcePath.DOWNLOADS_QRCODE, newNum) + newNum + ".png");
  295. fYunFileServiceInterface.uploadFile(outPathEn, String.format(SceneResourcePath.DOWNLOADS_QRCODE, newNum) + newNum + "_en.png");
  296. }catch (Exception e){
  297. log.info("copy-scene-error:{},newNum:{},error:{}",newNum,e);
  298. }
  299. }
  300. public void updateNasSceneJson(String targetPath, String oldNum, String newNum,String newSceneName,String sceneVersion,String fileName) {
  301. String fileContent = null;
  302. if("v3".equals(sceneVersion)){
  303. String localPath = SceneResourcePath.nasBasePath + targetPath + "/" + fileName;
  304. File file = new File(localPath);
  305. if(!file.exists()){
  306. log.error("sceneCopy-error--localFileExist:localPath:{},oldNum:{},newNum:{}",localPath,oldNum,newNum);
  307. return;
  308. }
  309. fileContent = FileUtil.readUtf8String(file);
  310. }
  311. if("v4".equals(sceneVersion)){
  312. String ossStatusJsonPath = targetPath + "/" + fileName;
  313. if(!fYunFileServiceInterface.fileExist(ossStatusJsonPath)){
  314. log.error("sceneCopy-error--ossFileExist:targetPath:{},oldNum:{},newNum:{}",ossStatusJsonPath,oldNum,newNum);
  315. return;
  316. }
  317. fileContent = fYunFileServiceInterface.getFileContent(ossStatusJsonPath);
  318. }
  319. if(StringUtils.isNotBlank(fileContent)){
  320. //v3编辑器使用
  321. String localPath = SceneResourcePath.nasBasePath + targetPath +"/" + fileName;
  322. File file = new File(localPath);
  323. if(!file.getParentFile().exists()){
  324. file.getParentFile().mkdirs();
  325. }
  326. String newJson = fileContent.replaceAll(oldNum,newNum);
  327. try {
  328. if("v3".equals(sceneVersion)){
  329. if(fileName.contains("scene.json")){
  330. JSONObject jsonObject = JSONObject.parseObject(newJson);
  331. jsonObject.put("sceneName",newSceneName);
  332. FileUtils.writeFile(localPath ,jsonObject.toJSONString());
  333. String sceneJsonPath = String.format(SceneResourcePath.dataPath+"/"+fileName, newNum);
  334. fYunFileServiceInterface.uploadFile(localPath, sceneJsonPath);
  335. }else {
  336. FileUtils.writeFile(localPath ,newJson);
  337. }
  338. }
  339. if("v4".equals(sceneVersion)){
  340. JSONObject jsonObject = JSONObject.parseObject(newJson);
  341. jsonObject.put("title",newSceneName);
  342. jsonObject.put("dynamicPanel",0);
  343. FileUtils.writeFile(localPath, jsonObject.toJSONString());
  344. String sceneJsonPath = String.format(SceneResourcePath.DATA_VIEW_PATH+"/" + fileName, newNum);
  345. fYunFileServiceInterface.uploadFile(localPath, sceneJsonPath);
  346. //修改图片名称
  347. String filePath = String.format(SceneResourcePath.USER_VIEW_PATH, newNum) ;
  348. List<String> files = fYunFileServiceInterface.listRemoteFiles(filePath);
  349. for (String ossFilePath : files) {
  350. if(ossFilePath.contains(oldNum)){
  351. String oldName = ossFilePath;
  352. ossFilePath = ossFilePath.replace(oldNum,newNum);
  353. fYunFileServiceInterface.copyFileInBucket(oldName,ossFilePath);
  354. fYunFileServiceInterface.deleteFile(oldName);
  355. }
  356. }
  357. String dynamicViewPath = String.format(SceneResourcePath.DYNAMIC_VIEW_PATH, newNum);
  358. String dynamicEditPath = String.format(SceneResourcePath.DYNAMIC_EDIT_PATH, newNum);
  359. if(fYunFileServiceInterface.fileExist(dynamicViewPath)){
  360. fYunFileServiceInterface.deleteFile(dynamicViewPath);
  361. }
  362. if(fYunFileServiceInterface.fileExist(dynamicEditPath)){
  363. fYunFileServiceInterface.deleteFile(dynamicEditPath);
  364. }
  365. }
  366. }catch (Exception e){
  367. log.error("writeFile-error:{}",e);
  368. }
  369. }
  370. }
  371. public void updateOssJson(String targetPath,String oldNum, String newNum,String fileName) {
  372. String ossStatusJsonPath = targetPath + "/" + fileName;
  373. if(!fYunFileServiceInterface.fileExist(ossStatusJsonPath)){
  374. log.error("sceneCopy-error--ossFileExist:targetPath:{},oldNum:{},newNum:{}",ossStatusJsonPath,oldNum,newNum);
  375. return;
  376. }
  377. String localPath = SceneResourcePath.nasBasePath + ossStatusJsonPath;
  378. File file = new File(localPath);
  379. if(!file.getParentFile().exists()){
  380. file.getParentFile().mkdirs();
  381. }
  382. String fileContent = fYunFileServiceInterface.getFileContent(ossStatusJsonPath);
  383. if(StringUtils.isNotBlank(fileContent)){
  384. String newJson = fileContent.replaceAll(oldNum,newNum);
  385. try {
  386. FileUtils.writeFile(localPath, newJson);
  387. fYunFileServiceInterface.uploadFile(localPath,ossStatusJsonPath);
  388. }catch (Exception e){
  389. log.error("writeFile-error:{}",e);
  390. }
  391. }
  392. }
  393. private void copyOssAndNasV3(String oldNum ,String newNum ,String sourcePath,String targetPath){
  394. log.info("sceneCopy-ossSource-oldNum:{},newNum:{},sourcePath:{},targetPath:{}",oldNum,newNum,sourcePath,targetPath);
  395. fYunFileServiceInterface.copyFileInBucket(sourcePath,targetPath);
  396. File fileData = new File(SceneResourcePath.nasBasePath + sourcePath);
  397. if(fileData.exists()){
  398. if(targetPath.contains("images")){
  399. this.delLink(fileData.getPath());
  400. }
  401. cn.hutool.core.io.FileUtil.copyContent(fileData,new File(SceneResourcePath.nasBasePath + targetPath),true);
  402. }
  403. }
  404. private void copyOssAndNasV4(String oldNum,String newNum){
  405. // 拷贝场景编辑资源
  406. String oldEditPath = String.format(SceneResourcePath.EDIT_PATH_v4, oldNum);
  407. String newEditPath = String.format(SceneResourcePath.EDIT_PATH_v4, newNum);
  408. fYunFileServiceInterface.copyFileInBucket(oldEditPath, newEditPath);
  409. // 拷贝场景展示资源
  410. String oldViewPath = String.format(SceneResourcePath.VIEW_PATH_v4, oldNum);
  411. String newViewPath = String.format(SceneResourcePath.VIEW_PATH_v4, newNum);
  412. fYunFileServiceInterface.copyFileInBucket(oldViewPath, newViewPath);
  413. //复制计算结果文件
  414. String oldResultPath = String.format(SceneResourcePath.SCENE_RESULT_DATA_PATH, oldNum);
  415. String newResultPath = String.format(SceneResourcePath.SCENE_RESULT_DATA_PATH, newNum);
  416. fYunFileServiceInterface.copyFileInBucket(oldResultPath, newResultPath);
  417. // String oldPath = SceneResourcePath.nasBasePath + oldNum;
  418. // String newPath = SceneResourcePath.nasBasePath + newNum;
  419. // if(new File(oldPath).exists()){
  420. // FileUtil.copyContent(new File(oldPath), new File(newPath),true);
  421. // }
  422. String oldPath_v4 = SceneResourcePath.nasBasePath_v4 + oldNum;
  423. String newPath_v4 = SceneResourcePath.nasBasePath_v4 + newNum;
  424. if(new File(oldPath_v4).exists()){
  425. FileUtil.copyContent(new File(oldPath_v4), new File(newPath_v4),true);
  426. }
  427. }
  428. public void delLink(String path) {
  429. String panPath = path +"/panorama";
  430. File file = new File(panPath);
  431. if(file.exists()){
  432. File[] files = file.listFiles();
  433. if(files == null || files.length == 0){
  434. return;
  435. }
  436. for (File file1 : files) {
  437. String linkPath =file1.getPath() + "/capture";
  438. log.info("delLink--filePath:{}",linkPath);
  439. org.apache.commons.io.FileUtils.deleteQuietly(new File(linkPath));
  440. }
  441. }
  442. }
  443. }