DictFileController.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. if(!"las".equals(commonUpload.getFileFormat()) && !"laz".equals(commonUpload.getFileFormat()) && !"ply".equals(commonUpload.getFileFormat())
  85. && !"obj".equals(commonUpload.getFileFormat()) && !"osgb".equals(commonUpload.getFileFormat()) && !"b3dm".equals(commonUpload.getFileFormat())){
  86. dictFileService.setDownUrl(dictFileId,commonUpload.getFileUrl(),0);
  87. return ResultData.ok(commonUpload.getFileUrl());
  88. }
  89. if("obj".equals(commonUpload.getFileFormat()) || "osgb".equals(commonUpload.getFileFormat()) || "b3dm".equals(commonUpload.getFileFormat())){
  90. sceneObjPath = new File(sceneObjPath).getParentFile().getPath();
  91. }
  92. String filePath = String.format(CacheUtil.basePath+"/" +OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  93. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+dictFileId +"zip") ;
  94. ShellUtil.yunDownload(sceneObjPath,filePath);
  95. ShellUtil.zip(dictFileId+".zip",filePath);
  96. ShellUtil.yunDownload(filePath +"/"+dictFileId +"zip",ossPath);
  97. FileUtil.del(filePath);
  98. String downUrl = queryPath + ossPath;
  99. dictFileService.setDownUrl(dictFileId,downUrl,0);
  100. return ResultData.ok(downUrl);
  101. }
  102. @GetMapping("/downHash")
  103. public ResultData downHash(@RequestParam(required = false) Integer dictFileId) {
  104. if(dictFileId == null){
  105. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  106. }
  107. DictFile dictFile = dictFileService.getById(dictFileId);
  108. if(dictFile == null){
  109. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  110. }
  111. if(StringUtils.isNotBlank(dictFile.getHashUrl())){
  112. return ResultData.ok(dictFile.getHashUrl());
  113. }
  114. CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId());
  115. if(commonUpload == null){
  116. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  117. }
  118. if(StringUtils.isBlank(commonUpload.getFileUrl())){
  119. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  120. }
  121. String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,"");
  122. if("las".equals(commonUpload.getFileFormat()) || "laz".equals(commonUpload.getFileFormat()) || "ply".equals(commonUpload.getFileFormat())){
  123. sceneObjPath = sceneObjPath+"/cloud.js";
  124. }
  125. FileInfoVo fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  126. if(fileInfo == null){
  127. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  128. }
  129. fileInfo.setSize(Long.valueOf(commonUpload.getFileSize()));
  130. String filePath = String.format(CacheUtil.basePath+"/" +OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  131. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+ dictFileId + "_hash.txt") ;
  132. File file = new File(filePath +"/"+dictFileId + "_hash.txt");
  133. FileUtil.writeString(fileInfo.toString(),file,"UTF-8");
  134. ShellUtil.yunUpload(file.getPath(),ossPath);
  135. FileUtil.del(file);
  136. String downUrl = queryPath + ossPath;
  137. dictFileService.setDownUrl(dictFileId,downUrl,1);
  138. return ResultData.ok(downUrl);
  139. }
  140. }