From ad2f6bdfba61270d206be7e78f498d92e71bb0aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com>
Date: Mon, 16 Sep 2024 11:07:15 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BD=BF=E7=94=A8=E7=8A=B6?=
 =?UTF-8?q?=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ss/device/service/impl/DeviceServiceImpl.java | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java
index a479ed94..0a4f4cff 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java
@@ -716,6 +716,8 @@ public class DeviceServiceImpl implements DeviceService
         if (CollectionUtils.isEmptyElement(list)) {
             return;
         }
+        LocalDateTime now = LocalDateTime.now();
+
         for (DeviceVO device : list) {
             try {
                 if (StringUtils.isAnyBlank(device.getMac(), device.getModelProductId())) {
@@ -736,6 +738,19 @@ public class DeviceServiceImpl implements DeviceService
                     data.setSurplusEle(deviceInfo.getM());
                 }
 
+                // 判断设备是否正在使用
+                // 时长优先级最高,若当前设备过期时间 > 当前时间,则正在使用
+                boolean hasTime = device.getExpireTime().isAfter(now);
+                // 若当前设备有电量,则正在使用
+                boolean hasEle = device.getSurplusEle().compareTo(BigDecimal.ZERO) > 0;
+                // 若开关开启,则正在使用
+                boolean hasOpen = DevicePowerStatus.ON.getStatus().equals(device.getPowerStatus());
+                if (hasTime || hasEle || hasOpen) {
+                    data.setStatus(DeviceStatus.USING.getStatus());
+                } else {
+                    data.setStatus(DeviceStatus.NORMAL.getStatus());
+                }
+
                 // 是否在线
                 data.setOnlineStatus(iotService.getOnlineStatus(device.getMac(), device.getModelProductId()).getStatus());