Jelajahi Sumber

新增 style 接口

wuweihao 5 tahun lalu
induk
melakukan
b0d859d91b

+ 11 - 0
README.md

@@ -0,0 +1,11 @@
+#gis_vts
+
+
+##测试服务器
+    四维内网:
+    192.168.0.248
+    /root/java/apache-tomcat-8.5.47_8080_vts
+    
+    swagger:
+    http://192.168.0.248:8080/vts/swagger-ui.htm
+    

+ 15 - 0
src/main/java/com/fd/Dto/StyleDto.java

@@ -0,0 +1,15 @@
+package com.fd.Dto;
+
+import lombok.Data;
+
+/**
+ * Created by Owen on 2019/10/30 0030 10:36
+ *
+ * style 请求参数
+ */
+@Data
+public class StyleDto {
+
+    private String content;
+
+}

+ 7 - 0
src/main/java/com/fd/constant/CommandMsg.java

@@ -26,4 +26,11 @@ public class CommandMsg {
     public static String VECTOR_OGR2OGR = "ogr2ogr -f \"GeoJson\" @fileName.geojson @fileName.shp";
 
     public static String VECTOR_TIPPECANOE  = "tippecanoe -o @fileName.mbtiles -z 19 -Z 8 -B 8 -ps @fileName.geojson";
+
+    // 修改生成的文件加权限
+    public static String VECTOR_DIRECTORY_PERMISSION  = "chmod 755 -R /var/vts/mapproxy/datasets/@fileName/";
+
+    public static String VECTOR_DIRECTORY_VTS  = "chown -R vts:vts /var/vts/mapproxy/datasets/@fileName/";
+
+    public static String BASE_MAPPROXY_UPDATE  = "sudo /etc/init.d/vts-backend-mapproxy force-update";
 }

+ 21 - 0
src/main/java/com/fd/controller/VtsBaseMapController.java

@@ -3,6 +3,9 @@ package com.fd.controller;
 import com.fd.Dto.BaseMapFdageDto;
 import com.fd.Dto.FdageDto;
 import com.fd.Dto.ResourcesJsonDto;
+import com.fd.constant.CommandMsg;
+import com.fd.constant.MsgCode;
+import com.fd.server.CmdServer;
 import com.fd.server.JsonServer;
 import com.fd.util.ResponseResult;
 import io.swagger.annotations.ApiOperation;
@@ -22,6 +25,9 @@ public class VtsBaseMapController {
     @Autowired
     private JsonServer jsonServer;
 
+    @Autowired
+    private CmdServer cmdServer;
+
 
     @ApiOperation("update resources.json")
     @PostMapping("update/resources")
@@ -40,4 +46,19 @@ public class VtsBaseMapController {
         return jsonServer.updateBaseMapFdage(param);
     }
 
+    @ApiOperation("commandMapproxyUpdate")
+    @GetMapping("/command/mapproxyUpdate")
+    private ResponseResult commandMapproxyUpdate() {
+        log.info("run commandMapproxyUpdate");
+        String cmd = CommandMsg.BASE_MAPPROXY_UPDATE;
+
+        Integer s = cmdServer.exeCmd(cmd);
+        if (s ==1) {
+            log.info("cmd  run: {}", MsgCode.E50005);
+            return new ResponseResult(50005, MsgCode.E50005);
+        }
+        log.info("cmd  run : success");
+        return new ResponseResult(200, "");
+    }
+
 }

+ 68 - 3
src/main/java/com/fd/controller/VtsVectorController.java

@@ -1,6 +1,7 @@
 package com.fd.controller;
 
 import com.fd.Dto.PageDto;
+import com.fd.Dto.StyleDto;
 import com.fd.Dto.VectorResourcesJsonDto;
 import com.fd.constant.CommandMsg;
 import com.fd.constant.MsgCode;
@@ -9,6 +10,7 @@ import com.fd.entity.FileEntity;
 import com.fd.repository.FileRepository;
 //import com.fd.repository.GenerateFileRepository;
 import com.fd.repository.ScheduleRepository;
+import com.fd.util.FileUtils;
 import com.fd.util.ResponseResult;
 import com.fd.server.CmdServer;
 import com.fd.server.FileServer;
