Quellcode durchsuchen

add 地图区域管理

18339543638 vor 4 Jahren
Ursprung
Commit
5ea3f574c7

+ 0 - 87
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/GeoEntity.java

@@ -1,87 +0,0 @@
-package org.jetlinks.community.device.entity;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.hswebframework.ezorm.rdb.mapping.annotation.ColumnType;
-import org.hswebframework.web.api.crud.entity.GenericEntity;
-import org.hswebframework.web.validator.CreateGroup;
-import org.jetlinks.community.device.enums.GeoType;
-
-import javax.persistence.Column;
-import javax.persistence.Index;
-import javax.persistence.Table;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.sql.JDBCType;
-import java.util.*;
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName GeoFeature.java
- * @Description TODO
- * @createTime 2021年09月27日 10:54:00
- */
-@Data
-@Table(name = "geo")
-public class GeoEntity  implements Serializable{
-
-    @Column(name = "type")
-    @NotNull(message = "类型不为空", groups = CreateGroup.class)
-    @Schema(description = "类型")
-    private String type;
-
-    @Column(name = "gemoetry")
-    @NotNull(message = "地图信息不为空", groups = CreateGroup.class)
-    @ColumnType(jdbcType = JDBCType.VARCHAR,javaType = Geometry.class)
-    @Schema(description = "地图信息")
-    private Geometry geometry;
-
-    @Column(name="properties")
-    @NotNull(message = "实体属性不能为空", groups = CreateGroup.class)
-    @ColumnType(jdbcType = JDBCType.VARCHAR,javaType = Property.class)
-    @Schema(description = "实体属性")
-    private Property properties;
-
-
-    @Data
-    public static class Geometry implements Serializable {
-        private String type;
-        private List<Object> coordinates;
-    }
-
-
-    @Data
-    public static class Property implements Serializable{
-
-        private String id;
-
-        private String name;
-
-        private String objectId;
-
-        private String objectType;
-
-        private List<String > acroutes;
-
-        private String adcode;
-
-        private List<String > center;
-
-        private List<String > centroid;
-
-        private int childrenNum;
-
-        private Map<String,Object> parent;
-
-        private String parentId;
-
-        private String deviceName;
-
-        private String from;
-
-        private String productId;
-
-        private String productName;
-    }
-}

+ 42 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/geo/GeoEntity.java

@@ -0,0 +1,42 @@
+package org.jetlinks.community.device.entity.geo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.hswebframework.ezorm.rdb.mapping.annotation.ColumnType;
+import org.hswebframework.ezorm.rdb.mapping.annotation.JsonCodec;
+import org.hswebframework.web.validator.CreateGroup;
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.sql.JDBCType;
+import java.util.*;
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName GeoFeature.java
+ * @Description TODO
+ * @createTime 2021年09月27日 10:54:00
+ */
+@Data
+@Table(name = "geo")
+public class GeoEntity  implements Serializable{
+
+    @Column
+    @NotNull(message = "类型不为空", groups = String.class)
+    @Schema(description = "类型")
+    private String type;
+
+
+    @Column
+    @JsonCodec
+    @ColumnType(jdbcType = JDBCType.VARCHAR,javaType = Geometry.class)
+    @NotNull(message = "地图信息不为空", groups = CreateGroup.class)
+    @Schema(description = "地图信息")
+    private Geometry geometry;
+
+    @Column
+    @NotNull(message = "实体属性不能为空", groups = CreateGroup.class)
+    @Schema(description = "实体属性")
+    @ColumnType(jdbcType = JDBCType.VARCHAR,javaType = Property.class)
+    private Property properties;
+}

+ 21 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/geo/Geometry.java

@@ -0,0 +1,21 @@
+package org.jetlinks.community.device.entity.geo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName Geometry.java
+ * @Description TODO
+ * @createTime 2021年09月27日 15:52:00
+ */
+@Data
+@JsonSerialize
+public class Geometry {
+    private String type;
+    private List<Object> coordinates;
+}

+ 41 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/geo/Property.java

@@ -0,0 +1,41 @@
+package org.jetlinks.community.device.entity.geo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.*;
+@Data
+@JsonSerialize
+public  class Property implements Serializable {
+
+    private String id;
+
+    private String name;
+
+    private String objectId;
+
+    private String objectType;
+
+    private List<String > acroutes;
+
+    private String adcode;
+
+    private List<String > center;
+
+    private List<String > centroid;
+
+    private int childrenNum;
+
+    private Map<String,Object> parent;
+
+    private String parentId;
+
+    private String deviceName;
+
+    private String from;
+
+    private String productId;
+
+    private String productName;
+}

+ 1 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/LocalGeoService.java

@@ -1,7 +1,7 @@
 package org.jetlinks.community.device.service;
 
 import org.hswebframework.web.crud.service.GenericReactiveCrudService;
-import org.jetlinks.community.device.entity.GeoEntity;
+import org.jetlinks.community.device.entity.geo.GeoEntity;
 import org.springframework.stereotype.Service;
 
 /**

+ 32 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/data/GeoData.java

@@ -0,0 +1,32 @@
+package org.jetlinks.community.device.service.data;
+
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import lombok.Data;
+import org.jetlinks.community.device.entity.geo.Geometry;
+import org.jetlinks.community.device.entity.geo.Property;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName GeoData.java
+ * @Description TODO
+ * @createTime 2021年09月27日 16:09:00
+ */
+@Data
+public class GeoData {
+
+    private String type;
+
+    private Geometry geometry;
+
+    private Property properties;
+
+    public void setGeometry(String geometry) {
+        this.geometry = JSONUtil.toBean(geometry,Geometry.class);
+    }
+
+    public void setProperties(String properties) {
+        this.properties = JSONUtil.toBean(properties,Property.class);
+    }
+}

+ 11 - 3
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/GeoController.java

@@ -1,14 +1,18 @@
 package org.jetlinks.community.device.web;
 
+import cn.hutool.core.collection.CollectionUtil;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
+import org.hswebframework.web.api.crud.entity.PagerResult;
 import org.hswebframework.web.api.crud.entity.QueryParamEntity;
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.authorization.annotation.Resource;
+import org.hswebframework.web.bean.FastBeanCopier;
 import org.hswebframework.web.crud.service.ReactiveCrudService;
 import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
-import org.jetlinks.community.device.entity.GeoEntity;
+import org.jetlinks.community.device.entity.geo.GeoEntity;
 import org.jetlinks.community.device.service.LocalGeoService;
+import org.jetlinks.community.device.service.data.GeoData;
 import org.jetlinks.community.device.web.request.GeoPayload;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -16,6 +20,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import reactor.core.publisher.Mono;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author lifang
  * @version 1.0.0
@@ -39,8 +46,9 @@ public class GeoController  implements ReactiveServiceCrudController<GeoEntity,
     }
 
     @PostMapping("/geo.json")
-    public Mono<Void> save(@RequestBody Mono<GeoPayload> publisher){
-        return publisher.map(GeoPayload::getFeatures)
+    public Mono<Void> save(@RequestBody GeoPayload publisher){
+        return Mono.just(publisher)
+            .map(GeoPayload::getFeatures)
             .map(Mono::just)
             .flatMap(geoService::insertBatch)
             .then();

+ 1 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/request/GeoPayload.java

@@ -1,7 +1,7 @@
 package org.jetlinks.community.device.web.request;
 
 import lombok.Data;
-import org.jetlinks.community.device.entity.GeoEntity;
+import org.jetlinks.community.device.entity.geo.GeoEntity;
 import java.util.*;
 /**
  * @author lifang