DictFileController.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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.OssPath;
  5. import com.fdkankan.fusion.common.ResultCode;
  6. import com.fdkankan.fusion.common.ResultData;
  7. import com.fdkankan.fusion.common.util.ShellUtil;
  8. import com.fdkankan.fusion.common.util.UploadToOssUtil;
  9. import com.fdkankan.fusion.config.CacheUtil;
  10. import com.fdkankan.fusion.entity.CommonUpload;
  11. import com.fdkankan.fusion.entity.Dict;
  12. import com.fdkankan.fusion.entity.DictFile;
  13. import com.fdkankan.fusion.entity.Model;
  14. import com.fdkankan.fusion.exception.BusinessException;
  15. import com.fdkankan.fusion.request.DictFileParam;
  16. import com.fdkankan.fusion.response.FileInfoVo;
  17. import com.fdkankan.fusion.service.ICommonUploadService;
  18. import com.fdkankan.fusion.service.IDictFileService;
  19. import org.apache.commons.io.FileUtils;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.beans.factory.annotation.Value;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.io.File;
  27. import java.io.IOException;
  28. import java.io.OutputStream;
  29. /**
  30. * <p>
  31. * 前端控制器
  32. * </p>
  33. *
  34. * @author
  35. * @since 2024-12-02
  36. */
  37. @RestController
  38. @RequestMapping("/dictFile")
  39. public class DictFileController extends BaseController{
  40. @Autowired
  41. IDictFileService dictFileService;
  42. @Autowired
  43. ICommonUploadService commonUploadService;
  44. @Autowired
  45. UploadToOssUtil uploadToOssUtil;
  46. @Value("${upload.query-path}")
  47. private String queryPath;
  48. @PostMapping("/pageList/{typeKey}")
  49. public ResultData pageList(@RequestBody DictFileParam param, @PathVariable String typeKey){
  50. param.setTypeKey(typeKey);
  51. return ResultData.ok(dictFileService.pageList(param));
  52. }
  53. @PostMapping("/addOrUpdate/{typeKey}")
  54. public ResultData addOrUpdate(@RequestBody DictFile dictFile, @PathVariable String typeKey){
  55. dictFile.setTypeKey(typeKey);
  56. dictFileService.addOrUpdate(dictFile);
  57. return ResultData.ok();
  58. }
  59. @PostMapping("/del/{typeKey}")
  60. public ResultData del(@RequestBody DictFile dictFile,@PathVariable String typeKey){
  61. dictFileService.del(dictFile);
  62. return ResultData.ok();
  63. }
  64. @GetMapping("/downFile")
  65. public ResultData downFile(@RequestParam(required = false) Integer dictFileId) {
  66. if(dictFileId == null){
  67. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  68. }
  69. DictFile dictFile = dictFileService.getById(dictFileId);
  70. if(dictFile == null){
  71. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  72. }
  73. if(StringUtils.isNotBlank(dictFile.getDownUrl())){
  74. return ResultData.ok(dictFile.getDownUrl());
  75. }
  76. CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId());
  77. if(commonUpload == null){
  78. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  79. }
  80. if(StringUtils.isBlank(commonUpload.getFileUrl())){
  81. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  82. }
  83. String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,"");
  84. String foName = new File(sceneObjPath).getName();
  85. if(!"las".equals(commonUpload.getFileFormat()) && !"laz".equals(commonUpload.getFileFormat()) && !"ply".equals(commonUpload.getFileFormat())
  86. && !"obj".equals(commonUpload.getFileFormat()) && !"osgb".equals(commonUpload.getFileFormat()) && !"b3dm".equals(commonUpload.getFileFormat())){
  87. dictFileService.setDownUrl(dictFileId,commonUpload.getFileUrl(),0);
  88. return ResultData.ok(commonUpload.getFileUrl());
  89. }
  90. if("obj".equals(commonUpload.getFileFormat()) || "osgb".equals(commonUpload.getFileFormat()) || "b3dm".equals(commonUpload.getFileFormat())){
  91. sceneObjPath = new File(sceneObjPath).getParentFile().getPath();
  92. foName = new File(sceneObjPath).getParentFile().getName();
  93. }
  94. String filePath = String.format(CacheUtil.basePath+"/" +OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  95. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+dictFileId +".zip") ;
  96. ShellUtil.yunDownload(sceneObjPath,filePath);
  97. ShellUtil.zip(dictFileId+".zip",filePath+"/"+foName);
  98. ShellUtil.yunDownload(filePath +"/"+dictFileId +".zip",ossPath);
  99. FileUtil.del(filePath);
  100. String downUrl = queryPath + ossPath;
  101. dictFileService.setDownUrl(dictFileId,downUrl,0);
  102. return ResultData.ok(downUrl);
  103. }
  104. @GetMapping("/downHash")
  105. public ResultData downHash(@RequestParam(required = false) Integer dictFileId) {
  106. if(dictFileId == null){
  107. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  108. }
  109. DictFile dictFile = dictFileService.getById(dictFileId);
  110. if(dictFile == null){
  111. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  112. }
  113. if(StringUtils.isNotBlank(dictFile.getHashUrl())){
  114. return ResultData.ok(dictFile.getHashUrl());
  115. }
  116. CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId());
  117. if(commonUpload == null){
  118. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  119. }
  120. if(StringUtils.isBlank(commonUpload.getFileUrl())){
  121. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  122. }
  123. String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,"");
  124. if("las".equals(commonUpload.getFileFormat()) || "laz".equals(commonUpload.getFileFormat()) || "ply".equals(commonUpload.getFileFormat())){
  125. sceneObjPath = sceneObjPath+"/cloud.js";
  126. }
  127. FileInfoVo fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  128. if(fileInfo == null){
  129. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  130. }
  131. fileInfo.setSize(Long.valueOf(commonUpload.getFileSize()));
  132. String filePath = String.format(CacheUtil.basePath+"/" +OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  133. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+ dictFileId + "_hash.txt") ;
  134. File file = new File(filePath +"/"+dictFileId + "_hash.txt");
  135. FileUtil.writeString(fileInfo.toString(),file,"UTF-8");
  136. ShellUtil.yunUpload(file.getPath(),ossPath);
  137. FileUtil.del(file);
  138. String downUrl = queryPath + ossPath;
  139. dictFileService.setDownUrl(dictFileId,downUrl,1);
  140. return ResultData.ok(downUrl);
  141. }
  142. }