Browse Source

增加定时任务判断设备是否在线

wanxl 1 year atrás
parent
commit
1142e0bc6a

+ 2 - 1
src/main/java/com/template/mapper/RealTimeRecordsMapper.java

@@ -4,6 +4,7 @@ import com.template.model.RealTimeRecords;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -15,5 +16,5 @@ import java.util.List;
  */
 public interface RealTimeRecordsMapper extends BaseMapper<RealTimeRecords> {
 
-    List<RealTimeRecords> listAll();
+    List<Map<String,Object>> listAll();
 }

+ 1 - 1
src/main/java/com/template/model/Devices.java

@@ -53,7 +53,7 @@ public class Devices implements Serializable {
 
     private Double water;
 
-    private Boolean online;
+    private Integer online;
 
     private Integer postionId;
 

+ 17 - 4
src/main/java/com/template/scheduled/ScheduledService.java

@@ -62,13 +62,26 @@ public class ScheduledService {
 
 
     //定时更新设备在线状态
-    @Scheduled(cron="0 30 * * * ?")
+    @Scheduled(cron="20 */5 * * * ?")
 //    @RequestMapping("/updateDeviceState")
     public void updateDeviceState() {
-        List<Devices> devicesList=devicesService.list(new QueryWrapper<>());
-        for (Devices devices:devicesList){
-            realTimeRecordsService.listAll();
+        List<Map<String,Object>> mapList=realTimeRecordsService.listAll();
+        List<Devices> devicesList=new ArrayList<>();
+        long currentTimeMillis = new Date().getTime();
+        //10分钟前
+        Date fiveagotime = new Date(currentTimeMillis - 600000);
+        for(int i=0;i<mapList.size();i++){
+            Devices devices=new Devices();
+            Date updateAt= (Date) mapList.get(i).get("updateAt");
+            if (updateAt!=null&&updateAt.compareTo(fiveagotime)>0){
+                devices.setOnline(1);
+            }else{
+                devices.setOnline(0);
+            }
+            devices.setId((Integer) mapList.get(i).get("id"));
+            devicesList.add(devices);
         }
+        devicesService.updateBatchById(devicesList);
     }
     //定时保存设备传感器假数据 后续删除
 //    @Scheduled(cron="0 0/5 * * * ?")

+ 2 - 1
src/main/java/com/template/services/RealTimeRecordsService.java

@@ -4,6 +4,7 @@ import com.template.model.RealTimeRecords;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -14,5 +15,5 @@ import java.util.List;
  * @since 2025-01-21
  */
 public interface RealTimeRecordsService extends IService<RealTimeRecords> {
-    List<RealTimeRecords> listAll();
+    List<Map<String,Object>> listAll();
 }

+ 2 - 1
src/main/java/com/template/services/impl/RealTimeRecordsServiceImpl.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -26,7 +27,7 @@ public class RealTimeRecordsServiceImpl extends ServiceImpl<RealTimeRecordsMappe
      * @return
      */
     @Override
-    public List<RealTimeRecords> listAll() {
+    public List<Map<String,Object>> listAll() {
 
         return realTimeRecordsMapper.listAll();
     }