Преглед на файлове

fix:修复新增/编辑冷链设备时冷链设备编号不适配导致的失败问题
feat:完善QP相关代码逻辑,适配远端服务器

黄渊昊 преди 5 месеца
родител
ревизия
b69695b440
променени са 23 файла, в които са добавени 126 реда и са изтрити 412 реда
  1. 2 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/bean/SensorAlarm.java
  2. 2 2
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/impl/MonitorDeviceServiceImpl.java
  3. 1 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java
  4. 0 29
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/config/QPConfigure.java
  5. 34 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/controller/QPController.java
  6. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Battery.java
  7. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Co2.java
  8. 0 35
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Data.java
  9. 0 15
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Device.java
  10. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Humidity.java
  11. 0 58
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Info.java
  12. 0 31
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Product.java
  13. 0 16
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Root.java
  14. 0 20
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Setting.java
  15. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Signal.java
  16. 0 16
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Status.java
  17. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Temperature.java
  18. 0 12
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Timestamp.java
  19. 0 29
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/param/DataParam.java
  20. 7 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/service/QPService.java
  21. 66 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/service/impl/QPServiceImpl.java
  22. 0 74
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/util/QPUtil.java
  23. 14 14
      snowy-web-app/src/main/resources/application.properties

+ 2 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/bean/SensorAlarm.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.google.common.collect.Lists;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
 import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
 import vip.xiaonuo.common.pojo.OrgEntity;
