SceneFileController.java 8.2 KB

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