修改获取设备实时数据定时任务逻辑

This commit is contained in:
mi9688 2024-11-30 18:25:35 +08:00
parent 172bd4f89d
commit 29f0ac331b
3 changed files with 105 additions and 32 deletions

View File

@ -60,6 +60,7 @@ public class AlertLogController extends BaseController
List<AlertLog> list = alertLogService.selectAlertLogList(alertLog); List<AlertLog> list = alertLogService.selectAlertLogList(alertLog);
// 获取排序类型 // 获取排序类型
String sort = alertLog.getSort(); String sort = alertLog.getSort();
System.err.println("排序:"+sort);
if(sort != null){ if(sort != null){
//对列表进行排序 //对列表进行排序
//升序 //升序

View File

@ -18,15 +18,13 @@ import com.fastbee.iot.mapper.DeviceMapper;
import com.fastbee.iot.model.DeviceShortOutput; import com.fastbee.iot.model.DeviceShortOutput;
import com.fastbee.iot.service.IDeviceService; import com.fastbee.iot.service.IDeviceService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.jws.Oneway; import javax.jws.Oneway;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 设备告警 * 设备告警
@ -41,6 +39,7 @@ public class DeviceAlarmController extends BaseController {
@Autowired @Autowired
private AlertLogMapper alertLogMapper; private AlertLogMapper alertLogMapper;
@Autowired @Autowired
private DeviceInformationManager deviceInformationManager; private DeviceInformationManager deviceInformationManager;
@ -378,6 +377,30 @@ public class DeviceAlarmController extends BaseController {
return resultMap; return resultMap;
} }
/**
* 查询告警列表
*/
@GetMapping("/alarmList")
public AjaxResult getAlarmList(@Param("sort")Integer sort ){
List<AlertLog> list = new LambdaQueryChainWrapper<>(alertLogMapper)
.select(AlertLog::getAlertLogId,AlertLog::getCreateTime,AlertLog::getAlertName,AlertLog::getSerialNumber)
.list();
if(sort != null){
//对列表进行排序
//升序
if(sort==1){
list.sort(Comparator.comparing(AlertLog::getCreateTime));
}
//降序
else if(sort==2){
list.sort(Comparator.comparing(AlertLog::getCreateTime).reversed());
}
}
return AjaxResult.success(list);
}
/** /**
* 研判等级评级策略方法 * 研判等级评级策略方法
* A级3个以下报警B级3-10个报警C级10个以上报警 * A级3个以下报警B级3-10个报警C级10个以上报警

View File

@ -13,6 +13,7 @@ import com.fastbee.deviceData.domain.*;
import com.fastbee.deviceData.mapper.*; import com.fastbee.deviceData.mapper.*;
import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService; import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataMoistureServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl;
import com.fastbee.deviceInfo.domain.DeviceInformationMeteorology; import com.fastbee.deviceInfo.domain.DeviceInformationMeteorology;
import com.fastbee.deviceInfo.domain.DeviceInformationMoisture; import com.fastbee.deviceInfo.domain.DeviceInformationMoisture;
@ -25,7 +26,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author mijiupro * @author mijiupro
@ -45,13 +50,13 @@ public class DeviceDateTask {
private DeviceMapper deviceMapper; private DeviceMapper deviceMapper;
@Autowired @Autowired
private DeviceRealtimedataWormsServiceImpl wormsDataService;//虫情 private DeviceRealtimedataWormsServiceImpl wormsSaveDataService;//虫情
@Autowired @Autowired
private DeviceRealtimedataMeteorologyServiceImpl meteorologyDataService; private DeviceRealtimedataMeteorologyServiceImpl meteorologySaveDataService;
@Autowired @Autowired
private DeviceRealtimedataMoistureMapper deviceRealtimedataMoistureMapper; private DeviceRealtimedataMoistureServiceImpl moistureSaveDataService;
@Autowired @Autowired
private DeviceRealtimedataPhotovoltaicMapper deviceRealtimedataPhotovoltaicMapper; private DeviceRealtimedataPhotovoltaicMapper deviceRealtimedataPhotovoltaicMapper;
@ -100,26 +105,31 @@ public class DeviceDateTask {
* 获取虫情设备实时数据并保存 * 获取虫情设备实时数据并保存
*/ */
public void getWormsDeviceRealtimeData() { public void getWormsDeviceRealtimeData() {
List<DeviceInformationWorms> list = new LambdaQueryChainWrapper<>(wormsMapper).select(DeviceInformationWorms::getDeviceEncoding).list();
List<String> deviceEncodingList = list.stream().map(DeviceInformationWorms::getDeviceEncoding).collect(Collectors.toList());
StringBuilder deviceAddrsStringBuilder= new StringBuilder("");
//离线设备列表
List<String> offlineDeviceList = new ArrayList<>();
//在线设备列表
List<String> onlineDeviceList = new ArrayList<>();
for (String deviceEncoding : deviceEncodingList) {
deviceAddrsStringBuilder.append(deviceEncoding);
deviceAddrsStringBuilder.append(",");
}
try{ try{
List<DeviceInformationWorms> list = new LambdaQueryChainWrapper<>(wormsMapper).select(DeviceInformationWorms::getDeviceEncoding).list();
StringBuilder deviceAddrsStringBuilder= new StringBuilder("");
for (DeviceInformationWorms worms : list) {
deviceAddrsStringBuilder.append(worms.getDeviceEncoding());
deviceAddrsStringBuilder.append(",");
}
//去除最后 //去除最后
StringBuilder stringBuilder = deviceAddrsStringBuilder.deleteCharAt(deviceAddrsStringBuilder.length() - 1); StringBuilder stringBuilder = deviceAddrsStringBuilder.deleteCharAt(deviceAddrsStringBuilder.length() - 1);
String deviceAddrs = stringBuilder.toString(); String deviceAddrs = stringBuilder.toString();
List<DeviceRealtimedataWorms> deviceRealtimedataWorms = wormsService.setData(deviceAddrs); List<DeviceRealtimedataWorms> deviceRealtimedataWorms = wormsService.setData(deviceAddrs);
// int i = deviceRealtimedataWormsMapper.in(deviceRealtimedataWorms); new LambdaUpdateChainWrapper<>(wormsMapper).in(DeviceInformationWorms::getDeviceEncoding,"1017240042").set(DeviceInformationWorms::getStatus, 1).update();
boolean saved = wormsDataService.saveBatch(deviceRealtimedataWorms); boolean saved = wormsSaveDataService.saveBatch(deviceRealtimedataWorms);
if (!saved){ if (!saved){
System.out.println("插入数据失败!"); System.out.println("插入数据失败!");
} }
} }
catch (Exception e){ catch (Exception e){
log.error("获取虫情设备实时数据失败",e); log.error("获取虫情设备实时数据失败",e);
new LambdaUpdateChainWrapper<>(wormsMapper).eq(DeviceInformationWorms::getDeviceEncoding,"1017240042").set(DeviceInformationWorms::getStatus, 0).update(); new LambdaUpdateChainWrapper<>(wormsMapper).in(DeviceInformationWorms::getDeviceEncoding,"1017240042").set(DeviceInformationWorms::getStatus, 0).update();
} }
} }
@ -128,17 +138,39 @@ public class DeviceDateTask {
* 获取气象设备实时数据并保存 * 获取气象设备实时数据并保存
*/ */
public void getDevLinkMetDeviceRealtimeData(){ public void getDevLinkMetDeviceRealtimeData(){
List<DeviceInformationMeteorology> list = new LambdaQueryChainWrapper<>(meteorologyMapper).select(DeviceInformationMeteorology::getDeviceEncoding).list();
List<String> deviceEncodingList = list.stream().map(DeviceInformationMeteorology::getDeviceEncoding).collect(Collectors.toList());
//离线设备列表
List<String> offlineDeviceList = new ArrayList<>();
//在线设备列表
List<String> onlineDeviceList = new ArrayList<>();
try{ try{
List<DeviceInformationMeteorology> list = new LambdaQueryChainWrapper<>(meteorologyMapper).select(DeviceInformationMeteorology::getDeviceEncoding).list(); deviceEncodingList.forEach(deviceEncoding->{
DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(metDataService.getDeviceRealTimeData("3269")); Map<String, String> deviceRealTimeData = new HashMap<>();
boolean save = meteorologyDataService.save(deviceRealtimedataMeteorology); try{
if (!save){ deviceRealTimeData = metDataService.getDeviceRealTimeData(deviceEncoding);
System.out.println("插入数据失败!"); onlineDeviceList.add(deviceEncoding);
}
catch (Exception e){
offlineDeviceList.add(deviceEncoding);
}
DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(deviceRealTimeData);
boolean save = meteorologySaveDataService.save(deviceRealtimedataMeteorology);
if (!save){
System.out.println("插入数据失败!");
}
});
if(!onlineDeviceList.isEmpty()){
new LambdaUpdateChainWrapper<>(meteorologyMapper).in(DeviceInformationMeteorology::getDeviceEncoding,offlineDeviceList).set(DeviceInformationMeteorology::getStatus, 1).update();
} }
} }
catch (Exception e){ catch (Exception e){
log.error("获取气象设备实时数据失败",e); log.error("获取气象设备实时数据失败",e);
new LambdaUpdateChainWrapper<>(meteorologyMapper).eq(DeviceInformationMeteorology::getDeviceEncoding,"3269").set(DeviceInformationMeteorology::getStatus, 0).update(); if(!offlineDeviceList.isEmpty()){
new LambdaUpdateChainWrapper<>(meteorologyMapper).in(DeviceInformationMeteorology::getDeviceEncoding,offlineDeviceList).set(DeviceInformationMeteorology::getStatus, 0).update();
}
} }
@ -147,18 +179,37 @@ public class DeviceDateTask {
* 获取墒情设备实时数据并保存 * 获取墒情设备实时数据并保存
*/ */
public void getDevLinkMoistureDeviceRealtimeData() { public void getDevLinkMoistureDeviceRealtimeData() {
List<DeviceInformationMoisture> list = new LambdaQueryChainWrapper<>(moistureMapper).select(DeviceInformationMoisture::getDeviceEncoding).list();
List<String> deviceEncodingList = list.stream().map(DeviceInformationMoisture::getDeviceEncoding).collect(Collectors.toList());
//离线设备列表
List<String> offlineDeviceList = new ArrayList<>();
//在线设备列表
List<String> onlineDeviceList = new ArrayList<>();
try{ try{
DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(moistureDataService.getDeviceRealTimeData("3270"));
DeviceRealtimedataMoisture deviceRealtimedataMoisture1 = moistureDataService.setData(moistureDataService.getDeviceRealTimeData("3271")); deviceEncodingList.forEach(deviceEncoding->{
int i = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture); Map<String, String> deviceRealTimeData = new HashMap<>();
int i1 = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture1); try {
if (i<1||i1<1) deviceRealTimeData = moistureDataService.getDeviceRealTimeData(deviceEncoding);
System.out.println("插入数据失败!"); onlineDeviceList.add(deviceEncoding);
}catch (Exception e){
offlineDeviceList.add(deviceEncoding);
}
DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(deviceRealTimeData);
boolean save = moistureSaveDataService.save(deviceRealtimedataMoisture);
if (!save){
log.error("墒情设备"+deviceEncoding+"实时数据插入数据失败!");
}
});
if(!onlineDeviceList.isEmpty()){
new LambdaUpdateChainWrapper<>(moistureMapper).in(DeviceInformationMoisture::getDeviceEncoding,onlineDeviceList).set(DeviceInformationMoisture::getStatus, 1).update();
}
} }
catch (Exception e){ catch (Exception e){
log.error("获取墒情设备实时数据失败",e); log.error("获取墒情设备实时数据失败",e);
new LambdaUpdateChainWrapper<>(moistureMapper).in(DeviceInformationMoisture::getDeviceEncoding,"3270","3271").set(DeviceInformationMoisture::getStatus, 0).update(); if(!offlineDeviceList.isEmpty()){
new LambdaUpdateChainWrapper<>(moistureMapper).in(DeviceInformationMoisture::getDeviceEncoding,offlineDeviceList).set(DeviceInformationMoisture::getStatus, 0).update();
}
} }
} }
/** /**
@ -205,7 +256,5 @@ public class DeviceDateTask {
System.out.println("插入数据失败!"); System.out.println("插入数据失败!");
} }
} }