From eb51b2364e9a3fbe806fde61fa255660a098fc8b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 24 Jun 2021 14:06:41 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev

---
 screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..8850e00
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,69 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.moral.api.entity.Device;
+import com.moral.api.mapper.DeviceMapper;
+import com.moral.api.service.DeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+import com.moral.util.DateUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * ��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-22
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
+
+    @Autowired
+    private DeviceMapper deviceMapper;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Override
+    public void judgeOffLineDevice() {
+        QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ne("state", Constants.DEVICE_STATE_OFFLINE);
+        //������������������������
+        List<Device> devices = deviceMapper.selectList(queryWrapper);
+        for (Device device : devices) {
+            Map<String, Object> data = getDataFromRedis(device.getMac());
+            device.setState(Constants.DEVICE_STATE_OFFLINE);
+            if (data != null && data.containsKey("DataTime")) {
+                long time = Long.parseLong(data.get("DataTime").toString());
+                //���������������������������������
+                if (DateUtils.getDateOfMin(new Date(time), 2).getTime() < new Date().getTime()) {
+                    updateDeviceState(device);
+                }
+            } else {
+                updateDeviceState(device);
+            }
+        }
+    }
+
+    @Override
+    public void updateDeviceState(Device device) {
+        UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", device.getId()).set("state", device.getState());
+        deviceMapper.update(null, updateWrapper);
+    }
+
+    private Map<String, Object> getDataFromRedis(String mac) {
+        return (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE_DATA + mac);
+    }
+}

--
Gitblit v1.8.0