Browse Source

修复设备未激活无法获取详情的问题

zhou-hao 5 năm trước cách đây
mục cha
commit
2ae2f3775d

+ 5 - 5
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/response/DeviceDetail.java

@@ -12,10 +12,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import reactor.core.publisher.Mono;
 
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -133,7 +130,10 @@ public class DeviceDetail {
         setId(device.getId());
         setName(device.getName());
         setState(device.getState());
-        setRegisterTime(device.getRegistryTime());
+
+        Optional.ofNullable(device.getRegistryTime())
+            .ifPresent(this::setRegisterTime);
+
         setCreateTime(device.getCreateTime());
 
         if (!CollectionUtils.isEmpty(device.getConfiguration())) {

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

@@ -223,7 +223,7 @@ public class LocalDeviceInstanceService extends GenericReactiveCrudService<Devic
         return this.findById(deviceId)
             .zipWhen(device -> deviceProductService.findById(device.getProductId()),
                 (device, product) -> new DeviceDetail().with(device).with(product))
-            .flatMap(detail -> registry.getDevice(deviceId).flatMap(detail::with))
+            .flatMap(detail -> registry.getDevice(deviceId).flatMap(detail::with).defaultIfEmpty(detail))
             .flatMap(detail -> tagRepository
                 .createQuery()
                 .where(DeviceTagEntity::getDeviceId, deviceId)

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

@@ -278,8 +278,8 @@ public class DeviceInstanceController implements
     //保存设备标签
     @PatchMapping("/{deviceId}/tag")
     @SaveAction
-    public Mono<Void> saveDeviceTag(@PathVariable String deviceId,
-                                    @RequestBody Flux<DeviceTagEntity> tags) {
+    public Flux<DeviceTagEntity> saveDeviceTag(@PathVariable String deviceId,
+                                               @RequestBody Flux<DeviceTagEntity> tags) {
         return tags
             .doOnNext(tag -> {
                 tag.setId(deviceId.concat(":").concat(tag.getKey()));
@@ -287,7 +287,7 @@ public class DeviceInstanceController implements
                 tag.tryValidate();
             })
             .as(tagRepository::save)
-            .then();
+            .thenMany(getDeviceTags(deviceId));
     }
 
     //已废弃