VtsVectorController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.fd.controller;
  2. import com.fd.Dto.FdageDto;
  3. import com.fd.Dto.PageDto;
  4. import com.fd.Dto.ResourcesJsonDto;
  5. import com.fd.constant.CommandMsg;
  6. import com.fd.constant.ErrorCode;
  7. import com.fd.constant.TypeCode;
  8. import com.fd.entity.FileEntity;
  9. import com.fd.repository.FileRepository;
  10. import com.fd.repository.GenerateFileRepository;
  11. import com.fd.repository.ScheduleRepository;
  12. import com.fd.util.ResponseResult;
  13. import com.fd.server.CmdServer;
  14. import com.fd.server.FileServer;
  15. import com.fd.server.JsonServer;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.extern.log4j.Log4j2;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.data.domain.Page;
  21. import org.springframework.data.domain.PageRequest;
  22. import org.springframework.data.domain.Sort;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import java.util.Date;
  26. import java.util.Optional;
  27. /**
  28. * Created by Owen on 2019/11/7 0007 10:19
  29. */
  30. @CrossOrigin(maxAge = 3600)
  31. @Log4j2
  32. @RestController
  33. @RequestMapping("api/vts/vector")
  34. public class VtsVectorController {
  35. @Value("${uploadFile.fdmodelPath}")
  36. private String fdmodelPath;
  37. @Value("${uploadFile.vectorPath}")
  38. private String vectorPath;
  39. @Autowired
  40. private FileServer fileServer;
  41. @Autowired
  42. private FileRepository fileRepository;
  43. @Autowired
  44. private JsonServer jsonServer;
  45. @Autowired
  46. private CmdServer cmdServer;
  47. @Autowired
  48. private ScheduleRepository scheduleRepository;
  49. @Autowired
  50. private GenerateFileRepository generateFileRepository;
  51. @ApiOperation("upload Vector file list")
  52. @PostMapping(value = "list")
  53. private ResponseResult list(@RequestBody PageDto param){
  54. log.info("run list");
  55. Page<FileEntity> page = fileRepository.findByType(
  56. TypeCode.FILE_TYPE_VECTOR, TypeCode.FILE_TYPE_VECTOR_GEOJSON,
  57. PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
  58. return new ResponseResult(200,page);
  59. }
  60. /**
  61. * 文件上传
  62. * 需要创建目录
  63. * 不支持大文件上传
  64. *
  65. * @return
  66. */
  67. @ApiOperation("upload Vector file")
  68. @PostMapping(value = "upload/{directoryName}/", consumes = { "multipart/form-data" })
  69. private ResponseResult uploadVector(@RequestParam("file") MultipartFile file, @PathVariable("directoryName") String directoryName){
  70. log.info("run uploadVector");
  71. return fileServer.upload2(file, vectorPath+directoryName+"/");
  72. }
  73. @ApiOperation("commandOgr2ogr")
  74. @GetMapping("/command/ogr2ogr/{fileId}/")
  75. private ResponseResult commandOgr2ogr(@PathVariable("fileId") Long fileId) {
  76. log.info("run commandOgr2ogr");
  77. Optional<FileEntity> entity = fileRepository.findById(fileId);
  78. if (!entity.isPresent()) {
  79. return new ResponseResult(50002, ErrorCode.E50002);
  80. }
  81. FileEntity fileEntity = entity.get();
  82. String fileUrl = fileEntity.getFileUrl();
  83. fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf("."));
  84. String cmd = CommandMsg.VECTOR_OGR2OGR;
  85. cmd = cmd.replaceAll("@fileName", fileUrl);
  86. log.info("cmd: {}", cmd);
  87. Integer s = cmdServer.exeCmd(cmd, fileId);
  88. if (s == 1) {
  89. log.info("cmd run: {}", ErrorCode.E50005);
  90. return new ResponseResult(50005, ErrorCode.E50005);
  91. }
  92. log.info("cmd run : success");
  93. // 文件名
  94. String fileName = fileEntity.getFileName();
  95. // 把生成的文件信息写入数据库
  96. FileEntity geojson = new FileEntity();
  97. geojson.setFileName(fileName.replace(".shp",".geojson"));
  98. geojson.setFileUrl(fileUrl+".geojson");
  99. geojson.setCreateTime(new Date());
  100. geojson.setUpdateTime(new Date());
  101. geojson.setType(TypeCode.FILE_TYPE_VECTOR_GEOJSON);
  102. fileRepository.save(geojson);
  103. return new ResponseResult(200, geojson);
  104. }
  105. @ApiOperation("commandTippecanoe ")
  106. @GetMapping("/command/tippecanoe/{fileId}/")
  107. private ResponseResult commandTippecanoe(@PathVariable("fileId") Long fileId) {
  108. log.info("run commandTippecanoe");
  109. Optional<FileEntity> entity = fileRepository.findById(fileId);
  110. if (!entity.isPresent()) {
  111. return new ResponseResult(50002, ErrorCode.E50002);
  112. }
  113. FileEntity fileEntity = entity.get();
  114. String fileUrl = fileEntity.getFileUrl();
  115. fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf("."));
  116. String cmd = CommandMsg.VECTOR_TIPPECANOE;
  117. cmd = cmd.replaceAll("@fileName", fileUrl);
  118. log.info("cmd: {}", cmd);
  119. Integer s = cmdServer.exeCmd(cmd, fileId);
  120. if (s ==1) {
  121. log.info("cmd run: {}", ErrorCode.E50005);
  122. return new ResponseResult(50005, ErrorCode.E50005);
  123. }
  124. log.info("cmd run : success");
  125. return new ResponseResult(200, "success");
  126. }
  127. /**
  128. * 删除文件
  129. */
  130. @GetMapping("delete/{fileId}/")
  131. private ResponseResult deleteFile(@PathVariable("fileId") Long fileId) {
  132. log.info("run deleteFile: {}", fileId);
  133. return fileServer.deleteFileById(fileId);
  134. }
  135. @ApiOperation("update 4dage")
  136. @PostMapping("update/fdage")
  137. private ResponseResult updateFdage(@RequestBody FdageDto param){
  138. log.info("run updateFdage");
  139. jsonServer.updateFdage(param);
  140. return new ResponseResult(200,"success");
  141. }
  142. @ApiOperation("update resources.json")
  143. @PostMapping("update/resources")
  144. private ResponseResult updateResources(@RequestBody ResourcesJsonDto param){
  145. log.info("run updateResources");
  146. jsonServer.updateResourcesJson(param);
  147. return new ResponseResult(200,"success");
  148. }
  149. }