From 29f0ac331bc92f17a37484d1954c28684b296cbf Mon Sep 17 00:00:00 2001 From: mi9688 Date: Sat, 30 Nov 2024 18:25:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/controller/AlertLogController.java | 1 + .../DeviceAlarmController.java | 31 +++++- .../com/fastbee/iot/timer/DeviceDateTask.java | 105 +++++++++++++----- 3 files changed, 105 insertions(+), 32 deletions(-) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/AlertLogController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/AlertLogController.java index b4535bb..b3e9c92 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/AlertLogController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/AlertLogController.java @@ -60,6 +60,7 @@ public class AlertLogController extends BaseController List list = alertLogService.selectAlertLogList(alertLog); // 获取排序类型 String sort = alertLog.getSort(); + System.err.println("排序:"+sort); if(sort != null){ //对列表进行排序 //升序 diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java index fef5105..77068ec 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java @@ -18,15 +18,13 @@ import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.model.DeviceShortOutput; import com.fastbee.iot.service.IDeviceService; 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.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.jws.Oneway; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 设备告警 @@ -41,6 +39,7 @@ public class DeviceAlarmController extends BaseController { @Autowired private AlertLogMapper alertLogMapper; + @Autowired private DeviceInformationManager deviceInformationManager; @@ -378,6 +377,30 @@ public class DeviceAlarmController extends BaseController { return resultMap; } + /** + * 查询告警列表 + */ + @GetMapping("/alarmList") + public AjaxResult getAlarmList(@Param("sort")Integer sort ){ + List 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个以上报警 diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java index 1bba5ce..b8328d7 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java @@ -13,6 +13,7 @@ import com.fastbee.deviceData.domain.*; import com.fastbee.deviceData.mapper.*; import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl; +import com.fastbee.deviceData.service.impl.DeviceRealtimedataMoistureServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl; import com.fastbee.deviceInfo.domain.DeviceInformationMeteorology; 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.stereotype.Component; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author mijiupro @@ -45,13 +50,13 @@ public class DeviceDateTask { private DeviceMapper deviceMapper; @Autowired - private DeviceRealtimedataWormsServiceImpl wormsDataService;//虫情 + private DeviceRealtimedataWormsServiceImpl wormsSaveDataService;//虫情 @Autowired - private DeviceRealtimedataMeteorologyServiceImpl meteorologyDataService; + private DeviceRealtimedataMeteorologyServiceImpl meteorologySaveDataService; @Autowired - private DeviceRealtimedataMoistureMapper deviceRealtimedataMoistureMapper; + private DeviceRealtimedataMoistureServiceImpl moistureSaveDataService; @Autowired private DeviceRealtimedataPhotovoltaicMapper deviceRealtimedataPhotovoltaicMapper; @@ -100,26 +105,31 @@ public class DeviceDateTask { * 获取虫情设备实时数据并保存 */ public void getWormsDeviceRealtimeData() { + List list = new LambdaQueryChainWrapper<>(wormsMapper).select(DeviceInformationWorms::getDeviceEncoding).list(); + List deviceEncodingList = list.stream().map(DeviceInformationWorms::getDeviceEncoding).collect(Collectors.toList()); + StringBuilder deviceAddrsStringBuilder= new StringBuilder(""); + //离线设备列表 + List offlineDeviceList = new ArrayList<>(); + //在线设备列表 + List onlineDeviceList = new ArrayList<>(); + for (String deviceEncoding : deviceEncodingList) { + deviceAddrsStringBuilder.append(deviceEncoding); + deviceAddrsStringBuilder.append(","); + } try{ - List 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); String deviceAddrs = stringBuilder.toString(); List deviceRealtimedataWorms = wormsService.setData(deviceAddrs); -// int i = deviceRealtimedataWormsMapper.in(deviceRealtimedataWorms); - boolean saved = wormsDataService.saveBatch(deviceRealtimedataWorms); + new LambdaUpdateChainWrapper<>(wormsMapper).in(DeviceInformationWorms::getDeviceEncoding,"1017240042").set(DeviceInformationWorms::getStatus, 1).update(); + boolean saved = wormsSaveDataService.saveBatch(deviceRealtimedataWorms); if (!saved){ System.out.println("插入数据失败!"); } } catch (Exception 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(){ + List list = new LambdaQueryChainWrapper<>(meteorologyMapper).select(DeviceInformationMeteorology::getDeviceEncoding).list(); + List deviceEncodingList = list.stream().map(DeviceInformationMeteorology::getDeviceEncoding).collect(Collectors.toList()); + //离线设备列表 + List offlineDeviceList = new ArrayList<>(); + //在线设备列表 + List onlineDeviceList = new ArrayList<>(); try{ - List list = new LambdaQueryChainWrapper<>(meteorologyMapper).select(DeviceInformationMeteorology::getDeviceEncoding).list(); - DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(metDataService.getDeviceRealTimeData("3269")); - boolean save = meteorologyDataService.save(deviceRealtimedataMeteorology); - if (!save){ - System.out.println("插入数据失败!"); + deviceEncodingList.forEach(deviceEncoding->{ + Map deviceRealTimeData = new HashMap<>(); + try{ + deviceRealTimeData = metDataService.getDeviceRealTimeData(deviceEncoding); + 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){ 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() { + List list = new LambdaQueryChainWrapper<>(moistureMapper).select(DeviceInformationMoisture::getDeviceEncoding).list(); + List deviceEncodingList = list.stream().map(DeviceInformationMoisture::getDeviceEncoding).collect(Collectors.toList()); + //离线设备列表 + List offlineDeviceList = new ArrayList<>(); + //在线设备列表 + List onlineDeviceList = new ArrayList<>(); try{ - DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(moistureDataService.getDeviceRealTimeData("3270")); - DeviceRealtimedataMoisture deviceRealtimedataMoisture1 = moistureDataService.setData(moistureDataService.getDeviceRealTimeData("3271")); - int i = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture); - int i1 = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture1); - if (i<1||i1<1) - System.out.println("插入数据失败!"); + + deviceEncodingList.forEach(deviceEncoding->{ + Map deviceRealTimeData = new HashMap<>(); + try { + deviceRealTimeData = moistureDataService.getDeviceRealTimeData(deviceEncoding); + 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){ 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("插入数据失败!"); } - - }