Selaa lähdekoodia

报文解析修改

li1441391872 7 kuukautta sitten
vanhempi
commit
d4ad3da699

+ 2 - 3
build-and-push-docker.sh

@@ -1,5 +1,5 @@
 #  !/usr/bin/env bash
-dockerImage=registry.cn-hangzhou.aliyuncs.com/cq-fire-108/cq-fire-108:230714     #230209      #1116
+dockerImage=registry.cn-hangzhou.aliyuncs.com/cq-fire-109/cq-fire-108:2406272    #230209      #1116
 mvn clean package \
 -Dmaven.test.skip=true \
 -Dmaven.build.timestamp="$(date"+%Y-%m-%d%H:%M:%S")"
@@ -9,5 +9,4 @@ else
   cd ./cq-fire || exit
 #  docker build -t "$dockerImage"
   docker build -t "$dockerImage" . && docker push "$dockerImage"
-fi
-
+fi

+ 0 - 1
build.sh

@@ -1,3 +1,2 @@
 #!/usr/bin/env bash
-
 ./mvnw clean package -Dmaven.test.skip=true -Dmaven.build.timestamp="$(date "+%Y-%m-%d %H:%M:%S")"

+ 1 - 0
cq-fire/Dockerfile

@@ -11,6 +11,7 @@ COPY --from=builder application/snapshot-dependencies/ ./
 COPY --from=builder application/spring-boot-loader/ ./
 COPY --from=builder application/application/ ./
 COPY docker-entrypoint.sh ./
+RUN sed -i 's/\r//' docker-entrypoint.sh
 COPY config ./config
 COPY config/font/ /usr/share/fonts/truetype/
 RUN chmod +x docker-entrypoint.sh

+ 11 - 1
cq-fire/src/main/java/org/jetlinks/pro/cqfire/web/api/ApiController.java

@@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import reactor.core.publisher.Mono;
 
+import java.util.Locale;
+
 @RestController
 @RequestMapping("/api/product")
 @AllArgsConstructor
@@ -70,7 +72,15 @@ public class ApiController {
                         return Mono.error(new UnsupportedOperationException("产品未通过测试"));
                     });
             })
-            .switchIfEmpty(productService.findById(productId));
+            .switchIfEmpty(productService.findById(DigestUtils.md5Hex(corpName + classifiedName + model)));
+    }
+
+    public static void main(String[] args) {
+        String s1 = "陕西拓普索尔电子科技有限责任公司"+"一体式液位设备"+"TSM-04L";
+        String s2 = DigestUtils.md5Hex(s1);
+        System.out.println(s2);
+        String s = DigestUtils.md5Hex("陕西拓普索尔电子科技有限责任公司一体式液位设备TSM-04L");
+        System.out.println(s);
     }
 
 }

+ 1 - 1
dist/update.sh

@@ -1,3 +1,3 @@
-# !/usr/bin/env bash
+#!/usr/bin/env bash
 
 docker-compose pull && docker-compose up -d

+ 55 - 16
expands-components/jetlinks-media/src/main/java/org/jetlinks/pro/media/gb28181/message/Alarm.java

