Kaynağa Gözat

add 地理区域目录

18339543638 4 yıl önce
ebeveyn
işleme
44e4c2829b

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

@@ -19,7 +19,7 @@ import java.util.*;
 @Data
 @EqualsAndHashCode(callSuper = false)
 public  class GeoRegionEntity extends  GenericTreeSortSupportEntity<String> {
-    @Column
+    @Column(unique = true)
     @Schema(description = "属性名称")
     private String name;
 
@@ -44,9 +44,6 @@ public  class GeoRegionEntity extends  GenericTreeSortSupportEntity<String> {
     @Column
     private int childrenNum;
 
-    @Column
-    private String parentId;
-
     @Column
     @ColumnType(jdbcType = JDBCType.CLOB)
     @JsonCodec

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

@@ -1,5 +1,6 @@
 package org.jetlinks.community.device.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import org.hswebframework.web.crud.service.GenericReactiveTreeSupportCrudService;
 import org.hswebframework.web.id.IDGenerator;
@@ -27,14 +28,17 @@ public class LocalGeoRegionService extends GenericReactiveTreeSupportCrudService
      * @return
      */
     public Mono<Void> updateChildrenNum(String parentId){
-        return  Mono.justOrEmpty(parentId)
-            .defaultIfEmpty("")
-            .filter(StrUtil::isNotBlank)
-            .zipWith(Mono.defer(()->this.createQuery().where(GeoRegionEntity::getParentId,parentId).count()))
-            .map(tp2->
+        if(StrUtil.isEmpty(parentId)){
+            return Mono.empty();
+        }
+        return this.createQuery()
+            .where(GeoRegionEntity::getParentId,parentId)
+            .count()
+            .flatMap(count->
                 this.createUpdate()
                     .where(GeoRegionEntity::getId,parentId)
-                    .set(GeoRegionEntity::getChildrenNum,tp2.getT2()))
+                    .set(GeoRegionEntity::getChildrenNum,count)
+                    .execute())
             .then();
     }
 
@@ -45,7 +49,9 @@ public class LocalGeoRegionService extends GenericReactiveTreeSupportCrudService
 
     @Override
     public void setChildren(GeoRegionEntity entity, List<GeoRegionEntity> children) {
-       entity.setChildren( Optional.ofNullable(entity.getChildren()).orElse(new ArrayList<>()));
-       entity.getChildren().addAll(children);
+        entity.setChildren( Optional.ofNullable(entity.getChildren()).orElse(new ArrayList<>()));
+        if (CollectionUtil.isNotEmpty(children)) {
+            entity.getChildren().addAll(children);
+        }
     }
 }

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

@@ -42,11 +42,11 @@ public class GeoController  implements ReactiveTreeServiceQueryController<GeoReg
             StrUtil.isEmpty(region.getId())?Mono.just(new GeoRegionEntity()):geoService.findById(region.getId())
             .defaultIfEmpty(new GeoRegionEntity()),geoService.save(Mono.just(region)))
             .flatMap(tp2->
-                Mono.justOrEmpty(tp2.getT1().getParentId())
-                    .defaultIfEmpty("")
-                    .flatMap(geoService::updateChildrenNum))
-            .thenReturn(Mono.justOrEmpty(region.getParentId())
-                .defaultIfEmpty("").flatMap(geoService::updateChildrenNum))
+                Mono.zip(
+                    Mono.justOrEmpty(tp2.getT1().getParentId())
+                    .flatMap(geoService::updateChildrenNum),
+                    Mono.justOrEmpty(region.getParentId())
+                        .flatMap(geoService::updateChildrenNum)))
             .then();
     }