Parcourir la source

add 下发指令

18339543638 il y a 4 ans
Parent
commit
8fba5e87e7

+ 18 - 6
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/entity/DeviceDirectivesEntity.java

@@ -7,11 +7,11 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import org.hswebframework.ezorm.rdb.mapping.annotation.*;
 import org.hswebframework.web.api.crud.entity.GenericEntity;
+import org.hswebframework.web.dict.Dict;
+import org.hswebframework.web.dict.EnumDict;
 import org.hswebframework.web.validator.CreateGroup;
-import org.jetlinks.community.device.enums.DeviceProductState;
 import org.jetlinks.community.device.enums.DirectiveState;
 import org.jetlinks.core.message.DeviceMessage;
-import org.jetlinks.core.message.MessageType;
 import javax.persistence.Column;
 import javax.persistence.Index;
 import javax.persistence.Table;
@@ -57,7 +57,7 @@ public class DeviceDirectivesEntity extends GenericEntity<String> {
     @Comment("消息类型")
     @Column(name = "message_type",nullable = false)
     @NotBlank(message = "消息类型不能为空", groups = CreateGroup.class)
-    private String messageType;
+    private MessageType messageType;
 
     @Comment("错误原因")
     @Column(name = "last_error")
@@ -68,14 +68,12 @@ public class DeviceDirectivesEntity extends GenericEntity<String> {
     @Column(name = "reply_message")
     @ColumnType(jdbcType = JDBCType.CLOB)
     @Schema(description = "回复内容")
-    @JsonCodec
     private DeviceMessage replyMessage;
 
     @Comment("下发指令")
     @Column(name = "send_message")
     @ColumnType(jdbcType = JDBCType.CLOB)
     @Schema(description = "下发指令")
-    @JsonCodec
     private DeviceMessage sendMessage;
 
     @Column(name = "state",length = 16)
@@ -93,8 +91,22 @@ public class DeviceDirectivesEntity extends GenericEntity<String> {
                                             String deviceId,
                                             String messageId,
                                             long sendTimestamp,
-                                            String messageType, DeviceMessage sendMessage) {
+                                            MessageType messageType, DeviceMessage sendMessage) {
         return new DeviceDirectivesEntity(productId,deviceId,messageId,sendTimestamp,messageType,null,null,sendMessage,null);
     }
 
+    @AllArgsConstructor
+    @Getter
+    @Dict("directive-msg-state")
+    public static enum MessageType implements EnumDict<String> {
+        READ_PROPERTY("读取属性"),
+        WRITE_PROPERTY("设置属性"),
+        INVOKE_FUNCTION("调用功能");
+
+        private String text;
+        @Override
+        public String getValue() {
+            return this.name();
+        }
+    }
 }

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

@@ -38,9 +38,9 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
         directivesEntity.setSendMessage(message);
         directivesEntity.setSendTimestamp(message.getTimestamp());
         directivesEntity.setMessageId(message.getMessageId());
-        MessageType directive = isDirective(message);
+        DeviceDirectivesEntity.MessageType directive = isDirective(message);
         if(directive!=null){
-            directivesEntity.setMessageType(directive.name());
+            directivesEntity.setMessageType(directive);
             directivesEntity.setDeviceId(device.getDeviceId());
             return device.getProduct()
                 .flatMap(product->{
@@ -54,7 +54,7 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
 
     @Override
     public <R extends DeviceMessage> Flux<R> afterSent(DeviceOperator device, DeviceMessage message, Flux<R> reply) {
-        MessageType directive = isDirective(message);
+        DeviceDirectivesEntity.MessageType directive = isDirective(message);
         if(directive!=null){
             return reply.cast(DeviceMessage.class)
                 .map(msg->
@@ -75,15 +75,15 @@ public class DeviceDirectiveSendInterceptor implements DeviceMessageSenderInterc
         return reply;
     }
 
-    private MessageType isDirective(DeviceMessage message){
+    private DeviceDirectivesEntity.MessageType isDirective(DeviceMessage message){
         if(message instanceof ReadPropertyMessage){
-            return MessageType.READ_PROPERTY;
+            return DeviceDirectivesEntity.MessageType.READ_PROPERTY;
         }
         if(message instanceof FunctionInvokeMessage){
-            return MessageType.INVOKE_FUNCTION;
+            return DeviceDirectivesEntity.MessageType.INVOKE_FUNCTION;
         }
         if(message instanceof WritePropertyMessage){
-            return MessageType.WRITE_PROPERTY;
+            return DeviceDirectivesEntity.MessageType.WRITE_PROPERTY;
         }
         return null;
     }

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

@@ -7,7 +7,6 @@ import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.authorization.annotation.Resource;
 import org.hswebframework.web.crud.service.ReactiveCrudService;
 import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
-import org.jetlinks.community.device.entity.DeviceCategory;
 import org.jetlinks.community.device.entity.DeviceDirectivesEntity;
 import org.jetlinks.community.device.service.DeviceDirectivesService;
 import org.springframework.web.bind.annotation.RequestMapping;