@@ -20,6 +21,7 @@ import java.util.List;
  * @description 告警信息类,包含告警内容、告警值、告警接收人等信息。
  * @date 2024/11/26
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
 @TableName(value = "sensor_alarm", autoResultMap = true)
 public class SensorAlarm extends OrgEntity {

+ 2 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/impl/MonitorDeviceServiceImpl.java

@@ -131,7 +131,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
                 renKeService.callParamIds(Integer.parseInt(monitorDevice.getDeviceCode()));
             } catch (NumberFormatException e) {
                 // 如果设备编码不能解析为整数,抛出异常或记录日志
-                throw new CommonException("设备编码解析失败,无法发送配置参数。设备编码: " + monitorDevice.getDeviceCode(), e + "请输入整数编码");
+//                throw new CommonException("设备编码解析失败,无法发送配置参数。设备编码: " + monitorDevice.getDeviceCode(), e + "请输入整数编码");
             }
         } else {
             throw new CommonException("设备保存失败,设备编码: " + monitorDevice.getDeviceCode());
@@ -189,7 +189,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
                 renKeService.callParamIds(Integer.parseInt(monitorDevice.getDeviceCode()));
             } catch (NumberFormatException e) {
                 // 如果设备编码不能解析为整数,抛出异常或记录日志
-                throw new CommonException("设备编码解析失败,无法发送配置参数。设备编码: " + monitorDevice.getDeviceCode(), e + "请输入整数编码");
+//                throw new CommonException("设备编码解析失败,无法发送配置参数。设备编码: " + monitorDevice.getDeviceCode(), e + "请输入整数编码");
             }
         } else {
             throw new CommonException("设备保存失败,设备编码: " + monitorDevice.getDeviceCode());

+ 1 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java

@@ -158,7 +158,7 @@ public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, M
     @Override
     public Realtime getRealtime(RealtimeParam realtimeParam) {
         MonitorDevice monitorDevice = monitorDeviceService.getById(realtimeParam.getDeviceId());
-        SensorData sensorData = monitorDeviceService.queryLatestDataByDeviceIdAndRoads(realtimeParam.getDeviceId(), realtimeParam.getRoads());
+        SensorData sensorData = monitorDeviceService.queryLatestDataByDeviceIdAndRoads(monitorDevice.getDeviceCode(), realtimeParam.getRoads());
         Realtime realtime = new Realtime();
         realtime.setSensorData(sensorData);
         MonitorTargetRegion oneByDeviceCodeAndSensorNo = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(monitorDevice.getDeviceCode(), realtimeParam.getRoads());

+ 0 - 29
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/config/QPConfigure.java

@@ -1,29 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-import vip.xiaonuo.coldchain.modular.push.config.PushConfigure;
-
-@Component
-@ConfigurationProperties("qp")
-public class QPConfigure {
-    private static String appKey;
-
-    private static String appSecret;
-
-    public static String getAppKey() {
-        return appKey;
-    }
-
-    public void setAppKey(String appKey) {
-        QPConfigure.appKey = appKey;
-    }
-
-    public static String getAppSecret() {
-        return appSecret;
-    }
-
-    public void setAppSecret(String appSecret) {
-        QPConfigure.appSecret = appSecret;
-    }
-}

+ 34 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/controller/QPController.java

@@ -0,0 +1,34 @@
+package vip.xiaonuo.coldchain.modular.qp.controller;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.github.jfcloud.influxdb.service.JfcloudInfluxDBService;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
+import vip.xiaonuo.coldchain.modular.qp.service.QPService;
+import vip.xiaonuo.common.pojo.CommonResult;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@Slf4j
+public class QPController {
+
+    @Resource
+    private QPService qpService;
+
+
+    @PostMapping("qp/save")
+    public CommonResult<String> save(@RequestBody Map<String,Object> map) {
+        qpService.save(map);
+        return CommonResult.ok();
+    }
+}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Battery.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Battery {
-    private Float value;
-}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Co2.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Co2 {
-    private Float value;
-}

+ 0 - 35
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Data.java

@@ -1,35 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Data {
-    /** 时间*/
-    @Schema(description = "时间")
-    private Timestamp timestamp;
-
-    /** 电量*/
-    @Schema(description = "电量")
-    private Battery battery;
-
-    /** 信号*/
-    @Schema(description = "信号")
-    private Signal signal;
-
-    /** 温度*/
-    @Schema(description = "温度")
-    private Temperature temperature;
-
-    /** 湿度*/
-    @Schema(description = "湿度")
-    private Humidity humidity;
-
-    /** 二氧化碳*/
-    @Schema(description = "二氧化碳")
-    private Co2 co2;
-}

+ 0 - 15
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Device.java

@@ -1,15 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Device {
-    private Info info;
-    private Data data;
-}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Humidity.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Humidity {
-    private Float value;
-}

+ 0 - 58
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Info.java

@@ -1,58 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-import vip.xiaonuo.common.pojo.OrgEntity;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Info {
-    /** 设备名称 */
-    @Schema(description = "设备名称")
-    private String name;
-
-    /** 设备MAC地址 */
-    @Schema(description = "设备MAC地址")
-    private String mac;
-
-    /** 分组id */
-    @Schema(description = "分组id")
-    private String group_id;
-
-    /** 分组名称 */
-    @Schema(description = "分组名称")
-    private String group_name;
-
-    /** 状态 */
-    @Schema(description = "状态")
-    private Status status;
-
-    /** 设备版本 */
-    @Schema(description = "设备版本")
-    private String version;
-
-    /** 设备注册时间 */
-    @Schema(description = "设备注册时间")
-    private Long create_at;
-
-    /** 产品信息 */
-    @Schema(description = "产品信息")
-    private Product product;
-
-    /** 设备上报配置*/
-    @Schema(description = "设备上报配置")
-    private Setting setting;
-
-    /** 数据传输方式*/
-    @Schema(description = "数据传输方式")
-    private String connection_type;
-
-
-
-
-}

+ 0 - 31
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Product.java

@@ -1,31 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Product {
-    /** 产品id*/
-    @Schema(description = "产品id")
-    private Long id;
-
-    /** 产品编号*/
-    @Schema(description = "产品编号")
-    private String code;
-
-    /** 产品名称*/
-    @Schema(description = "产品名称")
-    private String name;
-
-    /** 产品英文名称*/
-    @Schema(description = "产品英文名称")
-    private String en_name;
-
-    @Schema(description = "")
-    private Boolean noBleSetting;
-}

+ 0 - 16
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Root.java

@@ -1,16 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Root {
-    private Integer total;
-    private List<Device> devices;
-    private List<Data> data;
-}

+ 0 - 20
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Setting.java

@@ -1,20 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Setting {
-    /** 设备数据上报间隔(秒)*/
-    @Schema(description = "设备数据上报间隔(秒)")
-    private Integer report_interval;
-
-    /** 设备数据采集间隔(秒)*/
-    @Schema(description = "设备数据采集间隔(秒)")
-    private Integer collect_interval;
-}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Signal.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Signal {
-    private Float value;
-}

+ 0 - 16
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Status.java

@@ -1,16 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Status {
-    /** 状态 */
-    @Schema(description = "状态(True表示离线False表示在线")
-    private Boolean offline;
-}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Temperature.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Temperature {
-    private Float value;
-}

+ 0 - 12
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/entity/Timestamp.java

@@ -1,12 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.entity;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class Timestamp {
-    private Float value;
-}

+ 0 - 29
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/param/DataParam.java

@@ -1,29 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.param;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.Max;
-
-@Getter
-@Setter
-public class DataParam {
-    /** 设备mac*/
-    private String mac;
-
-    /** 13位毫秒级时间戳-开始时间*/
-    private Integer start_time;
-
-    /** 13位毫秒级时间戳-结束时间*/
-    private Integer end_time;
-
-    /** 13位毫秒级时间戳*/
-    private Integer timestamp;
-
-    /** 偏移量*/
-    private Integer offset;
-
-    /** 最大返回数*/
-    @Max(value = 200,message = "最大返回值不得超过200")
-    private Integer limit;
-}

+ 7 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/service/QPService.java

@@ -0,0 +1,7 @@
+package vip.xiaonuo.coldchain.modular.qp.service;
+
+import java.util.Map;
+
+public interface QPService {
+    void save(Map<String, Object> map);
+}

+ 66 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/service/impl/QPServiceImpl.java

@@ -0,0 +1,66 @@
+package vip.xiaonuo.coldchain.modular.qp.service.impl;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.github.jfcloud.influxdb.service.JfcloudInfluxDBService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
+import vip.xiaonuo.coldchain.modular.qp.service.QPService;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class QPServiceImpl implements QPService {
+
+    @Resource
+    private JfcloudInfluxDBService jfcloudInfluxDBService;
+
+    @Override
+    public void save(Map<String, Object> map) {
+        SensorData sensorData = new SensorData();
+        JSONObject mapJson = JSONUtil.parseObj(JSONUtil.toJsonStr(map));
+        JSONObject payloadJson = mapJson.getJSONObject("payload");
+        JSONObject infoJson = payloadJson.getJSONObject("info");
+        sensorData.setDeviceId(infoJson.getStr("mac"));
+        sensorData.setCreateTime(infoJson.getStr("createAt"));
+        JSONObject productJson = infoJson.getJSONObject("product");
+        sensorData.setModelName(productJson.getStr("code"));
+        JSONArray dataArray = payloadJson.getJSONArray("data");
+        List<Object> list = dataArray.stream().toList();
+        for (Object o : list) {
+            JSONObject dataJson = JSONUtil.parseObj(JSONUtil.toJsonStr(o));
+            JSONObject timestampJson = dataJson.getJSONObject("timestamp");
+            if (timestampJson != null) {
+                String timestamp = timestampJson.getStr("value");
+                sensorData.setCreateTime(timestamp);
+            }
+            JSONObject batteryJson = dataJson.getJSONObject("battery");
+            if (batteryJson != null) {
+                Float battery = batteryJson.getFloat("value");
+                sensorData.setBattery(battery);
+            }
+            JSONObject temperatureJson = dataJson.getJSONObject("temperature");
+            if (temperatureJson != null) {
+                Float temperature = temperatureJson.getFloat("value");
+                sensorData.setTemperature(temperature);
+            }
+            JSONObject humidityJson = dataJson.getJSONObject("humidity");
+            if (humidityJson != null) {
+                Float humidity = humidityJson.getFloat("value");
+                sensorData.setHumidity(humidity);
+            }
+            JSONObject co2Json = dataJson.getJSONObject("co2");
+            if (co2Json != null) {
+                Float co2 = co2Json.getFloat("value");
+                sensorData.setCo2(co2);
+            }
+        }
+
+        jfcloudInfluxDBService.writePojo(sensorData);
+    }
+}

+ 0 - 74
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/qp/util/QPUtil.java

@@ -1,74 +0,0 @@
-package vip.xiaonuo.coldchain.modular.qp.util;
-
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import vip.xiaonuo.coldchain.modular.qp.config.QPConfigure;
-import vip.xiaonuo.coldchain.modular.qp.entity.Root;
-import vip.xiaonuo.coldchain.modular.qp.param.DataParam;
-
-import java.util.Base64;
-
-public class QPUtil {
-
-    private static final String appKey = QPConfigure.getAppKey();
-
-    private static final String appSecret = QPConfigure.getAppSecret();
-
-    /**
-     * 获取accessToken
-     *
-     * @return
-     */
-    public static String getAccessToken() {
-        String authorization = appKey + ":" + appSecret;
-        String authorizationBase64 = Base64.getEncoder().encodeToString(authorization.getBytes());
-        String body = HttpUtil
-                .createPost("https://oauth.cleargrass.com/oauth2/token")
-                .header("Content-Type", "application/x-www-form-urlencoded")
-                .header("Authorization", "Basic " + authorizationBase64)
-                .form("grant_type", "client_credentials")
-                .form("scope", "device_full_access")
-                .execute().body();
-        JSONObject jsonObject = JSON.parseObject(body);
-        return jsonObject.get("access_token").toString();
-    }
-
-    /**
-     * 获取设备列表
-     */
-    public static Root getDeviceList() {
-        String accessToken = getAccessToken();
-        String body = HttpUtil.createGet("https://apis.cleargrass.com/v1/apis/devices")
-                .header("Authorization", "Bearer " + accessToken)
-                .execute().body();
-        ObjectMapper objectMapper = new ObjectMapper();
-        Root root = null;
-        try {
-            root = objectMapper.readValue(body, Root.class);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return root;
-    }
-
-    /**
-     * 获取设备历史数据
-     */
-    public static Root getHistoryData(DataParam dataParam) {
-        String accessToken = getAccessToken();
-        String body = HttpUtil.createGet("https://apis.cleargrass.com/v1/apis/devices/data?timestamp="
-                        + dataParam.getTimestamp() + "&mac=" + dataParam.getMac() + "&end_time="
-                        + dataParam.getEnd_time() +"&start_time=" + dataParam.getStart_time())
-                .header("Authorization", "Bearer " + accessToken).execute().body();
-        ObjectMapper objectMapper = new ObjectMapper();
-        Root root = null;
-        try {
-            root = objectMapper.readValue(body, Root.class);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return root;
-    }
-}

+ 14 - 14
snowy-web-app/src/main/resources/application.properties

@@ -36,23 +36,23 @@ spring.datasource.dynamic.strict=true
 spring.data.influxdb.url=${INFLUXDB_URL:http://jfcloud-k6-influxdb:8086}
 ## 10.0.1.200
 #spring.data.influxdb.token=${INFLUXDB_TOKEN:1NdDyN3LCKIEBFkQ1AqAmRSitZGfdCs0nuF11nLQbTcnN_5mp_asnfFnmAXTvDDQXGr83llxuXJu5wNTPtrsIw==}
-# 公网的
+# \u516C\u7F51\u7684
 spring.data.influxdb.token=${INFLUXDB_TOKEN:g2gXWbSJar3fmUKFkv4SVtTzPE-rX0-6aW5bDwgNOZXsD3tWL2PgAcCneH5WYcE9OmrMvLbvR-TMZrtX2d8ihQ==}
 spring.data.influxdb.org=${INFLUXDB_ORG:coldchain}
 spring.data.influxdb.bucket=${INFLUXDB_BUCKET:coldchain}
 
-## 温度超标报警模板
-#coldchain.alarm.message.temperatureOverLimit=温度报警:设备【{deviceName}】的温度超标!\n当前温度:{value} {unit},已超出上限(阈值:{thresholdUp})。\n报警时间:{time}
-## 温度过低报警模板
-#coldchain.alarm.message.temperatureBelowLimit=温度报警:设备【{deviceName}】的温度过低!\n当前温度:{value} {unit},已低于下限(阈值:{thresholdDown})。\n报警时间:{time}
-## 湿度超标报警模板
-#coldchain.alarm.message.humidityOverLimit=湿度报警:设备【{deviceName}】的湿度超标!\n当前湿度:{value} {unit},已超出上限(阈值:{thresholdUp})。\n报警时间:{time}
-## 湿度过低报警模板
-#coldchain.alarm.message.humidityBelowLimit=湿度报警:设备【{deviceName}】的湿度过低!\n当前湿度:{value} {unit},已低于下限(阈值:{thresholdDown})。\n报警时间:{time}
-## 二氧化碳超标报警模板
-#coldchain.alarm.message.co2OverLimit=二氧化碳报警:设备【{deviceName}】的二氧化碳浓度超标!\n当前浓度:{value} {unit},已超出上限(阈值:{thresholdUp})。\n报警时间:{time}
-## 二氧化碳过低报警模板
-#coldchain.alarm.message.co2BelowLimit=二氧化碳报警:设备【{deviceName}】的二氧化碳浓度过低!\n当前浓度:{value} {unit},已低于下限(阈值:{thresholdDown})。\n报警时间:{time}
+## \u6E29\u5EA6\u8D85\u6807\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.temperatureOverLimit=\u6E29\u5EA6\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u6E29\u5EA6\u8D85\u6807\uFF01\n\u5F53\u524D\u6E29\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u8D85\u51FA\u4E0A\u9650\uFF08\u9608\u503C\uFF1A{thresholdUp}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
+## \u6E29\u5EA6\u8FC7\u4F4E\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.temperatureBelowLimit=\u6E29\u5EA6\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u6E29\u5EA6\u8FC7\u4F4E\uFF01\n\u5F53\u524D\u6E29\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u4F4E\u4E8E\u4E0B\u9650\uFF08\u9608\u503C\uFF1A{thresholdDown}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
+## \u6E7F\u5EA6\u8D85\u6807\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.humidityOverLimit=\u6E7F\u5EA6\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u6E7F\u5EA6\u8D85\u6807\uFF01\n\u5F53\u524D\u6E7F\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u8D85\u51FA\u4E0A\u9650\uFF08\u9608\u503C\uFF1A{thresholdUp}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
+## \u6E7F\u5EA6\u8FC7\u4F4E\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.humidityBelowLimit=\u6E7F\u5EA6\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u6E7F\u5EA6\u8FC7\u4F4E\uFF01\n\u5F53\u524D\u6E7F\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u4F4E\u4E8E\u4E0B\u9650\uFF08\u9608\u503C\uFF1A{thresholdDown}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
+## \u4E8C\u6C27\u5316\u78B3\u8D85\u6807\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.co2OverLimit=\u4E8C\u6C27\u5316\u78B3\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u4E8C\u6C27\u5316\u78B3\u6D53\u5EA6\u8D85\u6807\uFF01\n\u5F53\u524D\u6D53\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u8D85\u51FA\u4E0A\u9650\uFF08\u9608\u503C\uFF1A{thresholdUp}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
+## \u4E8C\u6C27\u5316\u78B3\u8FC7\u4F4E\u62A5\u8B66\u6A21\u677F
+#coldchain.alarm.message.co2BelowLimit=\u4E8C\u6C27\u5316\u78B3\u62A5\u8B66\uFF1A\u8BBE\u5907\u3010{deviceName}\u3011\u7684\u4E8C\u6C27\u5316\u78B3\u6D53\u5EA6\u8FC7\u4F4E\uFF01\n\u5F53\u524D\u6D53\u5EA6\uFF1A{value} {unit}\uFF0C\u5DF2\u4F4E\u4E8E\u4E0B\u9650\uFF08\u9608\u503C\uFF1A{thresholdDown}\uFF09\u3002\n\u62A5\u8B66\u65F6\u95F4\uFF1A{time}
 
 # postgres
 #spring.datasource.dynamic.datasource.master.driver-class-name=org.postgresql.Driver
@@ -232,7 +232,7 @@ snowy.config.common.front-url=http://localhost:81
 snowy.config.common.backend-url=http://localhost:82
 
 
-# 微信小程序
+# \u5FAE\u4FE1\u5C0F\u7A0B\u5E8F
 logging.level.org.springframework.web=info
 logging.level.com.github.binarywang.demo.wx.miniapp=debug
 logging.level.cn.binarywang.wx.miniapp=debug