SceneController.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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.SceneTypeUtil;
  7. import com.fdkankan.fusion.common.util.UploadToOssUtil;
  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. param.setUserId(getUserId());
  32. return ResultData.ok(sceneService.pageList(param));
  33. }
  34. @GetMapping("/getFdTokenByNum")
  35. public Object getFdTokenByNum(@RequestParam(required = false) String num){
  36. return sceneService.getFdTokenByNum(num);
  37. }
  38. @GetMapping("/deleteNum")
  39. public ResultData deleteNum(@RequestParam(required = false) String num){
  40. sceneService.deleteNum(num);
  41. return ResultData.ok();
  42. }
  43. @PostMapping("/sceneDetail")
  44. public ResultData sceneDetail(@RequestBody LaserSceneParam param){
  45. return ResultData.ok(sceneService.sceneDetail(param));
  46. }
  47. @PostMapping("/buildSceneObj")
  48. public ResultData buildSceneObj(@RequestBody LaserSceneParam param){
  49. sceneService.buildSceneObj(param);
  50. return ResultData.ok();
  51. }
  52. @PostMapping("/copyScene")
  53. public ResultData copyScene(@RequestBody ScenePram param){
  54. sceneService.copyScene(param);
  55. return ResultData.ok();
  56. }
  57. @Autowired
  58. UploadToOssUtil uploadToOssUtil;
  59. @Value("${spring.profiles.active}")
  60. private String environment;
  61. @GetMapping("/downMD5")
  62. public void downMD5(@RequestParam(required = false) String num,
  63. @RequestParam(required = false) Integer type,
  64. HttpServletResponse res, HttpServletRequest req) throws IOException {
  65. if(StringUtils.isBlank(num) || type == null){
  66. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  67. }
  68. // 设置响应头,指定文件类型和内容长度
  69. OutputStream os = null;
  70. try {
  71. FileInfoVo fileInfo = null;
  72. Long size = null;
  73. String sceneObjPath =null;
  74. if(SceneTypeUtil.isLaser(type)){ //点云
  75. sceneObjPath = String.format(FilePath.LASER_OSS_PATH, num,num)+"/cloud.js" ;
  76. fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  77. String scenePath = String.format(FilePath.LASER_OSS_PATH, num,num);
  78. size = uploadToOssUtil.getSize(scenePath);
  79. }else {
  80. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles/tileset.json";
  81. if(!uploadToOssUtil.existKey(sceneObjPath)){
  82. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.json";
  83. }
  84. if(!uploadToOssUtil.existKey(sceneObjPath)){
  85. sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.obj";
  86. }
  87. fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  88. String scenePath = String.format(FilePath.OBJ_OSS_PATH, num);
  89. size = uploadToOssUtil.getSize(scenePath);
  90. }
  91. if(fileInfo == null){
  92. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  93. }
  94. fileInfo.setSize(size);
  95. String objPath = String.format(FilePath.OBJ_LOCAL_PATH,environment , num) ;
  96. File file = new File(objPath +"/"+num + "_hash.txt");
  97. res.setContentType("application/octet-stream");
  98. res.setHeader("Content-Disposition", "attachment; filename="+num + "_hash.txt");
  99. os = res.getOutputStream();
  100. FileUtil.writeString(fileInfo.toString(),file,"UTF-8");
  101. os.write(FileUtils.readFileToByteArray(file));
  102. os.flush();
  103. } finally {
  104. if(os!=null){
  105. os.close();
  106. }
  107. }
  108. }
  109. }