添加监控实时状态获取定时任务
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
package com.fastbee.iot.timer;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
||||
import com.fastbee.deviceData.api.devlink.service.ZhanLianMetDataService;
|
||||
@ -8,6 +11,7 @@ import com.fastbee.deviceData.api.devlink.service.ZhanLianMoistureDataService;
|
||||
import com.fastbee.deviceData.api.devlink.service.ZhanLianPhotovoltaicDataService;
|
||||
import com.fastbee.deviceData.api.renke.service.RenkeTargetpestsDeviceDataService;
|
||||
import com.fastbee.deviceData.api.renke.service.RenkeWormDeviceDataService;
|
||||
import com.fastbee.deviceData.api.yingshiyun.service.YingshiyunService;
|
||||
import com.fastbee.deviceData.domain.*;
|
||||
|
||||
import com.fastbee.deviceData.mapper.*;
|
||||
@ -15,14 +19,13 @@ 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;
|
||||
import com.fastbee.deviceInfo.domain.DeviceInformationTargetpests;
|
||||
import com.fastbee.deviceInfo.domain.DeviceInformationWorms;
|
||||
import com.fastbee.deviceInfo.domain.*;
|
||||
import com.fastbee.deviceInfo.mapper.*;
|
||||
import com.fastbee.deviceInfo.service.IDeviceInformationMonitorService;
|
||||
import com.fastbee.iot.mapper.DeviceMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.connection.stream.Consumer;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@ -98,6 +101,15 @@ public class DeviceDateTask {
|
||||
@Autowired
|
||||
private DeviceInformationTargetpestsMapper targetpestsMapper;
|
||||
|
||||
@Autowired
|
||||
private YingshiyunService yingshiyunService;
|
||||
|
||||
@Autowired
|
||||
private NgYingshiCloudIntegrationInfoMapper yingshiCloudIntegrationInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private IDeviceInformationMonitorService deviceInformationMonitorService;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -252,5 +264,80 @@ public class DeviceDateTask {
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监控设备实时状态并更新
|
||||
*/
|
||||
public void getMonitorDeviceRealtimeStatusData() throws Exception{
|
||||
try{
|
||||
//获取所有监控设备编码列表
|
||||
List<DeviceInformationMonitor> monitorList=new LambdaQueryChainWrapper<>(monitorMapper)
|
||||
.select(DeviceInformationMonitor::getDeviceEncoding,DeviceInformationMonitor::getStatus,DeviceInformationMonitor::getId,DeviceInformationMonitor::getProjectId)
|
||||
.list();
|
||||
// log.info("monitorLIST:"+monitorList);
|
||||
//根据projectId对监控设备列表进行分组
|
||||
Map<Long, List<DeviceInformationMonitor>> collect = monitorList.stream().collect(Collectors.groupingBy(DeviceInformationMonitor::getProjectId));
|
||||
// System.err.println("collect:"+collect);
|
||||
//获取所有萤石云对接信息列表
|
||||
List<NgYingshiCloudIntegrationInfo> integrationInfoList=new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
|
||||
.select(NgYingshiCloudIntegrationInfo::getAppkey,NgYingshiCloudIntegrationInfo::getAppsecret,NgYingshiCloudIntegrationInfo::getProjectid)
|
||||
.list();
|
||||
// System.err.println("integrationInfoList:"+integrationInfoList);
|
||||
|
||||
if(integrationInfoList.size()==0)
|
||||
{
|
||||
// System.err.println("设备信息不存在");
|
||||
log.warn("设备信息不存在");
|
||||
}
|
||||
//k为projectId,v为projectId下的设备列表
|
||||
collect.forEach((k,v)->{
|
||||
/*log.info("k:"+k);
|
||||
log.info("v:"+v);*/
|
||||
//获取萤石云对接信息
|
||||
List<NgYingshiCloudIntegrationInfo> list = new LambdaQueryChainWrapper<>(yingshiCloudIntegrationInfoMapper)
|
||||
.select(NgYingshiCloudIntegrationInfo::getAppkey, NgYingshiCloudIntegrationInfo::getAppsecret)
|
||||
.eq(NgYingshiCloudIntegrationInfo::getProjectid, k)
|
||||
.list();
|
||||
NgYingshiCloudIntegrationInfo yingshiCloudIntegrationInfo;
|
||||
if(!list.isEmpty())
|
||||
{
|
||||
yingshiCloudIntegrationInfo=list.get(0);
|
||||
//获取accessToken
|
||||
String accessToken=yingshiyunService.getAuth(yingshiCloudIntegrationInfo.getAppkey(),yingshiCloudIntegrationInfo.getAppsecret());
|
||||
//获取设备信息列表
|
||||
JSONObject deviceInfoList = yingshiyunService.getInfoList(accessToken);
|
||||
log.info(k+"的监控设备json:"+deviceInfoList);
|
||||
if(deviceInfoList.isEmpty())
|
||||
{
|
||||
log.warn(k+"的监控设备json为空");
|
||||
}
|
||||
JSONArray data= deviceInfoList.getJSONArray("data");
|
||||
log.info(k+"的监控设备信息:"+data);
|
||||
data.forEach(d->{
|
||||
JSONObject object = JSONUtil.parseObj(d.toString());
|
||||
String deviceSerial=object.getStr("deviceSerial");//设备编码
|
||||
Long status=object.getLong("status");//设备状态
|
||||
for(DeviceInformationMonitor device:v)
|
||||
{
|
||||
if(device.getDeviceEncoding().equals(deviceSerial))
|
||||
{
|
||||
device.setStatus(status);//设置status,0=离线,1=在线
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
//批量更新设备状态数据
|
||||
boolean flag=deviceInformationMonitorService.updateBatchById(v);
|
||||
if(!flag)
|
||||
{
|
||||
log.warn("监控设备状态更新失败");
|
||||
}
|
||||
});
|
||||
}catch (Exception e){
|
||||
log.warn("获取监控设备实时状态失败",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user