feat(device): 增加设备故障记录功能并完善监控逻辑

- 在 DeviceSsjMapper.xml 中添加 ipAddress 和 port 字段映射
- 调整 SQL 查询语句字段顺序以适配新增字段
- MonitoringThread.java 引入 BasFaultRecord 相关类及工具类
- 初始化 basFaultRecordService 和 mydoJobService 服务实例
- 实现设备状态异常检测逻辑,并创建或更新故障记录
- 新增 BasFaultRecord 实体类用于存储设备故障信息
- 创建 BasFaultRecordController 控制器提供 RESTful 接口
- 添加 BasFaultRecordMapper 接口定义数据库操作方法
- 编写 BasFaultRecordMapper.xml 配置文件实现 CRUD 操作
- 实现 BasFaultRecordServiceImpl 业务逻辑处理层
- 定义 IBasFaultRecordService 接口规范服务行为
This commit is contained in:
liuhanqing
2025-12-11 09:19:07 +08:00
parent 2fa7a06e76
commit cbda1d15e8
9 changed files with 645 additions and 2 deletions

View File

@@ -1,13 +1,25 @@
package com.ruoyi.schedule.scheduleTask.monit;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import com.ruoyi.bas.fault.domain.BasFaultRecord;
import com.ruoyi.bas.fault.service.IBasFaultRecordService;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.ddj.domain.MsgDdj;
import com.ruoyi.device.ddj.service.IMsgDdjService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* 监控线程
*/
@@ -18,11 +30,15 @@ public class MonitoringThread implements Runnable {
private IDeviceSsjService deviceSsjService;
private IMsgDdjService msgDdjService;
private IBasFaultRecordService basFaultRecordService;
private IMydoJobService mydoJobService;
public void init() {
deviceSsjService = SpringUtils.getBean(IDeviceSsjService.class);
msgDdjService = SpringUtils.getBean(IMsgDdjService.class);
basFaultRecordService = SpringUtils.getBean(IBasFaultRecordService.class);
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
}
@Override
@@ -34,7 +50,43 @@ public class MonitoringThread implements Runnable {
deviceSsjService.updateDeviceSsj(deviceSsj);
}
for (String ddjCode : PlcDdjRead.deviceDdjMap.keySet()) {
msgDdjService.updateMsgDdj(PlcDdjRead.deviceDdjMap.get(ddjCode));
MsgDdj msgDdj = PlcDdjRead.deviceDdjMap.get(ddjCode);
msgDdjService.updateMsgDdj(msgDdj);
if (msgDdj.getSbzt() > 1000) {
BasFaultRecord param = new BasFaultRecord();
param.setTaskNo(msgDdj.getRwh() + "");
param.setDeviceId(String.valueOf(msgDdj.getId()));
param.setDeviceType("DDJ");
param.setJobId("0");
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
if (CollUtil.isEmpty(basFaultRecords)) {
BasFaultRecord faultRecord = new BasFaultRecord();
faultRecord.setId(IdUtil.fastSimpleUUID());
faultRecord.setDeviceId(String.valueOf(msgDdj.getId()));
faultRecord.setDeviceName(msgDdj.getName());
faultRecord.setDeviceType("DDJ");
faultRecord.setJobId("0");
faultRecord.setTaskNo(msgDdj.getRwh() + "");
faultRecord.setFault(msgDdj.getSbzt() + "");
faultRecord.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
//faultRecord.setWarehouseId(mydoJob.getWarehouseId());
basFaultRecordService.insertBasFaultRecord(faultRecord);
}
}
if (msgDdj.getSbzt() < 1000 && msgDdj.getCzfs() == 5){
BasFaultRecord param = new BasFaultRecord();
param.setTaskNo(msgDdj.getRwh() + "");
param.setDeviceId(String.valueOf(msgDdj.getId()));
param.setDeviceType("DDJ");
List<BasFaultRecord> basFaultRecords = basFaultRecordService.selectBasFaultRecordList(param);
if (CollUtil.isNotEmpty(basFaultRecords)) {
BasFaultRecord faultRecord = basFaultRecords.get(0);
faultRecord.setJobId("1");
faultRecord.setFinishTime(DateUtil.formatDateTime(DateUtil.date()));
basFaultRecordService.updateBasFaultRecord(faultRecord);
}
}
}
try {
Thread.sleep(1500);