SceneController.java 5.0 KB

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