SceneFileController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.fdkankan.contro.controller;
  2. import cn.hutool.core.util.ZipUtil;
  3. import cn.hutool.http.HttpUtil;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.fdkankan.common.constant.ErrorCode;
  7. import com.fdkankan.common.exception.BusinessException;
  8. import com.fdkankan.common.util.FileUtils;
  9. import com.fdkankan.contro.entity.User;
  10. import com.alibaba.fastjson.JSON;
  11. import com.alibaba.fastjson.JSONArray;
  12. import com.alibaba.fastjson.JSONObject;
  13. import com.fdkankan.common.constant.ErrorCode;
  14. import com.fdkankan.common.exception.BusinessException;
  15. import com.fdkankan.contro.service.ISceneFileBuildService;
  16. import com.fdkankan.contro.vo.ResponseSceneFile;
  17. import com.fdkankan.contro.vo.SendCallAlgorithmParam;
  18. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  19. import com.fdkankan.model.constants.ConstantFilePath;
  20. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  21. import com.fdkankan.web.response.ResultData;
  22. import lombok.extern.log4j.Log4j2;
  23. import org.apache.commons.lang3.ObjectUtils;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.validation.annotation.Validated;
  27. import org.springframework.web.bind.annotation.*;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import org.springframework.web.bind.annotation.*;
  30. import java.io.File;
  31. import java.io.IOException;
  32. import java.util.Date;
  33. import java.util.Map;
  34. import java.util.concurrent.CompletableFuture;
  35. import java.util.ArrayList;
  36. import java.util.HashMap;
  37. import java.util.List;
  38. import java.util.Map;
  39. /**
  40. * 场景文件上传模块
  41. */
  42. @Log4j2
  43. @RestController
  44. @RequestMapping("/api/scene/file")
  45. public class SceneFileController{
  46. @Autowired
  47. private ISceneFileBuildService sceneFileBuildService;
  48. @Autowired
  49. private FYunFileServiceInterface fYunFileService;
  50. /**
  51. * 场景文件上传之前先获取fileId
  52. * @param params
  53. * @return
  54. * @throws Exception
  55. */
  56. @PostMapping("preUpload")
  57. public ResponseSceneFile preUpload(String params) throws Exception {
  58. return sceneFileBuildService.preUpload(params);
  59. }
  60. /**
  61. * 更新fileid文件的上传状态 - 后端八目上传逻辑
  62. *
  63. * @param params
  64. * @return
  65. */
  66. @PostMapping("uploadSuccessBuild")
  67. public ResultData uploadSuccessBuild(String params) throws Exception {
  68. return sceneFileBuildService.uploadSuccessBuild(params);
  69. }
  70. /**
  71. *
  72. *
  73. * @param params
  74. * @return
  75. */
  76. @PostMapping("turntableUploadSuccess")
  77. public ResultData turntableUploadSuccess(String params) throws Exception {
  78. return sceneFileBuildService.turntableUploadSuccess(params);
  79. }
  80. @GetMapping("rebuildScene")
  81. public ResultData rebuildScene(@RequestParam(value = "num") String num,@RequestParam(value = "force",defaultValue = "false") Boolean force ,@RequestParam(value = "deleteExtras",defaultValue = "true") Boolean deleteExtras) throws IOException {
  82. return sceneFileBuildService.rebuildScene(num,force,deleteExtras);
  83. }
  84. /**
  85. * 国际八目相机调用
  86. * @param params
  87. * @return
  88. * @throws Exception
  89. */
  90. @PostMapping("getS3UploadUrl")
  91. public ResultData getS3UploadUrl(String params) throws Exception {
  92. log.info("getS3UploadUrl 参数:{}",params);
  93. if (StringUtils.isEmpty(params)) {
  94. throw new BusinessException(ErrorCode.PARAM_ERROR,"params为空。");
  95. }
  96. JSONObject jsonObject = JSON.parseObject(params);
  97. if(jsonObject == null){
  98. throw new BusinessException(ErrorCode.PARAM_ERROR,"params为空。");
  99. }
  100. JSONArray files = jsonObject.getJSONArray("Files");
  101. if(files == null){
  102. throw new BusinessException(ErrorCode.PARAM_ERROR,"params为空。");
  103. }
  104. List<String> urls = new ArrayList<>();
  105. for(int i = 0, len = files.size(); i < len; i++){
  106. urls.add(files.getJSONObject(i).getString("filename"));
  107. }
  108. Map<String, String> uploadS3Url = getUploadS3Url(urls);
  109. return ResultData.ok(uploadS3Url);
  110. }
  111. private Map<String, String> getUploadS3Url(List<String> urls) {
  112. if(urls == null || urls.size() <= 0){
  113. return null;
  114. }
  115. Map<String, String> map = new HashMap();
  116. for(String path : urls){
  117. map.put(path, fYunFileService.getPresignedUrl(path).toString());
  118. }
  119. return map;
  120. }
  121. // @GetMapping("copyDataAndBuild")
  122. // public ResultData copyDataAndBuild(@RequestParam(value = "dataSource") String dataSource,@RequestParam(value = "sceneVer") String sceneVer,
  123. // @RequestParam(value = "sourceBucket") String sourceBucket) throws Exception {
  124. // return sceneFileBuildService.copyDataAndBuild(sourceBucket,dataSource ,sceneVer);
  125. // }
  126. /**
  127. * 单个文件上传
  128. * @param file
  129. * @param params
  130. * @return
  131. */
  132. @PostMapping("upload")
  133. public ResultData upload(@RequestParam(value = "file",required = false) MultipartFile file,
  134. String params) throws Exception {
  135. return sceneFileBuildService.uploadFile(file, params);
  136. }
  137. /**
  138. * 单个文件上传
  139. * @param file
  140. * @param params
  141. * @return
  142. */
  143. @PostMapping("testUpload")
  144. public ResultData testUpload(@RequestParam(value = "file",required = false) MultipartFile file,
  145. String params) throws Exception {
  146. file.transferTo(new File("/home/backend/tomcat/modeling-control/logs/" + file.getOriginalFilename()));
  147. return ResultData.ok();
  148. }
  149. /**
  150. * 本地上传相机原始资源压缩包,通知计算
  151. * @return
  152. * @throws Exception
  153. */
  154. @PostMapping("sendCallAlgorithm")
  155. public ResultData sendCallAlgorithm(@RequestBody @Validated SendCallAlgorithmParam param) throws Exception {
  156. return sceneFileBuildService.sendCallAlgorithm(param);
  157. }
  158. /**
  159. * 本地上传相机原始资源压缩包,通知计算
  160. * @param params
  161. * @return
  162. * @throws Exception
  163. */
  164. @PostMapping("test1")
  165. public ResultData test1(@RequestBody Map<String,Object> params) throws Exception {
  166. log.info("test1场景计算进度:{}", JSON.toJSONString(params));
  167. return ResultData.ok();
  168. }
  169. /**
  170. * 本地上传相机原始资源压缩包,通知计算
  171. * @param params
  172. * @return
  173. * @throws Exception
  174. */
  175. @PostMapping("test2")
  176. public ResultData test2(@RequestBody Map<String,Object> params) throws Exception {
  177. log.info("test2场景计算进度:{}", JSON.toJSONString(params));
  178. return ResultData.ok();
  179. }
  180. // @PostMapping("upload_bd")
  181. // public ResultData uploadBd(MultipartFile file){
  182. //
  183. // }
  184. @PostMapping("uploadFile")
  185. public ResultData uploadFile(@RequestBody @Validated SendCallAlgorithmParam param) throws Exception {
  186. return sceneFileBuildService.uploadFile(param);
  187. }
  188. @PostMapping("/noticeBuild")
  189. public ResultData noticeBuild(String uuid) throws Exception {
  190. return sceneFileBuildService.noticeBuild(uuid);
  191. }
  192. @PostMapping("/noticeBuild_bd")
  193. public ResultData noticeBuildBd(String uuid) throws Exception {
  194. HttpUtil.post("http://localhost:8085/api/scene/file/noticeBuild", uuid);
  195. return ResultData.ok();
  196. }
  197. }