Jelajahi Sumber

添加
vector 获取样式\保存样式接口

wuweihao 5 tahun lalu
induk
melakukan
c198d9b357

+ 31 - 1
src/main/java/com/fd/config/WebMvcConfg.java

@@ -1,11 +1,19 @@
 package com.fd.config;
 
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Created by Owen on 2019/10/25 0025 16:29
  */
@@ -28,7 +36,7 @@ public class WebMvcConfg implements WebMvcConfigurer {
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(myInterceptor())
 //                .addPathPatterns("/**")
-                .addPathPatterns("/api/vts/**")
+                .addPathPatterns("/api/cesium/**")
                 .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html");
     }
 
@@ -43,4 +51,26 @@ public class WebMvcConfg implements WebMvcConfigurer {
                 .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
                 .maxAge(3600);
     }
+
+
+
+
+    /**
+     * fastJson相关设置
+     * Dto包含json,需要配置不然会异常
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters customConverters() {
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        fastJsonConfig.setSerializerFeatures(SerializerFeature.QuoteFieldNames, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteNonStringValueAsString);
+
+        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
+        fastJson.setFastJsonConfig(fastJsonConfig);
+        List<MediaType> mediaTypeList = new ArrayList<>();
+        mediaTypeList.add(MediaType.valueOf("application/json;charset=UTF-8"));
+        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
+        fastJson.setSupportedMediaTypes(mediaTypeList);
+        return new HttpMessageConverters(fastJson);
+    }
 }

+ 1 - 1
src/main/java/com/fd/constant/Command.java

@@ -56,7 +56,7 @@ public class Command {
      * 输出文件:@outputFile
      *
      */
-    public static String VECTOR_SLICE_TIPPECANOE = "tippecanoe -e @outputFile --extend-zooms-if-still-dropping -z20 -Z10 @inputFile";
+    public static String VECTOR_SLICE_TIPPECANOE = "tippecanoe -e @outputFile --extend-zooms-if-still-dropping -cP -z20 -Z10 @inputFile";
 
     /**
      * 矢量数据判断坐标

+ 11 - 13
src/main/java/com/fd/controller/FdModelController.java

@@ -52,8 +52,10 @@ public class FdModelController {
     @Autowired
     private ModelServer modelServer;
 
-    // 队列
-    BlockingQueue<MyQueue> modelQueue = new LinkedBlockingQueue<MyQueue>(5);
+    /**
+     * 队列
+     */
+    private BlockingQueue<MyQueue> modelQueue = new LinkedBlockingQueue<MyQueue>(5);
 
 
 
