【验收】8 本地设备切换记录日志

This commit is contained in:
2025-11-16 21:00:29 +08:00
parent 38ade0c2ed
commit 25e03ab028
7 changed files with 643 additions and 5 deletions

View File

@ -1,9 +1,12 @@
package com.xzzn.quartz.task;
import com.xzzn.common.enums.DeviceRunningStatus;
import com.xzzn.ems.domain.EmsDeviceChangeLog;
import com.xzzn.ems.domain.EmsDevicesSetting;
import com.xzzn.ems.mapper.EmsDeviceChangeLogMapper;
import com.xzzn.ems.mapper.EmsDevicesSettingMapper;
import com.xzzn.ems.mapper.EmsMqttMessageMapper;
import com.xzzn.ems.service.impl.EmsDeviceSettingServiceImpl;
import com.xzzn.framework.manager.ModbusConnectionManager;
import com.xzzn.framework.manager.ModbusConnectionWrapper;
import com.xzzn.framework.manager.MqttLifecycleManager;
@ -14,7 +17,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* 轮询设备-通过modbus协议读取数据
@ -33,6 +38,10 @@ public class ModbusPoller {
private EmsDevicesSettingMapper deviceRepo;
@Autowired
private EmsMqttMessageMapper emsMqttMessageMapper;
@Autowired
private EmsDeviceSettingServiceImpl emsDeviceSettingServiceImpl;
@Autowired
private EmsDeviceChangeLogMapper emsDeviceChangeLogMapper;
@Autowired
public ModbusPoller(MqttLifecycleManager mqttLifecycleManager) {
@ -41,8 +50,9 @@ public class ModbusPoller {
public void pollAllDevices() {
logger.info("开始执行Modbus设备轮询...");
List<EmsDevicesSetting> activeDevices = deviceRepo.selectEmsDevicesSettingList(null);
EmsDevicesSetting selectEntity = new EmsDevicesSetting();
selectEntity.setRunningStatus(DeviceRunningStatus.RUNNING.getCode());
List<EmsDevicesSetting> activeDevices = deviceRepo.selectEmsDevicesSettingList(selectEntity);
EmsDevicesSetting device = activeDevices.get(0);
try {
@ -91,16 +101,39 @@ public class ModbusPoller {
wrapper.close();
connectionManager.removeConnection(Integer.parseInt(device.getDeviceId()));
}
throw new RuntimeException("轮询设备失败", e);
// 设备轮询不到修改运行状态
String beforeStatus = device.getRunningStatus();
device.setRunningStatus(DeviceRunningStatus.SHUTDOWN.getCode());
emsDeviceSettingServiceImpl.updateDevice(device);
// 轮询设备,设备状态变更日志
EmsDeviceChangeLog log = createLogEntity(beforeStatus,device);
emsDeviceChangeLogMapper.insertEmsDeviceChangeLog(log);
throw new RuntimeException("轮询设备失败", e);
}
}
// 处理获取到的数据
private void processData(EmsDevicesSetting device, int[] data) throws MqttException {
String beforeStatus = device.getRunningStatus();
Boolean error = true;
if (data == null || data.length == 0) {
logger.warn("设备{}返回空数据", device.getId());
// 设备读取不到-设置设备故障
device.setRunningStatus(DeviceRunningStatus.FAULT.getCode());
error = false;
} else {
// 恢复设备状态 - 运行
device.setRunningStatus(DeviceRunningStatus.RUNNING.getCode());
}
emsDeviceSettingServiceImpl.updateDevice(device);
// 轮询设备,设备状态变更日志
EmsDeviceChangeLog log = createLogEntity(beforeStatus,device);
emsDeviceChangeLogMapper.insertEmsDeviceChangeLog(log);
// 错误数据-不处理直接返回
if (!error) {
return;
}
@ -116,8 +149,6 @@ public class ModbusPoller {
/*
String siteId = device.getSiteId();
if (siteId.startsWith("021_DDS")) {
ems_devices_setting
dDSDataProcessService.handleDdsData(message);
} else if (siteId.startsWith("021_FXX")) {
fXXDataProcessService.handleFxData(message);
@ -132,4 +163,17 @@ public class ModbusPoller {
// 将设备数据下发到mqtt服务器上
mqttLifecycleManager.publish(topic, dataJson, 0);*/
}
private EmsDeviceChangeLog createLogEntity(String beforeStatus, EmsDevicesSetting device) {
EmsDeviceChangeLog log = new EmsDeviceChangeLog();
log.setLogId(UUID.randomUUID().toString());
log.setLogTime(new Date());
log.setSiteId(device.getSiteId());
log.setDeviceId(device.getDeviceId());
log.setBeforeStatus(beforeStatus);
log.setAfterStatus(device.getRunningStatus());
log.setCreateBy("sys");
log.setCreateTime(new Date());
return log;
}
}