浏览代码

fix: 设备离线/上线时同步更新 t_wash_device 状态字段

- 设备离线时设置 state 为 fault
- 设备上线时设置 state 为 idle
skyline 4 天之前
父节点
当前提交
da79238f76

+ 12 - 0
car-wash-service/src/main/java/com/kym/service/awoara/event/handle/DeviceStatusEventHandler.java

@@ -71,6 +71,12 @@ public class DeviceStatusEventHandler implements AwoaraEventHandler<DeviceStatus
     private void handleOffline(WashDevice device, String deviceName, String offlineKey) {
         log.info("设备离线: deviceId={}, deviceName={}", device.getId(), deviceName);
 
+        // 更新设备状态为故障
+        washDeviceService.lambdaUpdate()
+                .set(WashDevice::getState, WashDevice.STATE_故障)
+                .eq(WashDevice::getId, device.getId())
+                .update();
+
         stringRedisTemplate.opsForValue().set(offlineKey,
                 String.valueOf(System.currentTimeMillis()),
                 Duration.ofHours(24));
@@ -91,6 +97,12 @@ public class DeviceStatusEventHandler implements AwoaraEventHandler<DeviceStatus
     private void handleOnline(WashDevice device, String deviceName, String offlineKey) {
         log.info("设备上线: deviceId={}, deviceName={}", device.getId(), deviceName);
 
+        // 更新设备状态为空闲
+        washDeviceService.lambdaUpdate()
+                .set(WashDevice::getState, WashDevice.STATE_空闲)
+                .eq(WashDevice::getId, device.getId())
+                .update();
+
         stringRedisTemplate.delete(offlineKey);
 
         var unrecoveredLog = monitorLogService.lambdaQuery()