|
@@ -0,0 +1,88 @@
|
|
|
+package com.huimv.admin.timer;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.admin.entity.EnvDevice;
|
|
|
+import com.huimv.admin.entity.EnvDeviceRecentlyData;
|
|
|
+import com.huimv.admin.entity.EnvWarning;
|
|
|
+import com.huimv.admin.service.IEnvDeviceRecentlyDataService;
|
|
|
+import com.huimv.admin.service.IEnvDeviceService;
|
|
|
+import com.huimv.admin.service.IEnvWarningService;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Configuration
|
|
|
+@EnableScheduling
|
|
|
+public class EnvDeviceLive {
|
|
|
+ @Resource
|
|
|
+ private IEnvDeviceService envDeviceService;
|
|
|
+ @Resource
|
|
|
+ private IEnvWarningService warningService;
|
|
|
+ @Resource
|
|
|
+ private IEnvDeviceRecentlyDataService dataService;
|
|
|
+
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0/59 * * * ?")
|
|
|
+// @Scheduled(cron = "*/5 * * * * ?")
|
|
|
+ private void saveOnlineDevice(){
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
|
|
+ //(1)获取当前日历时间
|
|
|
+ Date now = new Date();
|
|
|
+ //(2)根据时间获取指定的时间格式
|
|
|
+ String startTime = sdf.format(now);
|
|
|
+ System.out.println("现在时间:" + startTime);
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ //(3)计算推前n小时的时间,3为推前3小时
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
|
|
|
+ String endTime = sdf.format(calendar.getTime());
|
|
|
+ System.out.println("往前推一个小时" + endTime);
|
|
|
+
|
|
|
+ List<EnvDevice> devices = envDeviceService.list(null);
|
|
|
+ for (EnvDevice device : devices) {
|
|
|
+ QueryWrapper<EnvDeviceRecentlyData> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("farm_id", device.getFarmId()).eq("device_code", device.getDeviceSortCode());
|
|
|
+ queryWrapper.orderByDesc("update_time").last(" limit 1");
|
|
|
+ EnvDeviceRecentlyData data = dataService.getOne(queryWrapper);
|
|
|
+ int i = data.getUpdateTime().compareTo(calendar.getTime());
|
|
|
+
|
|
|
+ if (device.getDeviceStatus() == 0) {
|
|
|
+ if (i>0) {
|
|
|
+ device.setDeviceStatus(1);
|
|
|
+ EnvWarning warning = new EnvWarning();
|
|
|
+ warning.setDeviceCode(device.getDeviceSortCode());
|
|
|
+ warning.setUnitId(device.getUnitId());
|
|
|
+ warning.setUpdateTime(LocalDateTime.now());
|
|
|
+ warning.setFarmId(device.getFarmId());
|
|
|
+ warning.setWarningType(1);
|
|
|
+ warning.setWarningAct(2);
|
|
|
+ warning.setWarningContent(device.getDeviceName() + "恢复正常");
|
|
|
+ warningService.save(warning);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if (i<0) {
|
|
|
+ device.setDeviceStatus(0);
|
|
|
+ EnvWarning warning = new EnvWarning();
|
|
|
+ warning.setDeviceCode(device.getDeviceSortCode());
|
|
|
+ warning.setUnitId(device.getUnitId());
|
|
|
+ warning.setUpdateTime(LocalDateTime.now());
|
|
|
+ warning.setFarmId(device.getFarmId());
|
|
|
+ warning.setWarningType(1);
|
|
|
+ warning.setWarningAct(1);
|
|
|
+ warning.setWarningContent(device.getDeviceName() + "离线");
|
|
|
+ warningService.save(warning);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ envDeviceService.updateById(device);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|