Forráskód Böngészése

add 添加子设备消息类型

18339543638 4 éve
szülő
commit
24e6030402

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

@@ -121,6 +121,7 @@ public class DeviceDirectivesEntity extends GenericEntity<String> {
     public static enum MessageType implements EnumDict<String> {
         READ_PROPERTY("读取属性"),
         WRITE_PROPERTY("设置属性"),
+        CHILD("子设备消息"),
         INVOKE_FUNCTION("调用功能");
 
         private String text;

+ 6 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/interceptor/DeviceDirectiveSendInterceptor.java

@@ -8,6 +8,7 @@ import org.jetlinks.community.device.enums.DirectiveState;
 import org.jetlinks.community.device.service.DeviceDirectivesService;
 import org.jetlinks.core.device.DeviceOperator;
 import org.jetlinks.core.exception.DeviceOperationException;
+import org.jetlinks.core.message.ChildDeviceMessage;
 import org.jetlinks.core.message.CommonDeviceMessage;
 import org.jetlinks.core.message.DeviceMessage;
 import org.jetlinks.core.message.function.FunctionInvokeMessage;
@@ -58,7 +59,8 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
     public <R extends DeviceMessage> Flux<R> afterSent(DeviceOperator device, DeviceMessage message, Flux<R> reply) {
         DeviceDirectivesEntity.MessageType directive = isDirective(message);
         if(directive!=null){
-            return reply.cast(DeviceMessage.class)
+            return reply
+                .cast(DeviceMessage.class)
                 .flatMap(msg->
                     deviceDirectivesService.createUpdate()
                         .where(DeviceDirectivesEntity::getDeviceId,msg.getDeviceId())
@@ -88,6 +90,9 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
         if(message instanceof WritePropertyMessage){
             return DeviceDirectivesEntity.MessageType.WRITE_PROPERTY;
         }
+        if(message instanceof ChildDeviceMessage){
+            return DeviceDirectivesEntity.MessageType.CHILD;
+        }
         return null;
     }
 }

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

@@ -72,6 +72,7 @@ public class DeviceDirectiveController implements
                     .flatMap(sender->{
                             directive.getDownstream().addHeader(Headers.async,true);
                             ( (CommonDeviceMessage)directive.getDownstream()).setMessageId(IdUtils.newUUID());
+                            ( (CommonDeviceMessage)directive.getDownstream()).setTimestamp(System.currentTimeMillis());
                             return sender.send(directive.getDownstream())
                                 .onErrorContinue((e,obj)->log.warn("指令重新发送失败{}",directive))
                                 .then();