@@ -1,6 +1,9 @@
 package org.jetlinks.pro.media.gb28181.message;
 
 import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -22,33 +25,48 @@ import java.util.Optional;
 @ToString
 public class Alarm implements SipDeviceMessage {
 
-    @JacksonXmlProperty(localName ="DeviceID")
+    @JacksonXmlProperty(localName = "DeviceID")
     private String deviceId;
 
-    @JacksonXmlProperty(localName ="AlarmPriority")
+    @JacksonXmlProperty(localName = "AlarmPriority")
     private String alarmPriority;
 
-    @JacksonXmlProperty(localName ="AlarmTime")
+    @JacksonXmlProperty(localName = "AlarmTime")
     private String alarmTime;
 
-    @JacksonXmlProperty(localName ="AlarmMethod")
+    @JacksonXmlProperty(localName = "AlarmMethod")
     private String alarmMethod;
 
-    @JacksonXmlProperty(localName ="Longitude")
+    @JacksonXmlProperty(localName = "Longitude")
     private Float longitude;
 
-    @JacksonXmlProperty(localName ="Latitude")
+    @JacksonXmlProperty(localName = "Latitude")
     private Float latitude;
 
-    @JacksonXmlProperty(localName ="AlarmDescription")
+    @JacksonXmlProperty(localName = "AlarmDescription")
     private String description;
 
-    @JacksonXmlProperty(localName ="Info")
+    @JacksonXmlProperty(localName = "Info")
     private Info info;
 
-    @JacksonXmlProperty(localName ="SN")
+    @JacksonXmlProperty(localName = "SN")
     private String sn;
 
+    @JsonIgnore
+    private Map<String, Object> others;
+
+    @JsonAnyGetter
+    public Map<String, Object> getOthers() {
+        return others;
+    }
+
+    @JsonAnySetter
+    public void setOther(String key, Object value) {
+        if (others == null) {
+            others = new HashMap<>();
+        }
+        others.put(key, value);
+    }
 
     @Getter
     @Setter
@@ -57,11 +75,25 @@ public class Alarm implements SipDeviceMessage {
         @JacksonXmlProperty(localName = "AlarmType")
         private String alarmType;
 
-        @JacksonXmlProperty(localName ="AlarmTypeParam")
+        @JacksonXmlProperty(localName = "AlarmTypeParam")
         private AlarmTypeParam alarmTypeParam;
 
-        @JacksonXmlProperty(localName ="ImageUrl")
-        private String imageUrl;
+        @JsonIgnore
+        private Map<String, Object> others;
+
+        @JsonAnyGetter
+        public Map<String, Object> getOthers() {
+            return others;
+        }
+
+        @JsonAnySetter
+        public void setOther(String key, Object value) {
+            if (others == null) {
+                others = new HashMap<>();
+            }
+            others.put(key, value);
+        }
+
 
         public Optional<AlarmType> getAlarmTypeEnum(AlarmMethod method) {
             return AlarmType.of(method, alarmType);
@@ -70,13 +102,11 @@ public class Alarm implements SipDeviceMessage {
         public Optional<AlarmType> getAlarmTypeEnum(String method) {
             return AlarmType.of(method, alarmType);
         }
-
-
     }
 
     @Getter
     @Setter
-    public static class AlarmTypeParam{
+    public static class AlarmTypeParam {
         //1-进入区域;2-离开区域
         @JacksonXmlProperty(localName = "EventType")
         private String eventType;
@@ -97,13 +127,22 @@ public class Alarm implements SipDeviceMessage {
         if (longitude != null && latitude != null) {
             data.put("lonlat", new GeoPoint(longitude, latitude));
         }
+
+        if (this.others != null) {
+            data.putAll(this.others);
+        }
+
         if (info != null) {
             info.getAlarmTypeEnum(alarmMethod)
                 .ifPresent(type -> data.put("AlarmTypeText", type.getText()));
             data.put("AlarmType", info.alarmType);
             data.put("AlarmTypeParam", JSON.toJSON(info.alarmTypeParam));
-            data.put("imageUrl", info.getImageUrl());
+            if (info.getOthers() != null) {
+                data.putAll(info.getOthers());
+            }
         }
+
+
         event.setData(data);
         return Flux.just(event);
     }

+ 22 - 1
expands-components/jetlinks-media/src/main/java/org/jetlinks/pro/media/service/MediaDeviceService.java

@@ -3,8 +3,12 @@ package org.jetlinks.pro.media.service;
 import org.hswebframework.web.crud.events.EntityDeletedEvent;
 import org.hswebframework.web.crud.events.EntityModifyEvent;
 import org.hswebframework.web.crud.service.GenericReactiveCrudService;
+import org.jetlinks.core.device.DeviceOperator;
+import org.jetlinks.core.device.DeviceRegistry;
+import org.jetlinks.core.message.DeviceMessage;
 import org.jetlinks.pro.device.entity.DeviceInstanceEntity;
 import org.jetlinks.pro.device.enums.DeviceState;
+import org.jetlinks.pro.gateway.annotation.Subscribe;
 import org.jetlinks.pro.media.entity.MediaChannelEntity;
 import org.jetlinks.pro.media.entity.MediaDeviceEntity;
 import org.jetlinks.pro.media.enums.ChannelStatus;
@@ -27,10 +31,27 @@ public class MediaDeviceService extends GenericReactiveCrudService<MediaDeviceEn
 
     private final MediaChannelService channelService;
 
-    public MediaDeviceService(MediaChannelService channelService) {
+    private final DeviceRegistry deviceRegistry;
+
+    public MediaDeviceService(MediaChannelService channelService,DeviceRegistry deviceRegistry) {
         this.channelService = channelService;
+        this.deviceRegistry = deviceRegistry;
+    }
+
+    //设备上线离线时,同步更新视频设备状态
+    @Subscribe(value = "/device/*/*/online,offline")
+    public Mono<Void> syncMediaDeviceState(DeviceMessage message) {
+        return deviceRegistry
+            .getDevice(message.getDeviceId())
+            .flatMap(DeviceOperator::getState)
+            .flatMap(state -> this
+                .syncDeviceState(message.getDeviceId(),
+                    state.equals(org.jetlinks.core.device.DeviceState.online)
+                        ? DeviceState.online
+                        : DeviceState.offline));
     }
 
+
     public Mono<Void> syncDeviceState(String deviceId, DeviceState state) {
         return this
             .createUpdate()

+ 1 - 1
jetlinks-components/network-component/http-component/src/main/java/org/jetlinks/pro/network/http/executor/HttpClientTaskExecutorProvider.java

@@ -41,7 +41,7 @@ public class HttpClientTaskExecutorProvider implements TaskExecutorProvider {
                         .flatMap(message -> client.request(message)
                                 .map(responseMessage -> RuleDataCodecs.getCodec(HttpResponseMessage.class)
                                         .map(codec -> codec.encode(responseMessage, config.getResponsePayloadType()))
-                                        .orElseThrow(() -> new UnsupportedOperationException("unsupported encode message:{}" + responseMessage)))));
+                                        .orElseGet(() -> new UnsupportedOperationException("unsupported encode message:{}" + responseMessage)))));
     }
 
     protected Flux<HttpRequestMessage> convertMessage(RuleData message, HttpClienTaskConfig config) {

+ 15 - 3
jetlinks-manager/device-manager/src/main/java/org/jetlinks/pro/device/service/LocalDeviceInstanceService.java

@@ -83,7 +83,7 @@ public class LocalDeviceInstanceService extends GenericReactiveCrudService<Devic
     public LocalDeviceInstanceService(DeviceRegistry registry,
                                       LocalDeviceProductService deviceProductService,
                                       @SuppressWarnings("all")
-                                          ReactiveRepository<DeviceTagEntity, String> tagRepository,
+                                      ReactiveRepository<DeviceTagEntity, String> tagRepository,
                                       ApplicationEventPublisher eventPublisher,
                                       DeviceBindService bindService,
                                       DeviceConfigMetadataManager metadataManager,
@@ -99,12 +99,24 @@ public class LocalDeviceInstanceService extends GenericReactiveCrudService<Devic
 
     @Override
     public Mono<SaveResult> save(DeviceInstanceEntity data) {
-        return save(Mono.just(data));
+        if (StringUtils.hasText(data.getCorpId())) {
+            return super.save(data);
+        }
+        return completionDeviceEntity(data)
+            .flatMap(super::save);
     }
 
     @Override
     public Mono<SaveResult> save(Collection<DeviceInstanceEntity> collection) {
-        return save(Flux.fromIterable(collection));
+        return Flux
+            .fromIterable(collection)
+            .flatMap(entity -> {
+                if (StringUtils.hasText(entity.getCorpId())) {
+                    return Mono.just(entity);
+                }
+                return completionDeviceEntity(entity);
+            })
+            .as(super::save);
     }
 
     @Override

+ 0 - 1
simulator/dev/start.sh

@@ -1,5 +1,4 @@
 #!/usr/bin/env bash
-
 java -jar ../device-simulator.jar \
   mqtt.limit=1000 \
   mqtt.start=0 \