SceneController.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package com.fdkankan.fusion.controller;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.fdkankan.fusion.common.FilePath;
  4. import com.fdkankan.fusion.common.ResultCode;
  5. import com.fdkankan.fusion.common.ResultData;
  6. import com.fdkankan.fusion.common.util.CameraUtil;
  7. import com.fdkankan.fusion.common.util.NumTypeUtils;
  8. import com.fdkankan.fusion.common.util.UploadToOssUtil;
  9. import com.fdkankan.fusion.config.CacheUtil;
  10. import com.fdkankan.fusion.exception.BusinessException;
  11. import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
  12. import com.fdkankan.fusion.request.ScenePram;
  13. import com.fdkankan.fusion.response.FileInfoVo;
  14. import com.fdkankan.fusion.service.ISceneService;
  15. import org.apache.commons.io.FileUtils;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.web.bind.annotation.*;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.io.File;
  23. import java.io.IOException;
  24. import java.io.OutputStream;
  25. @RestController
  26. @RequestMapping("/scene")
  27. public class SceneController extends BaseController{
  28. @Autowired
  29. ISceneService sceneService;
  30. @PostMapping("/list")
  31. public ResultData list(@RequestBody ScenePram param){
  32. return ResultData.ok(sceneService.pageList(param));
  33. }
  34. @GetMapping("/getFdTokenByNum")
  35. public Object getFdTokenByNum(@RequestParam(required = false) String num,
  36. @RequestParam(required = false,defaultValue = "1") Integer isObj){
  37. return sceneService.getFdTokenByNum(num,isObj);
  38. }
  39. @GetMapping("/deleteNum")
  40. public ResultData deleteNum(@RequestParam(required = false) String num){
  41. sceneService.deleteNum(num);
  42. return ResultData.ok();
  43. }
  44. @PostMapping("/sceneDetail")
  45. public ResultData sceneDetail(@RequestBody LaserSceneParam param){
  46. return ResultData.ok(sceneService.sceneDetail(param));
  47. }
  48. @PostMapping("/buildSceneObj")
  49. public ResultData buildSceneObj(@RequestBody LaserSceneParam param){
  50. sceneService.buildSceneObj(param);
  51. return ResultData.ok();
  52. }
  53. @PostMapping("/copyScene")
  54. public ResultData copyScene(@RequestBody ScenePram param){
  55. sceneService.copyScene(param);
  56. return ResultData.ok();
  57. }
  58. @Autowired
  59. UploadToOssUtil uploadToOssUtil;
  60. @Value("${spring.profiles.active}")
  61. private String environment;
  62. @GetMapping("/downMD5")
  63. public void downMD5(@RequestParam(required = false) String num,
  64. @RequestParam(required = false) Integer type,
  65. HttpServletResponse res, HttpServletRequest req) throws IOException {
  66. if(StringUtils.isBlank(num) || type == null){
  67. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  68. }
  69. // 设置响应头,指定文件类型和内容长度
  70. OutputStream os = null;
  71. try {
  72. FileInfoVo fileInfo = null;
  73. Long size = null;
  74. String sceneObjPath =null;
  75. if(NumTypeUtils.isLaser(type)){ //点云
  76. String scenePath = null;
  77. if(CacheUtil.environment.contains("prod" )){
  78. sceneObjPath = String.format(FilePath.LASER_OSS_PATH, num,num)+"/cloud.js" ;
  79. scenePath = String.format(FilePath.LASER_OSS_PATH, num,num);
  80. }else {
  81. sceneObjPath = String.format(FilePath.LASER_OSS_PATH_TEST, num,num)+"/cloud.js" ;
  82. scenePath = String.format(FilePath.LASER_OSS_PATH_TEST, num,num);
  83. }
  84. fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath,"laser-data");
  85. size = uploadToOssUtil.getSize(scenePath,"laser-data");
  86. }else {
  87. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles/tileset.json";
  88. if(!uploadToOssUtil.existKey(sceneObjPath)){
  89. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.json";
  90. }
  91. if(!uploadToOssUtil.existKey(sceneObjPath)){
  92. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.obj";
  93. }
  94. fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  95. String scenePath = String.format(FilePath.OBJ_OSS_PATH, num);
  96. size = uploadToOssUtil.getSize(scenePath);
  97. }
  98. if(fileInfo == null){
  99. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  100. }
  101. fileInfo.setSize(size);
  102. String objPath = String.format(FilePath.OBJ_LOCAL_PATH,environment , num) ;
  103. File file = new File(objPath +"/"+num + "_hash.txt");
  104. res.setContentType("application/octet-stream");
  105. res.setHeader("Content-Disposition", "attachment; filename="+num + "_hash.txt");
  106. os = res.getOutputStream();
  107. FileUtil.writeString(fileInfo.toString(),file,"UTF-8");
  108. os.write(FileUtils.readFileToByteArray(file));
  109. os.flush();
  110. } finally {
  111. if(os!=null){
  112. os.close();
  113. }
  114. }
  115. }
  116. }