ソースを参照

add 区域管理

18339543638 4 年 前
コミット
c2e77663ef

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

@@ -37,7 +37,15 @@ public class GeoJson implements Serializable{
         return new Feature();
     }
 
-    public static GeoJson of(List<Feature> features, String typeName){
+    public static GeoJson ofFeatures(List<Feature> features, String typeName){
        return new GeoJson(typeName,features);
     }
+
+    public static GeoJson ofGeoJsons(List<GeoJson> geoJsons, String typeName){
+        List<Feature> features = new ArrayList<>();
+        for (GeoJson geoJson : geoJsons) {
+            features.addAll(geoJson.getFeatures()) ;
+        }
+        return new GeoJson(typeName,features);
+    }
 }

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

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

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

@@ -20,7 +20,9 @@ import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -46,15 +48,17 @@ public class GeoController  implements ReactiveTreeServiceQueryController<GeoReg
     public Mono<?> findAllTreeTp2(@Parameter(hidden = true) QueryParamEntity paramEntity) {
         return this.findAllChildren(paramEntity)
             .collectSortedList()
-            .map(result->  Tuple.of(TreeSupportEntity.list2tree(new HashSet<>(result),GeoRegionEntity::setChildren), GeoJson.of(result.stream().map(GeoRegionEntity::getRegion)
+            .map(result->  Tuple.of(TreeSupportEntity.list2tree(new HashSet<>(result),GeoRegionEntity::setChildren), GeoJson.ofGeoJsons(
+                result.stream().map(GeoRegionEntity::getRegion)
                 .filter(Objects::nonNull).collect(Collectors.toList()), "FeatureCollection")));
     }
 
     @GetMapping("/_query/all")
     @QueryAction
     @QueryOperation(summary = "使用GET动态查询并返回树形结构以及geo集合信息")
-    public Flux<GeoRegionEntity> findAll(QueryParamEntity paramEntity) {
-        return getService().query(paramEntity);
+    public Mono<List<GeoRegionEntity>>  findAll(QueryParamEntity paramEntity) {
+        Mono<List<GeoRegionEntity>> map = getService().query(paramEntity).collectSortedList().map(result -> TreeSupportEntity.list2tree(result, GeoRegionEntity::setChildren));
+        return map;
     }
     /**
      * 区域管理新增或新增