Forráskód Böngészése

add 地图区域管理

18339543638 4 éve
szülő
commit
6988c9d7cb

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

@@ -0,0 +1,84 @@
+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.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 java.io.Serializable;
+import java.sql.JDBCType;
+import java.util.*;
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName GeoEntity.java
+ * @Description TODO
+ * @createTime 2021年09月27日 10:54:00
+ */
+@Data
+@Table(name = "geo")
+public class GeoEntity {
+
+    @Column(length = 64, nullable = false, updatable = false)
+    @Schema(description = "地图信息")
+    private String type;
+
+    @Column(name = "gemoetry")
+    @NotBlank(message = "地图信息不为空", groups = CreateGroup.class)
+    @ColumnType(jdbcType = JDBCType.CLOB,javaType = Geometry.class)
+    @Schema(description = "地图信息")
+    private Geometry geometry;
+
+    @Column(name="properties")
+    @NotBlank(message = "实体属性不能为空", groups = CreateGroup.class)
+    @ColumnType(jdbcType = JDBCType.CLOB,javaType = Property.class)
+    @Schema(description = "实体属性")
+    private Property properties;
+
+
+    @Data
+    public static class Geometry implements Serializable {
+        private GeoType 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;
+    }
+}

+ 30 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/enums/GeoType.java

@@ -0,0 +1,30 @@
+package org.jetlinks.community.device.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.web.dict.Dict;
+import org.hswebframework.web.dict.EnumDict;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName GeoType.java
+ * @Description TODO
+ * @createTime 2021年09月27日 10:54:00
+ */
+@AllArgsConstructor
+@Getter
+@Dict("geo-type")
+public enum  GeoType  implements EnumDict<String> {
+    Point,
+    MultiPolygon
+    ;
+    @Override
+    public String getValue() {
+        return name();
+    }
+
+    @Override
+    public String getText() {
+        return null;
+    }}

+ 0 - 5
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/LocalFirmwareUpgradeHistoryService.java

@@ -1,12 +1,8 @@
 package org.jetlinks.community.device.service;
 
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.cron.CronUtil;
-import com.google.common.collect.Maps;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.elasticsearch.common.geo.GeoUtils;
 import org.hswebframework.ezorm.rdb.mapping.ReactiveUpdate;
 import org.hswebframework.web.crud.service.GenericReactiveCrudService;
 import org.jetlinks.community.device.entity.DeviceFirmwareEntity;
@@ -21,7 +17,6 @@ import org.jetlinks.core.device.DeviceOperator;
 import org.jetlinks.core.device.DeviceRegistry;
 import org.jetlinks.core.message.firmware.*;
 import org.springframework.stereotype.Service;
-import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;

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

@@ -0,0 +1,16 @@
+package org.jetlinks.community.device.service;
+
+import org.hswebframework.web.crud.service.GenericReactiveCrudService;
+import org.jetlinks.community.device.entity.GeoEntity;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName LocalGeoService.java
+ * @Description TODO
+ * @createTime 2021年09月27日 11:20:00
+ */
+@Service
+public class LocalGeoService extends GenericReactiveCrudService<GeoEntity, String> {
+}

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

@@ -38,7 +38,7 @@ import java.util.Map;
 import java.util.function.Function;
 
 @RestController
-@RequestMapping("/device/message/task")
+@RequestMapping({"/device/message/task","/device"})
 @Slf4j
 @Authorize
 @Resource(id = "device-instance", name = "设备实例")

+ 18 - 6
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/GeoController.java

@@ -2,9 +2,15 @@ package org.jetlinks.community.device.web;
 
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
+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.crud.service.ReactiveCrudService;
+import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
+import org.jetlinks.community.device.entity.DeviceProductEntity;
+import org.jetlinks.community.device.entity.GeoEntity;
 import org.jetlinks.community.device.service.LocalDeviceInstanceService;
+import org.jetlinks.community.device.service.LocalGeoService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -18,16 +24,22 @@ import reactor.core.publisher.Mono;
  * @createTime 2021年09月22日 14:35:00
  */
 @RestController
-@RequestMapping("/geo")
+@RequestMapping("/geo/object")
 @Authorize
 @Resource(id = "geo-manager", name = "地理位置管理")
 @Tag(name = "地理位置管理")
 @AllArgsConstructor
-public class GeoController {
-    private final LocalDeviceInstanceService deviceInstanceService;
+public class GeoController  implements ReactiveServiceCrudController<GeoEntity, String> {
+    private final LocalGeoService geoService;
 
-    @PostMapping("/object/_search/geo.json")
-    public Mono<Object> search(){
-        return Mono.empty();
+
+    @PostMapping("/_search/geo.json")
+    public Mono<?> search(Mono<QueryParamEntity> filter){
+        return geoService.queryPager(filter);
+    }
+
+    @Override
+    public ReactiveCrudService<GeoEntity, String> getService() {
+        return geoService;
     }
 }