【验收】8 本地设备切换记录日志
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user