Browse Source

change 地理区域目录结构

18339543638 4 years ago
parent
commit
66911a30ae

+ 1 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/GeoRegionEntity.java

@@ -29,7 +29,7 @@ public  class GeoRegionEntity extends  GenericTreeSortSupportEntity<String> {
     @ColumnType(jdbcType = JDBCType.CLOB)
     @JsonCodec
     @NotBlank(message = "请绘制坐标区域")
-    private GeoJson region;
+    private GeoJson.Feature region;
 
     //子菜单
     private List<GeoRegionEntity> children;

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

@@ -70,7 +70,7 @@ public class LocalGeoRegionService extends GenericReactiveTreeSupportCrudService
                 .where()
                 .like$(e::getPath)
                 .execute()
-                .zipWith(Mono.defer(()->
+                .zipWith(StrUtil.isEmpty(e.getParentId())?Mono.empty():Mono.defer(()->
                     this.createQuery()
                         .where(GeoRegionEntity::getParentId,e.getParentId())
                         .count()

+ 21 - 0
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/GeoController.java

@@ -1,22 +1,34 @@
 package org.jetlinks.community.device.web;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import groovy.lang.Tuple2;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import io.vavr.Tuple;
 import lombok.AllArgsConstructor;
 import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository;
+import org.hswebframework.web.api.crud.entity.QueryOperation;
+import org.hswebframework.web.api.crud.entity.QueryParamEntity;
 import org.hswebframework.web.authorization.annotation.Authorize;
+import org.hswebframework.web.authorization.annotation.QueryAction;
 import org.hswebframework.web.authorization.annotation.Resource;
 import org.hswebframework.web.crud.service.ReactiveTreeSortEntityService;
 import org.hswebframework.web.crud.web.reactive.ReactiveDeleteController;
 import org.hswebframework.web.crud.web.reactive.ReactiveTreeServiceQueryController;
 import org.hswebframework.web.exception.NotFoundException;
+import org.jetlinks.community.device.entity.DeviceInstanceEntity;
+import org.jetlinks.community.device.entity.GeoJson;
 import org.jetlinks.community.device.entity.GeoRegionEntity;
 import org.jetlinks.community.device.service.LocalGeoRegionService;
 import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Mono;
 
+import java.util.List;
+import java.util.Objects;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @author lifang
@@ -34,6 +46,15 @@ import java.util.Optional;
 public class GeoController  implements ReactiveTreeServiceQueryController<GeoRegionEntity, String>{
     private final LocalGeoRegionService geoService;
 
+    @GetMapping("/_query/tree/tp2")
+    @QueryAction
+    @QueryOperation(summary = "使用GET动态查询并返回树形结构以及geo集合信息")
+    public Mono<?> findAllTreeTp2(@Parameter(hidden = true) QueryParamEntity paramEntity) {
+        return getService().queryResultToTree(paramEntity)
+            .map(result->  Tuple.of(result, GeoJson.of(result.stream().map(GeoRegionEntity::getRegion)
+                .filter(Objects::nonNull).collect(Collectors.toList()), "FeatureCollection")));
+    }
+
     /**
      * 区域管理新增或新增
      * @param region