소스 검색

环控tianjia

wwh 1 년 전
부모
커밋
896de03551
1개의 변경된 파일88개의 추가작업 그리고 0개의 파일을 삭제
  1. 88 0
      src/main/java/com/huimv/admin/timer/EnvDeviceLive.java

+ 88 - 0
src/main/java/com/huimv/admin/timer/EnvDeviceLive.java

@@ -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);
+        }
+    }
+}