Jelajahi Sumber

add 地图区域管理

18339543638 4 tahun lalu
induk
melakukan
b08fdb5f83

+ 10 - 3
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/DeviceTagsService.java

@@ -1,5 +1,6 @@
 package org.jetlinks.community.device.service;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.AllArgsConstructor;
 import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository;
 import org.hswebframework.ezorm.rdb.mapping.defaults.SaveResult;
@@ -26,8 +27,8 @@ public class DeviceTagsService  extends GenericReactiveCrudService<DeviceTagEnti
     private final LocalDeviceInstanceService instanceService;
     private final LocalDeviceProductService productService;
     private final ReactiveRepository<GeoProperty, String> propertyRepository;
-    @Override
-    public Mono<SaveResult> save(Publisher<DeviceTagEntity> entityPublisher) {
+
+    public Mono<Void> saveOrUpdate(Publisher<DeviceTagEntity> entityPublisher) {
         return Mono.from(entityPublisher)
             //判断地理位置
             .doOnNext(entity->{
@@ -72,7 +73,13 @@ public class DeviceTagsService  extends GenericReactiveCrudService<DeviceTagEnti
                         });
                 }
             })
-            .flatMap(entity->this.getRepository().save(entity));
+            .flatMap(entity->{
+                if(StrUtil.isNotEmpty(entity.getId())){
+                    return this.updateById(entity.getId(),Mono.just(entity));
+                }
+                return this.getRepository().save(entity);
+            })
+            .then();
     }
 
     //判断是否为设备坐标标签

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

@@ -433,7 +433,7 @@ public class DeviceInstanceController implements
                 tag.setDeviceId(deviceId);
                 tag.tryValidate();
             })
-            .as(tagsService::save)
+            .as(tagsService::saveOrUpdate)
             .onErrorMap(DuplicateKeyException.class, err -> new BusinessException("标签不可重复添加", err))
             .thenMany(getDeviceTags(deviceId));
     }