Browse Source

feat:新增离线websocket
feat:新增样本库获取冰箱信息
feat:新增样本库设置点位上下限值
feat:新增样本库配置设备预警开启
feat:新增样本库获取传感器实时数据

黄渊昊 5 ngày trước cách đây
mục cha
commit
1924e40dfa
13 tập tin đã thay đổi với 356 bổ sung5 xóa
  1. 25 1
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/messagepush/impl/WebSocketPushService.java
  2. 61 2
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/controller/SimsController.java
  3. 17 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/AppDeviceAlarmParam.java
  4. 85 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/SimsUpdateTargetParam.java
  5. 113 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/UpdateLimitParam.java
  6. 16 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/AppDeviceService.java
  7. 21 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/SimsService.java
  8. 2 2
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/bi/service/BiService.java
  9. 2 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/MonitorDeviceService.java
  10. 7 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/service/impl/MonitorDeviceServiceImpl.java
  11. 2 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/param/RealtimeParam.java
  12. 2 0
      snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java
  13. 3 0
      snowy-web-app/src/main/resources/application.properties

+ 25 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/messagepush/impl/WebSocketPushService.java

@@ -5,10 +5,14 @@ import cn.hutool.json.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarm;
+import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
 import vip.xiaonuo.coldchain.core.alarm.service.messagepush.MessagePushService;
 import vip.xiaonuo.coldchain.core.alarm.websocket.WebSocketEndpoint;
 import vip.xiaonuo.dev.api.DevMessageApi;
 
