添加水电双计设备历史数据保存逻辑,同步在线状态定时任务

This commit is contained in:
蒾酒 2025-01-02 13:34:34 +08:00
parent f8dc8d154f
commit 24344e870a
4 changed files with 80 additions and 8 deletions

View File

@ -123,6 +123,11 @@ public class DeviceOtherMsgConsumer {
//获取流量计累计用水量/瞬时流量 //获取流量计累计用水量/瞬时流量
Float meterSum = data1.getFloat("meterSum"); Float meterSum = data1.getFloat("meterSum");
Float meterIns = data1.getFloat("meterIns"); Float meterIns = data1.getFloat("meterIns");
//获取瞬时功率/累计电量
Float insPower = data1.getFloat("insPower");
Float sumEle = data1.getFloat("sumEle");
//获取设备当前运行状态 //获取设备当前运行状态
Integer valveState = data1.getInt("valveState"); Integer valveState = data1.getInt("valveState");
@ -158,6 +163,22 @@ public class DeviceOtherMsgConsumer {
} }
//同步数据 //同步数据
up.update(); up.update();
//保存历史数据
NgWaterPumpUsageRecords historyData = new NgWaterPumpUsageRecords();
//瞬时流量
historyData.setInsFlow(String.valueOf(meterIns));
//累计流量
historyData.setSumFlow(String.valueOf(meterSum));
//瞬时功率
historyData.setInsPower(String.valueOf(insPower));
//累计用电量
historyData.setSumEle(String.valueOf(sumEle));
//实时时间
historyData.setRealTime(DateUtils.getNowDate());
int i = ngWaterPumpUsageRecordsMapper.insertNgWaterPumpUsageRecords(historyData);
if(i<1){
log.error("保存灌溉控制器历史数据失败");
}
} }
//收到关阀时定时报文 //收到关阀时定时报文
else if(JSONUtil.parseObj(data1).get("action").equals("safeMsg")){ else if(JSONUtil.parseObj(data1).get("action").equals("safeMsg")){
@ -174,6 +195,9 @@ public class DeviceOtherMsgConsumer {
//获取流量计累计用水量/瞬时流量 //获取流量计累计用水量/瞬时流量
Float meterSum = data1.getFloat("meterSum"); Float meterSum = data1.getFloat("meterSum");
Float meterIns = data1.getFloat("meterIns"); Float meterIns = data1.getFloat("meterIns");
//获取瞬时功率/累计电量
Float insPower = data1.getFloat("insPower");
Float sumEle = data1.getFloat("sumEle");
//获取设备当前运行状态 //获取设备当前运行状态
Integer valveState = data1.getInt("valveState"); Integer valveState = data1.getInt("valveState");
@ -209,6 +233,22 @@ public class DeviceOtherMsgConsumer {
} }
//同步数据 //同步数据
up.update(); up.update();
//保存历史数据
NgWaterPumpUsageRecords historyData = new NgWaterPumpUsageRecords();
//瞬时流量
historyData.setInsFlow(String.valueOf(meterIns));
//累计流量
historyData.setSumFlow(String.valueOf(meterSum));
//瞬时功率
historyData.setInsPower(String.valueOf(insPower));
//累计用电量
historyData.setSumEle(String.valueOf(sumEle));
//实时时间
historyData.setRealTime(DateUtils.getNowDate());
int i = ngWaterPumpUsageRecordsMapper.insertNgWaterPumpUsageRecords(historyData);
if(i<1){
log.error("保存灌溉控制器历史数据失败");
}
} }
//开阀门关阀门 //开阀门关阀门
@ -377,13 +417,7 @@ public class DeviceOtherMsgConsumer {
}catch (Exception e){ }catch (Exception e){
} }
} }
deviceCmdAckHandler(new String(data)); deviceCmdAckHandler(new String(data));
updateDeviceOnlineStatus( productId,serialNumber); updateDeviceOnlineStatus( productId,serialNumber);
// updateDeviceOnlineStatusDb(serialNumber); // updateDeviceOnlineStatusDb(serialNumber);

View File

