DictFileController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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. if(dictFile.getId() != null && StringUtils.isNotBlank(dictFile.getName())){
  57. commonUploadService.updateFileName(dictFile.getUploadId(),dictFile.getName());
  58. }
  59. dictFileService.addOrUpdate(dictFile);
  60. return ResultData.ok();
  61. }
  62. @PostMapping("/del/{typeKey}")
  63. public ResultData del(@RequestBody DictFile dictFile,@PathVariable String typeKey){
  64. dictFileService.del(dictFile);
  65. return ResultData.ok();
  66. }
  67. @GetMapping("/downFile")
  68. public ResultData downFile(@RequestParam(required = false) Integer dictFileId) {
  69. if(dictFileId == null){
  70. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  71. }
  72. DictFile dictFile = dictFileService.getById(dictFileId);
  73. if(dictFile == null){
  74. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  75. }
  76. if(StringUtils.isNotBlank(dictFile.getDownUrl())){
  77. return ResultData.ok(dictFile.getDownUrl());
  78. }
  79. CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId());
  80. if(commonUpload == null){
  81. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  82. }
  83. if(StringUtils.isBlank(commonUpload.getFileUrl())){
  84. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  85. }
  86. String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,"");
  87. String foName = new File(sceneObjPath).getName();
  88. if(!"las".equals(commonUpload.getFileFormat()) && !"laz".equals(commonUpload.getFileFormat()) && !"ply".equals(commonUpload.getFileFormat())
  89. && !"obj".equals(commonUpload.getFileFormat()) && !"osgb".equals(commonUpload.getFileFormat()) && !"b3dm".equals(commonUpload.getFileFormat())){
  90. dictFileService.setDownUrl(dictFileId,commonUpload.getFileUrl(),0);
  91. return ResultData.ok(commonUpload.getFileUrl());
  92. }
  93. if("obj".equals(commonUpload.getFileFormat()) || "osgb".equals(commonUpload.getFileFormat()) || "b3dm".equals(commonUpload.getFileFormat())){
  94. File parentFile = new File(sceneObjPath).getParentFile();
  95. sceneObjPath = parentFile.getPath();
  96. foName = parentFile.getName();
  97. }
  98. String filePath = String.format(CacheUtil.basePath+OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  99. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+dictFileId +".zip") ;
  100. ShellUtil.yunDownload(sceneObjPath,filePath);
  101. ShellUtil.zip(dictFileId+".zip",filePath+"/"+foName);
  102. ShellUtil.yunUpload(filePath +"/"+foName +"/"+dictFileId +".zip",ossPath);
  103. FileUtil.del(filePath);
  104. String downUrl = queryPath + ossPath;
  105. dictFileService.setDownUrl(dictFileId,downUrl,0);
  106. return ResultData.ok(downUrl);
  107. }
  108. @GetMapping("/downHash")
  109. public ResultData downHash(@RequestParam(required = false) Integer dictFileId) {
  110. if(dictFileId == null){
  111. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  112. }
  113. DictFile dictFile = dictFileService.getById(dictFileId);
  114. if(dictFile == null){
  115. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  116. }
  117. if(StringUtils.isNotBlank(dictFile.getHashUrl())){
  118. return ResultData.ok(dictFile.getHashUrl());
  119. }
  120. CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId());
  121. if(commonUpload == null){
  122. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  123. }
  124. if(StringUtils.isBlank(commonUpload.getFileUrl())){
  125. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  126. }
  127. String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,"");
  128. if("las".equals(commonUpload.getFileFormat()) || "laz".equals(commonUpload.getFileFormat()) || "ply".equals(commonUpload.getFileFormat())){
  129. sceneObjPath = sceneObjPath+"/cloud.js";
  130. }
  131. FileInfoVo fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath);
  132. if(fileInfo == null){
  133. throw new BusinessException(ResultCode.FILE_NOT_EXIST);
  134. }
  135. fileInfo.setSize(Long.valueOf(commonUpload.getFileSize()));
  136. String filePath = String.format(CacheUtil.basePath+OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ;
  137. String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+ dictFileId + "_hash.txt") ;
  138. File file = new File(filePath +"/"+dictFileId + "_hash.txt");
  139. FileUtil.writeString(fileInfo.toString(),file,"UTF-8");
  140. ShellUtil.yunUpload(file.getPath(),ossPath);
  141. FileUtil.del(file);
  142. String downUrl = queryPath + ossPath;
  143. dictFileService.setDownUrl(dictFileId,downUrl,1);
  144. return ResultData.ok(downUrl);
  145. }
  146. }