@@ -74,7 +76,6 @@ public class FdModelController {
     public class modelSliceConsumerThread implements Runnable{
 
         private BlockingQueue<MyQueue> queue;
-        private boolean isRun = true;
         public modelSliceConsumerThread(BlockingQueue<MyQueue> queue){
             this.queue = queue;
         }
@@ -97,6 +98,7 @@ public class FdModelController {
                             // 如果命令运行失败,删除刚才创建的实体类
                             // o:代表切片失败
                             obj.setStatus(0);
+                            obj.setUpdateTime(new Date());
                             modelServer.save(obj);
                             return;
                         }
@@ -105,8 +107,9 @@ public class FdModelController {
                 } catch (InterruptedException e) {
 
                     // o:代表切片失败
-                    obj.setStatus(0);
-                    modelServer.save(obj);
+//                    obj.setStatus(0);
+//                    obj.setUpdateTime(new Date());
+//                    modelServer.save(obj);
 
 //                    isRun = false;
                     log.error("error  consume queue modelSliceConsumerThread: {}", e);
@@ -121,8 +124,8 @@ public class FdModelController {
 
     @ApiOperation("上传数据,校验文件名")
     @GetMapping("check/{fileName}/")
-    private R checkFileName(@RequestParam("fileName") String fileName) {
-        log.info("run checkFileName");
+    private R checkFileName(@PathVariable("fileName") String fileName) {
+        log.info("run checkFileName {}",fileName);
 
         // 文件是否包含中文字符
         if (RegexUtils.regexChinese(fileName)) {
@@ -171,16 +174,11 @@ public class FdModelController {
     @GetMapping("unzip/{fileId}/")
     private R fileUnzip(@PathVariable("fileId") Long fileId) {
         log.info("run fileUnzip: {}", fileId);
-//        FileEntity entity = fileServer.findById(fileId);
         OutputFileEntity entity = modelServer.findById(fileId);
 
-//        FileEntity uploadFiel = fileServer.findById(entity.getUploadId());
-
-
         String outputPath = OUTPUT_FILE_PATH + "unzip";
         FileUtils.createDir(outputPath);
 
-//        boolean unzip = FileUtils.unzip(uploadFiel.getFileUrl(), outputPath);
         boolean unzip = FileUtils.unzip(entity.getUploadPath(), outputPath);
 
         if (!unzip) {
@@ -264,7 +262,7 @@ public class FdModelController {
 
 
     @ApiOperation("移动数据到服务器上")
-    @GetMapping("move/{fileId}/")
+    @PostMapping("move/{fileId}/")
     private R moveFile(@PathVariable("fileId") Long fileId) {
         log.info("run moveFile: {}", fileId);
         return modelServer.moveFileToServer(fileId);

+ 13 - 9
src/main/java/com/fd/controller/RasterController.java

@@ -79,8 +79,9 @@ public class RasterController {
 
     @ApiOperation("上传数据,校验文件名")
     @GetMapping("check/{fileName}/")
-    private R checkFileName(@RequestParam("fileName") String fileName) {
-        log.info("run checkFileName");
+    private R checkFileName(@PathVariable("fileName") String fileName) {
+        log.info("run checkFileName: {}",fileName);
+
 
         // 文件是否包含中文字符
         if (RegexUtils.regexChinese(fileName)) {
@@ -222,9 +223,9 @@ public class RasterController {
 
                     }
                 } catch (Exception e) {
-                    entity.setStatus(0);
-                    entity.setUpdateTime(new Date());
-                    rasterServer.save(entity);
+//                    entity.setStatus(0);
+//                    entity.setUpdateTime(new Date());
+//                    rasterServer.save(entity);
 
                     log.error("error  consume queue raster JudgeCoordConsumerThread: {}", e);
                     e.printStackTrace();
@@ -317,9 +318,9 @@ public class RasterController {
 
                 } catch (Exception e) {
 
-                    entity.setStatus(0);
-                    entity.setUpdateTime(new Date());
-                    rasterServer.save(entity);
+//                    entity.setStatus(0);
+//                    entity.setUpdateTime(new Date());
+//                    rasterServer.save(entity);
 
                     log.error("error  consume queue raster SliceConsumerThread: {}", e);
                     e.printStackTrace();
@@ -346,7 +347,10 @@ public class RasterController {
     }
 
 
-    // 严格坐标转换
+
+    /**
+     * 严格坐标转换
+     */
     private OutputFileEntity cmdTansformGdalwarpStrict(OutputFileEntity entity){
         log.info("run cmdTansformGdalwarpStrict");
 

+ 24 - 4
src/main/java/com/fd/controller/VectorController.java

@@ -6,8 +6,10 @@ import com.fd.constant.TypeCode;
 import com.fd.dto.ConfigJsonDto;
 import com.fd.dto.MyQueue;
 import com.fd.dto.PageDto;
+import com.fd.dto.StyleDto;
 import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
+import com.fd.entity.StyleEntity;
 import com.fd.server.CmdServer;
 import com.fd.server.VectorServer;
 import com.fd.util.FileUtils;
@@ -255,9 +257,9 @@ public class VectorController {
 //                    Thread.sleep(4000);
                 } catch (Exception e) {
                     //出现异常了,修改修改状态
-                    entity.setStatus(7);
-                    entity.setUpdateTime(new Date());
-                    vectorServer.save(entity);
+//                    entity.setStatus(7);
+//                    entity.setUpdateTime(new Date());
+//                    vectorServer.save(entity);
 
                     log.error("error vector consume queue VectorJudgeCoordConsumerThread: {}", e);
                     throw new RuntimeException(e);
@@ -342,7 +344,25 @@ public class VectorController {
     }
 
 
-    // 普通坐标转换
+    @ApiOperation("保存样式")
+    @PostMapping("style/save/")
+    private R saveStyle(@RequestBody StyleDto param) {
+        log.info("run saveStyle");
+        return vectorServer.saveStyle(param);
+    }
+
+    @ApiOperation("获取样式")
+    @GetMapping("style/get/{fileId}/")
+    private R getStyle(@PathVariable("fileId") Long fileId) {
+        log.info("run getStyle: {}", fileId);
+        return vectorServer.getStyle(fileId);
+    }
+
+
+
+    /**
+     * 普通坐标转换
+     */
     private OutputFileEntity generalCoordTransform(OutputFileEntity entity, String cmd){
 
         String directory = createDirectory(entity);

+ 25 - 0
src/main/java/com/fd/dto/StyleDto.java

@@ -0,0 +1,25 @@
+package com.fd.dto;
+
+
+import lombok.Data;
+
+/**
+ * Created by Owen on 2019/11/28 0028 15:02
+ */
+@Data
+public class StyleDto {
+
+    private Long outputFileId;
+
+    /**
+     * json内容
+     */
+    private String content;
+
+
+    /**
+     * 名称
+     */
+    private String name;
+
+}

+ 1 - 1
src/main/java/com/fd/entity/OutputFileEntity.java

@@ -15,9 +15,9 @@ import java.io.Serializable;
 @Entity
 @Table(name = "t_output_file")
 public class OutputFileEntity extends BaseEntity implements Serializable {
-    private static final long serialVersionUID = 3663614649370191338L;
 
 
+    private static final long serialVersionUID = 3474642971473904533L;
     @Column
     private Long uploadId; // 上传文件ID
 

+ 43 - 0
src/main/java/com/fd/entity/StyleEntity.java

@@ -0,0 +1,43 @@
+package com.fd.entity;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+
+/**
+ * Created by Owen on 2019/10/28 0028 11:15
+ */
+@Data
+@Entity
+@Table(name = "t_style")
+public class StyleEntity extends BaseEntity implements Serializable {
+
+
+    private static final long serialVersionUID = -3527820659642423994L;
+
+    /**
+     * 输出文件id
+     */
+    @Column
+    private Long outputFileId;
+
+    /**
+     * json内容
+     */
+//    @Column(columnDefinition="varchar(MAX)")
+    @Column(columnDefinition = "LONGTEXT")
+    private String content;
+
+
+    /**
+     * 名称
+     */
+    @Column
+    private String name;
+
+
+}

+ 19 - 0
src/main/java/com/fd/repository/IBaseRepository.java

@@ -0,0 +1,19 @@
+package com.fd.repository;
+
+import com.fd.entity.BaseEntity;
+import com.fd.entity.FileEntity;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import java.io.Serializable;
+import java.util.List;
+
+@NoRepositoryBean
+public interface IBaseRepository<T extends BaseEntity, ID extends Serializable> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T> {
+
+
+}

+ 20 - 0
src/main/java/com/fd/repository/StyleRepository.java

@@ -0,0 +1,20 @@
+package com.fd.repository;
+
+import com.fd.entity.StyleEntity;
+import org.springframework.data.jpa.repository.Query;
+
+
+/**
+ * Created by Owen on 2019/10/28 0028 11:36
+ *
+ */
+public interface StyleRepository extends IBaseRepository<StyleEntity, Long> {
+
+
+    /**
+     * 找最新的一条记录
+     * 纯sql
+     */
+    @Query(value = "SELECT * from t_style where output_file_id = ?1 order by a.create_time desc LIMIT 0,1", nativeQuery = true)
+    StyleEntity findByOutputFileIdTop(Long id);
+}

+ 17 - 4
src/main/java/com/fd/server/VectorServer.java

@@ -2,6 +2,7 @@ package com.fd.server;
 
 import com.fd.dto.ConfigJsonDto;
 import com.fd.dto.PageDto;
+import com.fd.dto.StyleDto;
 import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
 import com.fd.util.R;
@@ -14,8 +15,6 @@ import java.util.List;
  */
 public interface VectorServer {
 
-//    R uploadFile(MultipartFile file, String coord);
-
     R uploadDirectoryFile(MultipartFile file, String directoryName, String coord);
 
     R uploadDirectoryFileMul(MultipartFile [] file, String directoryName, String coord);
@@ -30,9 +29,23 @@ public interface VectorServer {
 
     R deleteById(Long fileId);
 
-//    FileEntity findByFileName(String fileName);
-
     List<FileEntity> findByDirectory(String directory);
 
+
     FileEntity findByUploadId(Long uploadId);
+
+    /**
+     * 保存样式
+     * @param entity 样式对象
+     * @return R
+     */
+    R saveStyle(StyleDto entity);
+
+
+    /**
+     * 获取样式
+     * @param id outputFileId
+     * @return R
+     */
+    R getStyle(Long id);
 }

+ 21 - 42
src/main/java/com/fd/server/impl/VectorServerImpl.java

@@ -8,10 +8,13 @@ import com.fd.constant.MsgCode;
 import com.fd.constant.TypeCode;
 import com.fd.dto.ConfigJsonDto;
 import com.fd.dto.PageDto;
+import com.fd.dto.StyleDto;
 import com.fd.entity.FileEntity;
 import com.fd.entity.OutputFileEntity;
+import com.fd.entity.StyleEntity;
 import com.fd.repository.FileRepository;
 import com.fd.repository.OutputFileRepository;
+import com.fd.repository.StyleRepository;
 import com.fd.server.CmdServer;
 import com.fd.server.VectorServer;
 import com.fd.util.FileUtils;
@@ -19,6 +22,7 @@ import com.fd.util.R;
 import com.fd.util.RegexUtils;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
@@ -65,6 +69,8 @@ public class VectorServerImpl implements VectorServer {
     @Autowired
     private CmdServer cmdServer;
 
+    @Autowired
+    private StyleRepository styleRepository;
 
     @Override
     public R moveFileToServer(Long fileId, ConfigJsonDto param) {
@@ -159,48 +165,6 @@ public class VectorServerImpl implements VectorServer {
         FileUtils.delFolder(path);
     }
 
-//    @Override
-//    public R uploadFile(MultipartFile file, String coord) {
-//        log.warn("run uploadFile");
-//        if (file.isEmpty() || file.getSize() <= 0) {
-//            log.info("文件为空");
-//            return new R(50001, MsgCode.E50001);
-//        }
-//
-//        // 文件名全名
-//        String fullFileName = file.getOriginalFilename();
-//
-////        // 拼接唯一文件名
-////        String fileName = FileUtils.dateStr() + fullFileName;
-////        String filePath = INPUT_FILE_PATH + fileName;
-//
-//        // 文件保存路径
-//        String filePath = INPUT_FILE_PATH + fullFileName;
-//        log.info("filePath: {}", filePath);
-//
-//        // 写文件到本地
-//        try {
-//            byte[] bytes = file.getBytes();
-//            String content = Base64.getEncoder().encodeToString(bytes);
-//            FileUtils.base64ToFileWriter(content, filePath);
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
-//
-//        // 保存信息到db
-//        FileEntity entity = new FileEntity();
-//        entity.setFileName(fullFileName);
-//        entity.setFileUrl(filePath);
-//        entity.setCreateTime(new Date());
-//        entity.setUpdateTime(new Date());
-//        entity.setType(TypeCode.FILE_TYPE_VECTOR);
-//        entity.setCoord(coord);
-//        entity.setStatus(1);
-//        fileRepository.save(entity);
-//
-//        log.info("end uploadFile");
-//        return new R(200, entity);
-//    }
 
     @Override
     public R uploadDirectoryFile(MultipartFile file, String directoryName, String coord) {
@@ -365,6 +329,21 @@ public class VectorServerImpl implements VectorServer {
     }
 
     @Override
+    public R saveStyle(StyleDto entity) {
+        StyleEntity styleEntity = new StyleEntity();
+        BeanUtils.copyProperties(entity, styleEntity);
+        styleEntity.setCreateTime(new Date());
+        styleEntity.setUpdateTime(new Date());
+        StyleEntity save = styleRepository.save(styleEntity);
+        return new R(200, save.getOutputFileId());
+    }
+
+    @Override
+    public R getStyle(Long id) {
+        return new R(200, styleRepository.findByOutputFileIdTop(id));
+    }
+
+    @Override
     public OutputFileEntity findById(Long fileId) {
         Optional<OutputFileEntity> o = outputFileRepository.findById(fileId);
         if (o.isPresent()) {

+ 1 - 1
src/main/resources/application.properties

@@ -1,7 +1,7 @@
 server.port=8082
 
 # file multipart
-spring.profiles.active=uat
+spring.profiles.active=dev
 spring.servlet.multipart.enabled=true
 spring.servlet.multipart.max-file-size=51200MB
 spring.servlet.multipart.max-request-size=51200MB