RemovePortraitServiceImpl.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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.CharsetUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import cn.hutool.core.util.ZipUtil;
  7. import com.alibaba.fastjson.JSON;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.fdkankan.common.constant.*;
  10. import com.fdkankan.common.exception.BusinessException;
  11. import com.fdkankan.common.util.FileUtils;
  12. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  13. import com.fdkankan.model.constants.ConstantFilePath;
  14. import com.fdkankan.model.constants.UploadFilePath;
  15. import com.fdkankan.model.utils.CreateObjUtil;
  16. import com.fdkankan.model.utils.SceneUtil;
  17. import com.fdkankan.scene.entity.SceneAsynOperLog;
  18. import com.fdkankan.scene.entity.ScenePlus;
  19. import com.fdkankan.scene.entity.ScenePlusExt;
  20. import com.fdkankan.scene.service.IRemovePortraitService;
  21. import com.fdkankan.scene.service.ISceneEditInfoService;
  22. import com.fdkankan.scene.service.IScenePlusExtService;
  23. import com.fdkankan.scene.service.IScenePlusService;
  24. import com.fdkankan.scene.vo.UploadPanoramaVO;
  25. import com.fdkankan.web.response.ResultData;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import javax.annotation.Resource;
  29. import java.io.File;
  30. import java.util.*;
  31. import java.util.concurrent.CompletableFuture;
  32. import java.util.stream.Collectors;
  33. @Service
  34. public class RemovePortraitServiceImpl implements IRemovePortraitService {
  35. @Autowired
  36. private IScenePlusService scenePlusService;
  37. @Autowired
  38. private IScenePlusExtService scenePlusExtService;
  39. @Resource
  40. private FYunFileServiceInterface fileServiceInterface;
  41. @Autowired
  42. private ISceneEditInfoService sceneEditInfoService;
  43. @Override
  44. public void removePortrait(JSONObject param) throws Exception {
  45. String num = param.getString("num");
  46. ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
  47. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  48. String bucket = scenePlusExt.getYunFileBucket();
  49. //原始计算根目录
  50. String uuid = UUID.randomUUID().toString();
  51. //全景图计算根目录
  52. String target = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + uuid;
  53. //解压缩文件存放目录
  54. String targetImagesPath = target + "/extras/images/";
  55. //下载文件
  56. String cacheImagesPath = String.format(UploadFilePath.scene_result_data_path, num) + "caches/images/";
  57. List<String> imagesList = fileServiceInterface.listRemoteFiles(cacheImagesPath);
  58. if(CollUtil.isEmpty(imagesList)){
  59. return;
  60. }
  61. imagesList.stream().forEach(key->{
  62. if(key.endsWith(".jpg")){
  63. fileServiceInterface.downloadFile(key, targetImagesPath + FileUtil.getName(key));
  64. }
  65. });
  66. String imgViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, num);
  67. // fYunFileService.downloadFile(bucket, imgViewPath + "vision.modeldata", target + File.separator + "extras" + File.separator + "vision.modeldata");
  68. // CreateObjUtil.convertVisionmodeldataToTxt(target + File.separator + "extras" + File.separator + "vision.modeldata",
  69. // target + File.separator + "extras" + File.separator + "vision.txt");
  70. //
  71. // String ossResultPath = String.format(UploadFilePath.scene_result_data_path, num);
  72. // fYunFileService.downloadFile(bucket, ossResultPath + "data.json", target + File.separator+"data.json");
  73. // fYunFileService.downloadFile(bucket, ossResultPath + "project.json", target + File.separator+"project.json");
  74. //data.json增加extras为执行重建算法
  75. JSONObject floorplanJson = new JSONObject();
  76. floorplanJson.put("has_source_images", true);
  77. floorplanJson.put("has_vision_txt", true);
  78. JSONObject dataJson = new JSONObject();
  79. dataJson.put("extras", floorplanJson);
  80. dataJson.put("split_type", "SPLIT_V28");
  81. //V5表示不需要生成high,low文件
  82. String skyboxType = "SKYBOX_V6";
  83. if(scenePlusExt.getSceneScheme() == 11){
  84. skyboxType = "SKYBOX_V7";
  85. }
  86. //sceneScheme为3切成瓦片图
  87. if(scenePlusExt.getSceneScheme() == 3){
  88. if("4k".equals(scenePlusExt.getSceneResolution())){
  89. skyboxType = "SKYBOX_V14";
  90. }else{
  91. skyboxType = "SKYBOX_V13";
  92. }
  93. }
  94. dataJson.put("skybox_type", skyboxType);
  95. FileUtil.writeUtf8String(dataJson.toJSONString(), target + File.separator+"data.json");
  96. if(new File(target + File.separator + "capture").exists()){
  97. new File(target + File.separator + "capture").delete();
  98. }
  99. if(new File(target + File.separator + "results").exists()){
  100. FileUtils.delAllFile(target + File.separator + "results");
  101. }
  102. sceneEditInfoService.uploadPanoramaHandler(num,bucket,target,imgViewPath,new ArrayList<>(),targetImagesPath);
  103. }
  104. }