18339543638 преди 4 години
родител
ревизия
d5d7634fd8

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

@@ -15,7 +15,6 @@ import java.util.*;
 @JsonSerialize
 @Table(name = "dev_geo_region")
 @Data
-@EqualsAndHashCode(callSuper = false)
 public  class GeoRegionEntity extends  GenericTreeSortSupportEntity<String> {
 
     @Column
@@ -52,4 +51,16 @@ public  class GeoRegionEntity extends  GenericTreeSortSupportEntity<String> {
         return children;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        GeoRegionEntity that = (GeoRegionEntity) o;
+        return Objects.equals(getId(), that.getId());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getName(), getChildrenNum(), getRegion(), getChildren());
+    }
 }

+ 4 - 2
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceInstanceController.java

@@ -878,7 +878,8 @@ public class DeviceInstanceController implements
             return instanceService.queryPager(param.getQuery())
                 .doOnNext(result->result.getData().forEach(DeviceInstanceEntity::toGeoJson)
                 ).map(result->
-                    Tuple.of(result,GeoJson.of(result.getData().stream().map(DeviceInstanceEntity::getGeoFeature).collect(Collectors.toList()), "FeatureCollection"))
+                    Tuple.of(result,GeoJson.of(result.getData().stream().map(DeviceInstanceEntity::getGeoFeature)
+                        .filter(Objects::nonNull).collect(Collectors.toList()), "FeatureCollection"))
                 );
         }else {
             /**
@@ -889,7 +890,8 @@ public class DeviceInstanceController implements
                 .queryPager(GeoIndexProvider.GEO,param.getQuery(),param.getFilter(),DeviceInstanceEntity.class)
                 .doOnNext(result->result.getData().forEach(DeviceInstanceEntity::toGeoJson))
                 .map(result->
-                    Tuple.of(result,GeoJson.of(result.getData().stream().map(DeviceInstanceEntity::getGeoFeature).collect(Collectors.toList()), "FeatureCollection"))
+                    Tuple.of(result,GeoJson.of(result.getData().stream().map(DeviceInstanceEntity::getGeoFeature)
+                        .filter(Objects::nonNull).collect(Collectors.toList()), "FeatureCollection"))
                 );
         }
     }

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

@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
+import java.util.HashSet;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -43,7 +44,7 @@ public class GeoController  implements ReactiveTreeServiceQueryController<GeoReg
     @QueryOperation(summary = "使用GET动态查询并返回树形结构以及geo集合信息")
     public Mono<?> findAllTreeTp2(@Parameter(hidden = true) QueryParamEntity paramEntity) {
         return this.findAllChildrenTree(paramEntity)
-            .map(result->  Tuple.of(result, GeoJson.of(result.stream().map(GeoRegionEntity::getRegion)
+            .map(result->  Tuple.of(new HashSet<GeoRegionEntity>(result), GeoJson.of(result.stream().map(GeoRegionEntity::getRegion)
                 .filter(Objects::nonNull).collect(Collectors.toList()), "FeatureCollection")));
     }