|
@@ -1,12 +1,15 @@
|
|
|
package com.huimv.admin.timer;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.huimv.admin.entity.EnvDevice;
|
|
|
import com.huimv.admin.entity.EnvDeviceOnline;
|
|
|
import com.huimv.admin.entity.EnvWarning;
|
|
|
+import com.huimv.admin.entity.RawData;
|
|
|
import com.huimv.admin.service.IEnvDeviceOnlineService;
|
|
|
import com.huimv.admin.service.IEnvDeviceService;
|
|
|
import com.huimv.admin.service.IEnvWarningService;
|
|
|
+import com.huimv.admin.service.IRawDataService;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
@@ -14,7 +17,10 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Configuration
|
|
@@ -25,41 +31,79 @@ public class DeviceLive {
|
|
|
private IEnvDeviceService envDeviceService;
|
|
|
@Resource
|
|
|
private IEnvWarningService warningService;
|
|
|
+ @Resource
|
|
|
+ private IRawDataService rawDataService;
|
|
|
+
|
|
|
|
|
|
@Scheduled(cron = "0 0/30 * * * ?")
|
|
|
// @Scheduled(cron = "*/5 * * * * ?")
|
|
|
private void saveOnlineDevice(){
|
|
|
List<EnvDevice> devices = envDeviceService.list(null);
|
|
|
for (EnvDevice device : devices) {
|
|
|
- EnvWarning warning = new EnvWarning();
|
|
|
- if (device.getDeviceStatus() == 0) {
|
|
|
- warning.setWarningContent(device.getDeviceName() + "离线");
|
|
|
- warning.setUnitId(device.getUnitId());
|
|
|
- warning.setUpdateTime(LocalDateTime.now());
|
|
|
- warning.setWarningType(1);
|
|
|
- warning.setWarningAct(1);
|
|
|
- warning.setFarmId(device.getFarmId());
|
|
|
- device.setDeviceStatus(1);
|
|
|
- }
|
|
|
- if (device.getDeviceStatus() == 1) {
|
|
|
+ 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);
|
|
|
+ QueryWrapper<RawData> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("device_code", device.getDeviceSortCode()).ge("create_time", endTime);
|
|
|
+ List<RawData> rawDatas = rawDataService.list(queryWrapper);
|
|
|
+
|
|
|
+ if (rawDatas.size() == 0) { //无数据
|
|
|
+ QueryWrapper<EnvWarning> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("farm_id", device.getFarmId()).eq("device_code", device.getDeviceSortCode()).orderByDesc("id").last(" limit 1");
|
|
|
+ EnvWarning envWarning = warningService.getOne(queryWrapper1);
|
|
|
+ if (device.getDeviceStatus() == 0) {
|
|
|
+ EnvWarning warning = new EnvWarning();
|
|
|
+ warning.setWarningContent(device.getDeviceName() + "离线");
|
|
|
+ warning.setUnitId(device.getUnitId());
|
|
|
+ warning.setUpdateTime(LocalDateTime.now());
|
|
|
+ warning.setWarningType(1);
|
|
|
+ warning.setWarningAct(1);
|
|
|
+ warning.setDeviceCode(device.getDeviceSortCode());
|
|
|
+ warning.setFarmId(device.getFarmId());
|
|
|
+ if (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "离线"))) {
|
|
|
+ warningService.save(warning);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (device.getDeviceStatus() == 2) {
|
|
|
+ EnvWarning warning = new EnvWarning();
|
|
|
+ warning.setWarningContent(device.getDeviceName() + "断电");
|
|
|
+ warning.setUnitId(device.getUnitId());
|
|
|
+ warning.setUpdateTime(LocalDateTime.now());
|
|
|
+ warning.setWarningType(1);
|
|
|
+ warning.setWarningAct(1);
|
|
|
+ warning.setFarmId(device.getFarmId());
|
|
|
+ warning.setDeviceCode(device.getDeviceSortCode());
|
|
|
+ if (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "断电"))) {
|
|
|
+ warningService.save(warning);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ QueryWrapper<EnvWarning> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("farm_id", device.getFarmId()).eq("device_code", device.getDeviceSortCode()).orderByDesc("id").last(" limit 1");
|
|
|
+ EnvWarning envWarning = warningService.getOne(queryWrapper1);
|
|
|
+ EnvWarning warning = new EnvWarning();
|
|
|
warning.setWarningContent(device.getDeviceName() + "恢复正常");
|
|
|
warning.setUnitId(device.getUnitId());
|
|
|
warning.setUpdateTime(LocalDateTime.now());
|
|
|
warning.setWarningType(1);
|
|
|
warning.setWarningAct(2);
|
|
|
warning.setFarmId(device.getFarmId());
|
|
|
- }
|
|
|
- if (device.getDeviceStatus() == 2) {
|
|
|
- warning.setWarningContent(device.getDeviceName() + "断电");
|
|
|
- warning.setUnitId(device.getUnitId());
|
|
|
- warning.setUpdateTime(LocalDateTime.now());
|
|
|
- warning.setWarningType(1);
|
|
|
- warning.setWarningAct(1);
|
|
|
- warning.setFarmId(device.getFarmId());
|
|
|
+ warning.setDeviceCode(device.getDeviceSortCode());
|
|
|
device.setDeviceStatus(1);
|
|
|
+ envDeviceService.updateById(device);
|
|
|
+ if (ObjectUtil.isEmpty(envWarning)||(!envWarning.getWarningContent().equals(device.getDeviceName() + "恢复正常"))){
|
|
|
+ warningService.save(warning);
|
|
|
+ }
|
|
|
}
|
|
|
- warningService.save(warning);
|
|
|
- envDeviceService.updateById(device);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|