package com.fd.controller; import com.fd.Dto.FdageDto; import com.fd.Dto.PageDto; import com.fd.Dto.ResourcesJsonDto; import com.fd.constant.CommandMsg; import com.fd.constant.ErrorCode; import com.fd.constant.TypeCode; import com.fd.entity.FileEntity; import com.fd.repository.FileRepository; import com.fd.repository.GenerateFileRepository; import com.fd.repository.ScheduleRepository; import com.fd.util.ResponseResult; import com.fd.server.CmdServer; import com.fd.server.FileServer; import com.fd.server.JsonServer; import io.swagger.annotations.ApiOperation; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.Date; import java.util.Optional; /** * Created by Owen on 2019/11/7 0007 10:19 */ @CrossOrigin(maxAge = 3600) @Log4j2 @RestController @RequestMapping("api/vts/vector") public class VtsVectorController { @Value("${uploadFile.fdmodelPath}") private String fdmodelPath; @Value("${uploadFile.vectorPath}") private String vectorPath; @Autowired private FileServer fileServer; @Autowired private FileRepository fileRepository; @Autowired private JsonServer jsonServer; @Autowired private CmdServer cmdServer; @Autowired private ScheduleRepository scheduleRepository; @Autowired private GenerateFileRepository generateFileRepository; @ApiOperation("upload Vector file list") @PostMapping(value = "list") private ResponseResult list(@RequestBody PageDto param){ log.info("run list"); Page page = fileRepository.findByType( TypeCode.FILE_TYPE_VECTOR, TypeCode.FILE_TYPE_VECTOR_GEOJSON, PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending())); return new ResponseResult(200,page); } /** * 文件上传 * 需要创建目录 * 不支持大文件上传 * * @return */ @ApiOperation("upload Vector file") @PostMapping(value = "upload/{directoryName}/", consumes = { "multipart/form-data" }) private ResponseResult uploadVector(@RequestParam("file") MultipartFile file, @PathVariable("directoryName") String directoryName){ log.info("run uploadVector"); return fileServer.upload2(file, vectorPath+directoryName+"/"); } @ApiOperation("commandOgr2ogr") @GetMapping("/command/ogr2ogr/{fileId}/") private ResponseResult commandOgr2ogr(@PathVariable("fileId") Long fileId) { log.info("run commandOgr2ogr"); Optional entity = fileRepository.findById(fileId); if (!entity.isPresent()) { return new ResponseResult(50002, ErrorCode.E50002); } FileEntity fileEntity = entity.get(); String fileUrl = fileEntity.getFileUrl(); fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf(".")); String cmd = CommandMsg.VECTOR_OGR2OGR; cmd = cmd.replaceAll("@fileName", fileUrl); log.info("cmd: {}", cmd); Integer s = cmdServer.exeCmd(cmd, fileId); if (s == 1) { log.info("cmd run: {}", ErrorCode.E50005); return new ResponseResult(50005, ErrorCode.E50005); } log.info("cmd run : success"); // 文件名 String fileName = fileEntity.getFileName(); // 把生成的文件信息写入数据库 FileEntity geojson = new FileEntity(); geojson.setFileName(fileName.replace(".shp",".geojson")); geojson.setFileUrl(fileUrl+".geojson"); geojson.setCreateTime(new Date()); geojson.setUpdateTime(new Date()); geojson.setType(TypeCode.FILE_TYPE_VECTOR_GEOJSON); fileRepository.save(geojson); return new ResponseResult(200, geojson); } @ApiOperation("commandTippecanoe ") @GetMapping("/command/tippecanoe/{fileId}/") private ResponseResult commandTippecanoe(@PathVariable("fileId") Long fileId) { log.info("run commandTippecanoe"); Optional entity = fileRepository.findById(fileId); if (!entity.isPresent()) { return new ResponseResult(50002, ErrorCode.E50002); } FileEntity fileEntity = entity.get(); String fileUrl = fileEntity.getFileUrl(); fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf(".")); String cmd = CommandMsg.VECTOR_TIPPECANOE; cmd = cmd.replaceAll("@fileName", fileUrl); log.info("cmd: {}", cmd); Integer s = cmdServer.exeCmd(cmd, fileId); if (s ==1) { log.info("cmd run: {}", ErrorCode.E50005); return new ResponseResult(50005, ErrorCode.E50005); } log.info("cmd run : success"); return new ResponseResult(200, "success"); } /** * 删除文件 */ @GetMapping("delete/{fileId}/") private ResponseResult deleteFile(@PathVariable("fileId") Long fileId) { log.info("run deleteFile: {}", fileId); return fileServer.deleteFileById(fileId); } @ApiOperation("update 4dage") @PostMapping("update/fdage") private ResponseResult updateFdage(@RequestBody FdageDto param){ log.info("run updateFdage"); jsonServer.updateFdage(param); return new ResponseResult(200,"success"); } @ApiOperation("update resources.json") @PostMapping("update/resources") private ResponseResult updateResources(@RequestBody ResourcesJsonDto param){ log.info("run updateResources"); jsonServer.updateResourcesJson(param); return new ResponseResult(200,"success"); } }