Pārlūkot izejas kodu

http数据上报处理

xucaiqin 2 gadi atpakaļ
vecāks
revīzija
22ff6c99ce

+ 19 - 8
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/controller/DataController.java

@@ -1,10 +1,10 @@
 package com.middle.platform.data.biz.controller;
 
-import com.middle.platform.data.biz.pojo.ProductPara;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.fastjson.JSONObject;
+import com.middle.platform.common.utils.Result;
+import com.middle.platform.data.biz.service.http.HttpService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author xucaiqin
@@ -12,11 +12,22 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/data")
+@RequiredArgsConstructor
 public class DataController {
+    private final HttpService httpService;
 
-
-    @PostMapping("/up")
-    public void test(@RequestBody ProductPara productPara) {
+    /**
+     * 属性上报
+     *
+     * @param code     产品编码
+     * @param deviceSn 设备编码
+     * @param data     数据
+     */
+    @PostMapping("/report/{code}/{deviceSn}")
+    public Result<Object> test(@PathVariable("code") String code, @PathVariable("deviceSn") String deviceSn,
+                               @RequestBody JSONObject data) {
+        httpService.dataReport(code, deviceSn, data);
+        return Result.ok();
     }
 
 }

+ 48 - 0
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/http/HttpService.java

@@ -0,0 +1,48 @@
+package com.middle.platform.data.biz.service.http;
+
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.middle.platform.data.biz.service.DataService;
+import com.middle.platform.data.biz.service.ProductAnalyse;
+import com.middle.platform.manage.api.pojo.ProductVo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.Objects;
+
+/**
+ * @author xucaiqin
+ * @date 2023-12-25 17:26:23
+ */
+@Component
+@RequiredArgsConstructor
+@Slf4j
+public class HttpService {
+    private final ProductAnalyse productAnalyse;
+    private final DataService dataService;
+
+    /**
+     * 数据上报
+     *
+     * @param code
+     * @param deviceSn
+     * @param data
+     */
+    public void dataReport(String code, String deviceSn, JSONObject data) {
+        ProductVo productVo = productAnalyse.getProduct(code, deviceSn);
+        if (Objects.isNull(productVo)) {
+            log.warn("产品:{} 设备:{} 不存在", code, deviceSn);
+            return;
+        }
+        String msgId = IdUtil.fastSimpleUUID();
+        //1.源数据处理
+        dataService.rawData(msgId, productVo, data);
+        //2.云函数解析
+        Object cloudData = productAnalyse.dataConvert(productVo, data);
+        //3.物模型解析
+        Object modData = productAnalyse.modConvert(productVo, cloudData);
+        //4.存储解析后的数据
+        dataService.analyzeData(msgId, productVo, modData);
+    }
+}

+ 1 - 3
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/MqttService.java → iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/mqtt/MqttService.java

@@ -1,8 +1,6 @@
-package com.middle.platform.data.biz.service;
+package com.middle.platform.data.biz.service.mqtt;
 
 import com.middle.platform.data.biz.config.MqttConfig;
-import com.middle.platform.data.biz.service.mqtt.MqttStrategyFactory;
-import com.middle.platform.data.biz.service.mqtt.MqttTopicStrategy;
 import com.middle.platform.data.biz.utils.MqttTopicUtil;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 0
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/mqtt/strategy/AttrReportStrategy.java

@@ -30,6 +30,7 @@ public class AttrReportStrategy implements MqttTopicStrategy {
         //获取产品信息
         ProductVo productVo = productAnalyse.getProduct(productKey, deviceSn);
         if (Objects.isNull(productVo)) {
+            log.warn("产品:{} 设备:{} 不存在", productKey, deviceSn);
             return;
         }
         String msgId = IdUtil.fastSimpleUUID();