@@ -23,7 +25,12 @@ import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
 
 /**
@@ -55,8 +62,6 @@ public class VtsVectorController {
     @Autowired
     private ScheduleRepository scheduleRepository;
 
-//    @Autowired
-//    private GenerateFileRepository generateFileRepository;
 
 
     @ApiOperation("upload Vector file list")
@@ -70,6 +75,39 @@ public class VtsVectorController {
     }
 
     /**
+     * 生成style文件
+     * 跟xxx.shp 是同一个目录
+     */
+    @ApiOperation("update style ")
+    @PostMapping(value = "update/style")
+    private ResponseResult updateStyle(String param, String directoryName){
+        log.info("run updateStyle");
+        String filePath = vectorPath + directoryName + File.separator + "style.style";
+        try {
+            // 生成文件
+            FileUtils.fileWriter(param, filePath);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        // 生成的文件需要修改文件权限
+        String cmd = CommandMsg.VECTOR_DIRECTORY_PERMISSION;
+        cmd = cmd.replace("@fileName", directoryName);
+        cmd = cmd + "style.style";
+        log.info("cmd : {}", cmd);
+        cmdServer.exeCmd(cmd);
+
+        // 修改文件权限用户为vts
+        cmd = CommandMsg.VECTOR_DIRECTORY_VTS;
+        cmd = cmd.replace("@fileName", directoryName);
+        cmdServer.exeCmd(cmd);
+
+        return new ResponseResult(200, MsgCode.SUCCESS);
+    }
+
+
+
+    /**
      * 文件上传
      * 需要创建目录
      * 不支持大文件上传
@@ -80,7 +118,23 @@ public class VtsVectorController {
     @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+"/");
+        return fileServer.uploadVector(file, vectorPath, directoryName);
+    }
+
+
+    @ApiOperation("commandMapproxyUpdate")
+    @GetMapping("/command/mapproxyUpdate")
+    private ResponseResult commandMapproxyUpdate() {
+        log.info("run commandMapproxyUpdate");
+        String cmd = CommandMsg.BASE_MAPPROXY_UPDATE;
+
+        Integer s = cmdServer.exeCmd(cmd);
+        if (s ==1) {
+            log.info("cmd  run: {}", MsgCode.E50005);
+            return new ResponseResult(50005, MsgCode.E50005);
+        }
+        log.info("cmd  run : success");
+        return new ResponseResult(200, "");
     }
 
 
@@ -121,6 +175,17 @@ public class VtsVectorController {
         geojson.setType(TypeCode.FILE_TYPE_VECTOR_GEOJSON);
         fileRepository.save(geojson);
 
+//        FileEntity style = new FileEntity();
+//        style.setFileName("style.style");
+//        style.setFileUrl();
+//        style.setType();
+//        geojson.setCreateTime(new Date());
+//        geojson.setUpdateTime(new Date());
+//        fileRepository.save(style);
+//
+//        Map<Object, Object> map = new HashMap<>();
+
+
         return new ResponseResult(200, geojson);
     }
 

+ 1 - 1
src/main/java/com/fd/server/FileServer.java

@@ -13,7 +13,7 @@ public interface FileServer {
     ResponseResult uploadBigFile(MultipartFile file, String savePath);
 
     // 普通文件上传,不支持大文件
-    ResponseResult upload2(MultipartFile file, String savePath);
+    ResponseResult uploadVector(MultipartFile file, String savePath, String directoryName);
 
     ResponseResult deleteFileById(Long id);
 

+ 1 - 6
src/main/java/com/fd/server/impl/CmdServerImpl.java

@@ -118,7 +118,6 @@ public class CmdServerImpl implements CmdServer {
 
     @Override
     public Integer exeCmd(String commandStr) {
-        String result = null;
         Integer isCmd = null; // 命令运行结果 1:失败, 0:成功
         try {
             String[] cmd = new String[]{"/bin/sh", "-c", commandStr};
@@ -132,23 +131,19 @@ public class CmdServerImpl implements CmdServer {
 
             String errorLine;
 
-            ArrayList<Object> arrayList = new ArrayList<>();
 
             while ((errorLine = errorBuf.readLine()) != null) {
                 errorStr.append(errorLine).append("\n");
             }
             log.info("error result: {}", errorStr.toString());
-            log.info("per: {}", Arrays.toString(arrayList.toArray()));
 
             String line;
             while ((line = br.readLine()) != null) {
                 log.info("=====  br.readLine: ======== {}", br.readLine());
                 //执行结果加上回车
                 sb.append(line).append("\n");
-                log.info("line: {}", line);
             }
-            result = sb.toString();
-            log.info("result: {}", result);
+            log.info("result: {}", sb.toString());
 
             // 结束命令行
             isCmd = ps.waitFor();

+ 20 - 3
src/main/java/com/fd/server/impl/FileServerImpl.java

@@ -1,9 +1,11 @@
 package com.fd.server.impl;
 
+import com.fd.constant.CommandMsg;
 import com.fd.constant.MsgCode;
 import com.fd.constant.TypeCode;
 import com.fd.entity.FileEntity;
 import com.fd.repository.FileRepository;
+import com.fd.server.CmdServer;
 import com.fd.util.ResponseResult;
 import com.fd.server.FileServer;
 import com.fd.util.FileUtils;
@@ -29,6 +31,9 @@ public class FileServerImpl implements FileServer {
     @Autowired
     private FileRepository fileRepository;
 
+    @Autowired
+    private CmdServer cmdServer;
+
     public ResponseResult uploadBigFile(MultipartFile file, String savePath) {
         if (file.isEmpty() || file.getSize() <= 0) {
             log.info("文件为空");
@@ -65,14 +70,14 @@ public class FileServerImpl implements FileServer {
         entity.setType(TypeCode.FILE_TYPE_MODEL);
         fileRepository.save(entity);
 
-        return new ResponseResult (200,"success");
+        return new ResponseResult (200, entity);
     }
 
 
     /**
      * 特别需求,只能用文件名,不能用时间戳
      */
-    public ResponseResult upload2(MultipartFile file, String savePath) {
+    public ResponseResult uploadVector(MultipartFile file, String savePath, String directoryName) {
         if (file.isEmpty() || file.getSize() <= 0) {
             log.info("文件为空");
             return new ResponseResult (50001, MsgCode.E50001);
@@ -82,6 +87,7 @@ public class FileServerImpl implements FileServer {
         String fullFileName = file.getOriginalFilename();
 
         // 创建目录路径
+        savePath = savePath + directoryName + File.separator;
         FileUtils.createDir(savePath);
 
         // 拼接唯一文件名
@@ -112,7 +118,18 @@ public class FileServerImpl implements FileServer {
         entity.setType(TypeCode.FILE_TYPE_VECTOR);
         fileRepository.save(entity);
 
-        return new ResponseResult (200,"success");
+        // 修改生成目录的权限
+        String cmd = CommandMsg.VECTOR_DIRECTORY_PERMISSION;
+        cmd = cmd.replace("@fileName", directoryName);
+        log.info("cmd : {}", cmd);
+        cmdServer.exeCmd(cmd);
+
+        cmd = CommandMsg.VECTOR_DIRECTORY_VTS;
+        cmd = cmd.replace("@fileName", directoryName);
+        log.info("cmd change user: {}", cmd);
+        cmdServer.exeCmd(cmd);
+
+        return new ResponseResult (200, entity);
     }
 
     @Override

+ 20 - 0
src/main/resources/json/style.style

@@ -0,0 +1,20 @@
+{
+  "fonts": {
+      "noto": "http://test.4dkankan.com:8070/font/noto/noto.fnt",
+      "nn": "http://test.4dkankan.com:8070/font/nn/noname.fnt"
+  },
+  "layers": {
+    "lines": {
+      "line-width": 5,
+      "line": true,
+      "line-flat": true,
+      "line-color": [255, 255, 255, 150],
+      "line-label": true,
+      "line-label-source": "$NAME_CHN",
+      "line-label-size": 12,
+      "line-label-font" : ["noto", "nn"],
+      "zbuffer-offset": [-10, 0, 0]
+    }
+  }
+}
+