From 3fce4d72331e0e636baf5d2095a010eea52b085a Mon Sep 17 00:00:00 2001 From: hupeng Date: Mon, 4 Mar 2019 17:48:09 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=A4=A7=E5=B1=8F][=E6=B7=BB=E5=8A=A0]:?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E7=9A=84=E5=BF=83=E8=B7=B3=E9=80=BB=E8=BE=91?= =?UTF-8?q?,=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/DeviceHbCheckSchedule.java | 58 +++++++++++++++++++ .../service/impl/WxDeviceServiceImpl.java | 1 + 2 files changed, 59 insertions(+) create mode 100644 mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java new file mode 100644 index 000000000..de124b25d --- /dev/null +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/DeviceHbCheckSchedule.java @@ -0,0 +1,58 @@ +package com.iformall.schedule; + +import com.iformall.domain.po.WxDevice; + +import com.iformall.enums.EnumDeviceOnlineStatus; +import com.iformall.enums.EnumDeviceStatus; +import com.iformall.mapper.WxDeviceMapper; + +import com.iformall.service.WxDeviceService; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + + +@Component +public class DeviceHbCheckSchedule { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final int TIME_OUT_VALUE = 15 * 60 * 1000; //15分钟 + + + @Autowired + WxDeviceMapper wxDeviceMapper; + + @Scheduled(cron = "0 */5 * * * *?") // 每5分钟检查一次 + //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 + public void deviceHbCheckSchedule() { + + WxDevice wxDevice = new WxDevice(); + wxDevice.setStatus(EnumDeviceStatus.VALID.getCode()); + List list = wxDeviceMapper.findList(wxDevice); + + list.stream().forEach(d->{ + WxDevice record = new WxDevice(); + record.setId(d.getId()); + + if (d.getLastHbTime() == null) { + record.setOnlineStatus(EnumDeviceOnlineStatus.OFFLINE.getCode()); + } else { + if (new Date().getTime() - d.getLastHbTime().getTime() > TIME_OUT_VALUE) { + record.setOnlineStatus(EnumDeviceOnlineStatus.OFFLINE.getCode()); + } else { + record.setOnlineStatus(EnumDeviceOnlineStatus.ONLINE.getCode()); + } + } + if (!d.getOnlineStatus().equals(record.getOnlineStatus())) { + wxDeviceMapper.updateByPrimaryKeySelective(record); + } + }); + } + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxDeviceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxDeviceServiceImpl.java index 56ad50725..49a721965 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxDeviceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxDeviceServiceImpl.java @@ -57,4 +57,5 @@ public class WxDeviceServiceImpl implements WxDeviceService { return wxDeviceMapper.findList(wxDevice); } + }