FdModelController.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.fd.controller;
  2. import com.fd.constant.Command;
  3. import com.fd.constant.MsgCode;
  4. import com.fd.constant.TypeCode;
  5. import com.fd.dto.PageDto;
  6. import com.fd.entity.FileEntity;
  7. import com.fd.server.CmdServer;
  8. import com.fd.server.FileServer;
  9. import com.fd.util.FileUtils;
  10. import com.fd.util.R;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.extern.log4j.Log4j2;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.web.bind.annotation.*;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import java.io.File;
  19. import java.util.Date;
  20. /**
  21. * Created by Owen on 2019/11/12 0012 9:40
  22. *
  23. * 3D模型数据
  24. */
  25. @Log4j2
  26. @RequestMapping("api/fdModel")
  27. @RestController
  28. public class FdModelController {
  29. @Value("${input.file.path}")
  30. private String INPUT_FILE_PATH;
  31. @Autowired
  32. private FileServer fileServer;
  33. @Autowired
  34. private CmdServer cmdServer;
  35. @ApiOperation("上传3D模型数据,只能上传zip文件")
  36. @PostMapping(value = "upload", consumes = { "multipart/form-data" })
  37. private R upload(@RequestParam("file") MultipartFile file){
  38. log.info("run upload");
  39. // 文件名全名
  40. String fileName = file.getOriginalFilename();
  41. String s = StringUtils.substringAfterLast(fileName, ".");
  42. if (!"zip".equals(s)) {
  43. return new R(50007,MsgCode.E50007);
  44. }
  45. return fileServer.uploadBigFile(file, TypeCode.FILE_TYPE_MODEL);
  46. }
  47. @ApiOperation("解压zip文件")
  48. @GetMapping("unzip/{fileId}/")
  49. private R fileUnzip(@PathVariable("fileId") Long fileId) {
  50. log.info("run fileUnzip: {}", fileId);
  51. FileEntity entity = fileServer.findById(fileId);
  52. boolean unzip = FileUtils.unzip(entity.getFileUrl(), INPUT_FILE_PATH);
  53. if (!unzip) {
  54. return new R(50006, MsgCode.E50006);
  55. }
  56. String fileName = StringUtils.substringBefore(entity.getFileName(), ".");
  57. FileEntity fileEntity = new FileEntity();
  58. fileEntity.setFileName(fileName);
  59. fileEntity.setFileUrl(INPUT_FILE_PATH + File.separator + fileName);
  60. fileEntity.setCreateTime(new Date());
  61. fileEntity.setUpdateTime(new Date());
  62. fileEntity.setType(TypeCode.FILE_TYPE_MODEL);
  63. fileEntity = fileServer.save(fileEntity);
  64. return new R(200, fileEntity);
  65. }
  66. @ApiOperation("获取3D模型数据列表")
  67. @PostMapping(value = "list")
  68. private R list(@RequestBody PageDto param){
  69. log.info("run list");
  70. return fileServer.findByType(TypeCode.FILE_TYPE_MODEL, param);
  71. }
  72. /**
  73. * 删除文件
  74. */
  75. @ApiOperation("删除文件")
  76. @GetMapping("delete/{fileId}/")
  77. private R deleteFile(@PathVariable("fileId") Long fileId) {
  78. log.info("run deleteFile: {}", fileId);
  79. return fileServer.deleteById(fileId);
  80. }
  81. @ApiOperation("倾斜摄影数据切片")
  82. @GetMapping("command/osgb/{fileId}/")
  83. private R cmdOsgb(@PathVariable("fileId") Long fileId) {
  84. log.info("run cmdOsgb: {}", fileId);
  85. FileEntity entity = fileServer.findById(fileId);
  86. // 传入的是目录
  87. String cmd = Command.MODEL_OSGB;
  88. cmd = cmd.replace("@fileName",entity.getFileName());
  89. log.info("cmd: {}", cmd);
  90. return cmdServer.exeCmdOsgb(cmd, entity.getFileName());
  91. }
  92. @ApiOperation("移动切片数据到服务器")
  93. @GetMapping("command/move/{fileId}/")
  94. private R cmdMove(@PathVariable("fileId") Long fileId) {
  95. log.info("run cmdMove: {}", fileId);
  96. FileEntity entity = fileServer.findById(fileId);
  97. String fileName = StringUtils.substringBefore(entity.getFileName(), ".");
  98. String path = StringUtils.substringBeforeLast(entity.getFileUrl(),"/");
  99. String cmd = Command.CMD_MV;
  100. cmd = cmd.replace("@fileName",fileName);
  101. cmd = cmd.replace("@path", path);
  102. log.info("cmd: {}", cmd);
  103. return cmdServer.exeCmd(cmd);
  104. }
  105. }