+import java.util.Date;
+import java.util.stream.Collectors;
+
 @Service("WEBSOCKET")
 @Slf4j
 public class WebSocketPushService implements MessagePushService {
@@ -45,7 +49,27 @@ public class WebSocketPushService implements MessagePushService {
 
     @Override
     public boolean sendOfflineMessage(SensorAlarm alarm) {
-        return false;
+        try {
+            // 获取alarm对象中的字段值
+            String sensorCode = alarm.getSensorCode();
+            Integer sensorRoute = alarm.getSensorRoute();
+
+            // 构建JSON格式数据
+            JSONObject alarmJson = new JSONObject();
+            alarmJson.set("sensorCode", sensorCode != null ? sensorCode : "");
+            alarmJson.set("sensorRoute", sensorRoute != null ? sensorRoute : "");
+            alarmJson.set("status", "offline");
+            alarmJson.set("offlineTime", alarm.getAlarmTime());
+            alarmJson.set("location", alarm.getRoomName());
+
+            // WebSocket推送逻辑
+            WebSocketEndpoint.sendMessage(String.valueOf(alarmJson));
+            return true;
+
+        } catch (Exception e) {
+            log.error("⚠️ 构建WebSocket告警消息失败", e);
+            return false;
+        }
     }
 
     @Override

+ 61 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/controller/SimsController.java

@@ -1,6 +1,7 @@
 package vip.xiaonuo.coldchain.modular.app.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
@@ -13,15 +14,20 @@ import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.coldchain.core.alarm.service.SensorAlarmService;
 import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
 import vip.xiaonuo.coldchain.modular.app.dto.DeviceDataDto;
-import vip.xiaonuo.coldchain.modular.app.param.AppDeviceQueryParams;
-import vip.xiaonuo.coldchain.modular.app.param.SensorEchartDataResult;
+import vip.xiaonuo.coldchain.modular.app.param.*;
 import vip.xiaonuo.coldchain.modular.app.param.export.AppTrendParam;
 import vip.xiaonuo.coldchain.modular.app.service.AppDeviceService;
 import vip.xiaonuo.coldchain.modular.app.service.SimsService;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
 import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+import vip.xiaonuo.coldchain.modular.monitornotice.entity.Realtime;
+import vip.xiaonuo.coldchain.modular.monitornotice.param.RealtimeParam;
 import vip.xiaonuo.coldchain.modular.monitornotice.param.TrendParam;
 import vip.xiaonuo.coldchain.modular.monitornotice.service.MonitorNoticeService;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
 import vip.xiaonuo.common.pojo.CommonResult;
 
 import java.util.List;
@@ -38,6 +44,12 @@ public class SimsController {
     private MonitorDeviceService monitorDeviceService;
     @Resource
     private AppDeviceService appDeviceService;
+    @Resource
+    private MonitorNoticeService monitorNoticeService;
+    @Resource
+    private MonitorTargetRegionService monitorTargetRegionService;
+    @Resource
+    private MonitorTargetService monitorTargetService;
 
     @Operation(summary = "获取设备的最新的温湿度")
     @GetMapping("/{deviceCode}/{roads}")
@@ -70,5 +82,52 @@ public class SimsController {
         appDeviceService.export(response, appTrendParam, file);
     }
 
+    /**
+     * 获取传感器实时数据
+     */
+    @Operation(summary = "获取传感器实时数据")
+    @PostMapping("/monitordevice/getRealtime")
+    public CommonResult<Realtime> getRealtime(@RequestBody RealtimeParam realtimeParam) {
+        MonitorDevice monitorDevice = monitorDeviceService.findByDeviceCode(realtimeParam.getSensorCode());
+        if (monitorDevice == null) {
+            return CommonResult.error("设备不存在");
+        }
+        realtimeParam.setDeviceId(monitorDevice.getId());
+        Realtime realtime = monitorNoticeService.getRealtime(realtimeParam);
+        return CommonResult.data(realtime);
+    }
+
+    /**
+     * 配置设备预警开启
+     */
+    @Operation(summary = "配置设备预警开启")
+    @PostMapping("/monitortarget/update/alarm")
+    public CommonResult<Boolean> updateDeviceAlarm(@RequestBody @Valid SimsUpdateTargetParam updateTargetParam) {
+        return CommonResult.data(simsService.updateDeviceInfo(updateTargetParam));
+    }
+
+    /**
+     * 设置点位上下限值
+     */
+    @Operation(summary = "设置点位上下限值")
+    @PostMapping("/monitortargetregion/update/limit")
+    public CommonResult<Boolean> updateRegionLimit(@RequestBody @Valid UpdateLimitParam updateLimitParam) {
+        if (StrUtil.isNotBlank(updateLimitParam.getMonitorTargetRegionId())) {
+            MonitorTargetRegion monitorTargetRegion = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(updateLimitParam.getSensorCode(), updateLimitParam.getSensorRoute());
+            updateLimitParam.setMonitorTargetRegionId(monitorTargetRegion.getId());
+        }
+        AppDeviceAlarmParam appDeviceAlarmParam = BeanUtil.copyProperties(updateLimitParam, AppDeviceAlarmParam.class);
+        return CommonResult.data(appDeviceService.updateDeviceAlarm(appDeviceAlarmParam));
+    }
+
+    /**
+     * 获取冰箱信息
+     */
+    @Operation(summary = "获取冰箱信息")
+    @GetMapping("/monitordevice/getTargetInfo")
+    public CommonResult<MonitorTarget> getTargetInfo(@RequestParam String sensorCode, Integer sensorRoute) {
+        MonitorTargetRegion monitorTargetRegion = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(sensorCode, sensorRoute);
+        return CommonResult.data(monitorTargetService.queryEntity(monitorTargetRegion.getMonitorTargetId()));
+    }
 
 }

+ 17 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/AppDeviceAlarmParam.java

@@ -64,6 +64,23 @@ public class AppDeviceAlarmParam {
     @JsonSerialize(using = FloatNullToDashSerializer.class)
     private Float co2Down;
 
+    private Float tvocUp;
+    private Float tvocDown;
+    private Float o2Up;
+    private Float o2Down;
+    private Float n2Up;
+    private Float n2Down;
+    private Float pressureUp;
+    private Float pressureDown;
+    private Float ch2oUp;
+    private Float ch2oDown;
+    private Float illuminanceUp;
+    private Float illuminanceDown;
+    private Float pm25Up;
+    private Float pm25Down;
+    private Float pm10Up;
+    private Float pm10Down;
+
     public String getMonitorTargetRegionId() {
         return monitorTargetRegionId;
     }

+ 85 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/SimsUpdateTargetParam.java

@@ -0,0 +1,85 @@
+package vip.xiaonuo.coldchain.modular.app.param;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.google.common.collect.Lists;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+import vip.xiaonuo.coldchain.core.alarm.bean.NotificationChannel;
+import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarmUser;
+import vip.xiaonuo.coldchain.core.handler.NotificationChannelListTypeHandler;
+import vip.xiaonuo.coldchain.core.handler.SensorAlarmUserTypeHandler;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SimsUpdateTargetParam {
+    /**
+     * ID
+     */
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 冰箱锁编号
+     */
+    private String lockNo;
+
+    /**
+     * 状态(1:正常,2:闲置)
+     */
+    private String status;
+
+    /**
+     * 监控位置区域
+     */
+    private String monitorPoint;
+
+    /**
+     * 最后心跳时间
+     */
+    private Date lastHeartbeatTime;
+
+    /**
+     * 最近登录时间
+     */
+    private Date lastLoginTime;
+
+    private String sensorCode;
+
+    private Integer sensorRoute;
+
+
+    /**
+     * 告警接收人,存储告警通知的接收用户信息
+     */
+    @TableField(value = "alarm_users", typeHandler = SensorAlarmUserTypeHandler.class)
+    @Schema(description = "告警接收人,存储告警通知的接收用户信息")
+    private List<SensorAlarmUser> alarmUsers = Lists.newArrayList();
+
+    /**
+     * 用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等
+     */
+    @Schema(description = "用户的通知渠道设置,支持选择接收告警的多个渠道,如短信、邮件、APP通知等")
+    @TableField(value = "notification_channel", typeHandler = NotificationChannelListTypeHandler.class)
+    private List<NotificationChannel> notificationChannel = List.of(NotificationChannel.WECHAT);
+
+    /**
+     * 是否启用预警通知,0=启用,1=禁用
+     */
+    @Schema(description = "是否启用预警通知,0=启用,1=禁用")
+    private String enabled;
+
+    /**
+     * 负责人
+     */
+    @TableField(value = "leaders", typeHandler = SensorAlarmUserTypeHandler.class)
+    @Schema(description = "负责人")
+    private List<SensorAlarmUser> leaders = Lists.newArrayList();
+}

+ 113 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/param/UpdateLimitParam.java

@@ -0,0 +1,113 @@
+package vip.xiaonuo.coldchain.modular.app.param;
+
+/**
+ * @author jackzhou
+ * @version 1.0
+ * @project jfcloud-coldchain
+ * @description
+ * @date 2024/11/17 22:30:15
+ */
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UpdateLimitParam {
+
+    @Schema(description = "监控点位编号")
+    private String monitorTargetRegionId;
+
+    private String sensorCode;
+    private Integer sensorRoute;
+    /**
+     * 温度报警上限 temperature humidity co2
+     */
+    @Schema(description = "温度报警上限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float temperatureUp;
+    /**
+     * 温度报警下限
+     */
+    @Schema(description = "温度报警下限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float temperatureDown;
+
+    /**
+     * 湿度报警上限 temperature humidity co2
+     */
+
+    @Schema(description = "湿度报警上限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float humidityUp;
+    /**
+     * 湿度报警下限
+     */
+    @Schema(description = "湿度报警下限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float humidityDown;
+
+    /**
+     * 二氧化碳报警上限 temperature humidity co2
+     */
+    @Schema(description = "二氧化碳报警上限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float co2Up;
+
+    /**
+     * 二氧化碳报警下限
+     */
+    @Schema(description = "二氧化碳报警下限")
+    @JsonSerialize(using = FloatNullToDashSerializer.class)
+    private Float co2Down;
+
+    private Float tvocUp;
+    private Float tvocDown;
+    private Float o2Up;
+    private Float o2Down;
+    private Float n2Up;
+    private Float n2Down;
+    private Float pressureUp;
+    private Float pressureDown;
+    private Float ch2oUp;
+    private Float ch2oDown;
+    private Float illuminanceUp;
+    private Float illuminanceDown;
+    private Float pm25Up;
+    private Float pm25Down;
+    private Float pm10Up;
+    private Float pm10Down;
+
+    public String getMonitorTargetRegionId() {
+        return monitorTargetRegionId;
+    }
+
+    public Float getTemperatureUp() {
+        return temperatureUp;
+    }
+
+    public Float getTemperatureDown() {
+        return temperatureDown;
+    }
+
+    public Float getHumidityUp() {
+        return humidityUp;
+    }
+
+    public Float getHumidityDown() {
+        return humidityDown;
+    }
+
+    public Float getCo2Up() {
+        return co2Up;
+    }
+
+    public Float getCo2Down() {
+        return co2Down;
+    }
+}

+ 16 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/AppDeviceService.java

@@ -702,6 +702,22 @@ public class AppDeviceService {
         updateField(appDeviceAlarmParam::getHumidityUp, monitorTargetRegion::setHumidityUp);
         updateField(appDeviceAlarmParam::getCo2Down, monitorTargetRegion::setCo2Down);
         updateField(appDeviceAlarmParam::getCo2Up, monitorTargetRegion::setCo2Up);
+        updateField(appDeviceAlarmParam::getTvocUp, monitorTargetRegion::setTvocUp);
+        updateField(appDeviceAlarmParam::getTvocDown, monitorTargetRegion::setTvocDown);
+        updateField(appDeviceAlarmParam::getO2Up, monitorTargetRegion::setO2Up);
+        updateField(appDeviceAlarmParam::getO2Down, monitorTargetRegion::setO2Down);
+        updateField(appDeviceAlarmParam::getN2Up, monitorTargetRegion::setN2Up);
+        updateField(appDeviceAlarmParam::getN2Down, monitorTargetRegion::setN2Down);
+        updateField(appDeviceAlarmParam::getPressureUp, monitorTargetRegion::setPressureUp);
+        updateField(appDeviceAlarmParam::getPressureDown, monitorTargetRegion::setPressureDown);
+        updateField(appDeviceAlarmParam::getCh2oUp, monitorTargetRegion::setCh2oUp);
+        updateField(appDeviceAlarmParam::getCh2oDown, monitorTargetRegion::setCh2oDown);
+        updateField(appDeviceAlarmParam::getIlluminanceUp, monitorTargetRegion::setIlluminanceUp);
+        updateField(appDeviceAlarmParam::getIlluminanceDown, monitorTargetRegion::setIlluminanceDown);
+        updateField(appDeviceAlarmParam::getPm25Up, monitorTargetRegion::setPm25Up);
+        updateField(appDeviceAlarmParam::getPm25Down, monitorTargetRegion::setPm25Down);
+        updateField(appDeviceAlarmParam::getPm10Up, monitorTargetRegion::setPm10Up);
+        updateField(appDeviceAlarmParam::getPm10Down, monitorTargetRegion::setPm10Down);
         return monitorTargetRegionService.updateById(monitorTargetRegion);
     }
 

+ 21 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/SimsService.java

@@ -8,6 +8,8 @@ package vip.xiaonuo.coldchain.modular.app.service;
  * @date 2024/11/17 22:30:41
  */
 
+import cn.hutool.core.bean.BeanUtil;
+import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
@@ -15,7 +17,13 @@ import vip.xiaonuo.coldchain.modular.app.dto.DeviceDataDto;
 import vip.xiaonuo.coldchain.modular.app.param.AppDeviceQueryParams;
 import vip.xiaonuo.coldchain.modular.app.param.SensorEchartData;
 import vip.xiaonuo.coldchain.modular.app.param.SensorEchartDataResult;
+import vip.xiaonuo.coldchain.modular.app.param.SimsUpdateTargetParam;
 import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
+import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetEditParam;
+import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
+import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -28,6 +36,11 @@ public class SimsService {
     private final MonitorDeviceService monitorDeviceService;
     private final AppDeviceService appDeviceService;
 
+    @Resource
+    private MonitorTargetService monitorTargetService;
+    @Resource
+    private MonitorTargetRegionService monitorTargetRegionService;
+
     public SensorData status(String deviceCode, Integer roads) {
         return monitorDeviceService.queryLatestDataByDeviceIdAndRoads(deviceCode, roads);
     }
@@ -69,4 +82,12 @@ public class SimsService {
         }
         return deviceDataDtoList;
     }
+
+
+    public Boolean updateDeviceInfo(SimsUpdateTargetParam updateTargetParam) {
+        MonitorTargetRegion monitorTargetRegion = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(updateTargetParam.getSensorCode(), updateTargetParam.getSensorRoute());
+        updateTargetParam.setId(monitorTargetRegion.getMonitorTargetId());
+        MonitorTarget monitorTarget = BeanUtil.copyProperties(updateTargetParam, MonitorTarget.class);
+        return monitorTargetService.updateById(monitorTarget);
+    }
 }

+ 2 - 2
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/bi/service/BiService.java

@@ -118,7 +118,7 @@ public class BiService {
             //查询寻分组区域设备监控数据
             for (Map.Entry<String, List<MonitorTargetRegion>> entry : regionMap.entrySet()) {
                 List<Realtime> realtimes = entry.getValue().stream().parallel().map(r -> {
-                    Realtime realtime = monitorNoticeService.getRealtime(new RealtimeParam(r.getMonitorDeviceId(), r.getSensorRoute()));
+                    Realtime realtime = monitorNoticeService.getRealtime(new RealtimeParam(null, r.getMonitorDeviceId(), r.getSensorRoute()));
 //                    Realtime realtime = new Realtime();
                     realtime.setTemperatureUp(r.getTemperatureUp());
                     realtime.setTemperatureDown(r.getTemperatureDown());
@@ -188,7 +188,7 @@ public class BiService {
 
                 // 合并所有region的数据
                 for (MonitorTargetRegion region : regions) {
-                    Realtime realtime = monitorNoticeService.getRealtime(new RealtimeParam(region.getMonitorDeviceId(), region.getSensorRoute()));
+                    Realtime realtime = monitorNoticeService.getRealtime(new RealtimeParam(null, region.getMonitorDeviceId(), region.getSensorRoute()));
 
                     if (realtime != null) {
                         // 只设置第一个非空值

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

@@ -148,4 +148,6 @@ public interface MonitorDeviceService extends IService<MonitorDevice> {
     void export(HttpServletResponse response);
 
     List<MonitorDevice> getByModelName(String code);
+
+    MonitorDevice findByDeviceCode(String deviceCode);
 }

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

@@ -624,6 +624,13 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
         return list(queryWrapper);
     }
 
+    @Override
+    public MonitorDevice findByDeviceCode(String deviceCode) {
+        LambdaQueryWrapper<MonitorDevice> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MonitorDevice::getDeviceCode, deviceCode).eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
+        return this.getOne(queryWrapper);
+    }
+
     private List<Map<String, Object>> getExportData() {
         List<Map<String, Object>> dataList = monitorDeviceMapper.selectDeviceWithRegion();
         // 动态处理空值

+ 2 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/param/RealtimeParam.java

@@ -14,6 +14,8 @@ import java.util.Date;
 @AllArgsConstructor
 public class RealtimeParam {
 
+    private String sensorCode;
+
     private String deviceId;
 
     private Integer roads;

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

@@ -13,6 +13,7 @@
 package vip.xiaonuo.coldchain.modular.monitornotice.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -429,6 +430,7 @@ public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, M
         Realtime realtime = new Realtime();
         realtime.setSensorData(sensorData);
         MonitorTargetRegion oneByDeviceCodeAndSensorNo = monitorTargetRegionService.findOneByDeviceCodeAndSensorNo(monitorDevice.getDeviceCode(), realtimeParam.getRoads());
+        Assert.isTrue(Objects.nonNull(oneByDeviceCodeAndSensorNo), "未找到该编号及路数所对应设备的实时数据");
         realtime.setRegionName(oneByDeviceCodeAndSensorNo.getName());
         Date date = new Date();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

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

@@ -47,6 +47,9 @@ spring.data.influxdb.token=${INFLUXDB_TOKEN:g2gXWbSJar3fmUKFkv4SVtTzPE-rX0-6aW5b
 #spring.data.influxdb.token=${INFLUXDB_TOKEN:4ibpm6V1YF0HGuEQymw4_sOnQhwIHnT7hlvGxRzKHsxOw1WnCgHEksqI2JF23RfvSME6M9ILS6Nvx81Lu-aG2Q==}
 # \u9756\u5B89
 #spring.data.influxdb.token=${INFLUXDB_TOKEN:mygZZM9q_EejodRkMxY3Dij29OUFGHY0TRuLFGW7WYM0ImnoRPDFk-sG9IgOVT-4j8WLid7_H1XUqx5sHNpIVw==}
+# \u5C71\u897F\u75BE\u63A7
+#spring.data.influxdb.token=${INFLUXDB_TOKEN:hZm0z1hke6Ln7Repo5vuJ6JgOYofN48m9RlfGKjypnSNSRkCtRMEMIex_m_gMJS4vHHQvWT77fopp-v4Ja9t9g==}
+
 spring.data.influxdb.org=${INFLUXDB_ORG:coldchain}
 spring.data.influxdb.bucket=${INFLUXDB_BUCKET:coldchain}