@ -1,7 +1,10 @@
package com.fastbee.iot.service; package com.fastbee.iot.service;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fastbee.iot.domain.DeviceReportInfo; import com.fastbee.iot.domain.DeviceReportInfo;
import com.fastbee.iot.domain.NgFlowDeviceData;
/** /**
* 设备上电审核前上报的基础信息Service接口 * 设备上电审核前上报的基础信息Service接口
@ -9,7 +12,7 @@ import com.fastbee.iot.domain.DeviceReportInfo;
* @author kerwincui * @author kerwincui
* @date 2024-12-05 * @date 2024-12-05
*/ */
public interface IDeviceReportInfoService public interface IDeviceReportInfoService extends IService<DeviceReportInfo>
{ {
/** /**
* 查询设备上电审核前上报的基础信息 * 查询设备上电审核前上报的基础信息

View File

@ -5,9 +5,12 @@ import java.util.List;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fastbee.common.exception.ServiceException; import com.fastbee.common.exception.ServiceException;
import com.fastbee.iot.domain.Device; import com.fastbee.iot.domain.Device;
import com.fastbee.iot.domain.NgFlowDeviceData;
import com.fastbee.iot.mapper.DeviceMapper; import com.fastbee.iot.mapper.DeviceMapper;
import com.fastbee.iot.mapper.NgFlowDeviceDataMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.fastbee.iot.mapper.DeviceReportInfoMapper; import com.fastbee.iot.mapper.DeviceReportInfoMapper;
@ -21,7 +24,7 @@ import com.fastbee.iot.service.IDeviceReportInfoService;
* @date 2024-12-05 * @date 2024-12-05
*/ */
@Service @Service
public class DeviceReportInfoServiceImpl implements IDeviceReportInfoService public class DeviceReportInfoServiceImpl extends ServiceImpl<DeviceReportInfoMapper, DeviceReportInfo> implements IDeviceReportInfoService
{ {
@Autowired @Autowired
private DeviceReportInfoMapper deviceReportInfoMapper; private DeviceReportInfoMapper deviceReportInfoMapper;

View File

@ -15,6 +15,7 @@ import com.fastbee.iot.domain.DeviceReportInfo;;
import com.fastbee.iot.domain.NgFlowDeviceData; import com.fastbee.iot.domain.NgFlowDeviceData;
import com.fastbee.iot.mapper.DeviceReportInfoMapper; import com.fastbee.iot.mapper.DeviceReportInfoMapper;
import com.fastbee.iot.mapper.NgFlowDeviceDataMapper; import com.fastbee.iot.mapper.NgFlowDeviceDataMapper;
import com.fastbee.iot.service.IDeviceReportInfoService;
import com.fastbee.iot.service.INgFlowDeviceDataService; import com.fastbee.iot.service.INgFlowDeviceDataService;
import com.fastbee.iot.zhanlian.ZhanLianConfig; import com.fastbee.iot.zhanlian.ZhanLianConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -48,6 +49,9 @@ public class NGFlowDeviceDateTask {
@Autowired @Autowired
private DeviceReportInfoMapper deviceReportInfoMapper; private DeviceReportInfoMapper deviceReportInfoMapper;
@Autowired
private IDeviceReportInfoService deviceReportInfoService;
@Autowired @Autowired
private NgFlowDeviceDataMapper ngFlowDeviceDataMapper; private NgFlowDeviceDataMapper ngFlowDeviceDataMapper;
@ -275,6 +279,34 @@ public class NGFlowDeviceDateTask {
boolean saveBatch = ngFlowDeviceDataService.saveBatch(ngFlowDeviceDataList); boolean saveBatch = ngFlowDeviceDataService.saveBatch(ngFlowDeviceDataList);
} }
/**
* 同步水电双计设备在线状态
*/
public void syncDeviceOnLineStatus(){
List<DeviceReportInfo> list = new LambdaQueryChainWrapper<>(deviceReportInfoMapper).select(DeviceReportInfo::getSerialNumber).list();
//查询设备在线状态
//批量更新在线状态设备列表
List<DeviceReportInfo> batchUpList = new ArrayList<>();
list.forEach(d->{
if(d.getType()==1){
Boolean hassed = stringRedisTemplate.hasKey("neixiang_device_online_status:" + 147 + ":" + d.getSerialNumber());
DeviceReportInfo dev = new DeviceReportInfo();
dev.setSerialNumber(d.getSerialNumber());
if(hassed){
dev.setOnLine(1);
}else{
dev.setOnLine(0);
}
batchUpList.add(dev);
}
});
boolean batch = deviceReportInfoService.updateBatchById(batchUpList);
if(!batch){
log.error("批量同步水电双计设备在线状态失败!");
}
}
public static void main(String[] args) { public static void main(String[] args) {
NGFlowDeviceDateTask ngFlowDeviceDateTask = new NGFlowDeviceDateTask(); NGFlowDeviceDateTask ngFlowDeviceDateTask = new NGFlowDeviceDateTask();
Map<String, String> deviceRealTimeData =ngFlowDeviceDateTask.getDeviceRealTimeData("3834"); Map<String, String> deviceRealTimeData =ngFlowDeviceDateTask.getDeviceRealTimeData("3834");