diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/listener/InspectionTaskEventListener.java b/ruoyi-video/src/main/java/com/ruoyi/video/listener/InspectionTaskEventListener.java index 8a2fcb0..ddb58ab 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/listener/InspectionTaskEventListener.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/listener/InspectionTaskEventListener.java @@ -65,11 +65,10 @@ public class InspectionTaskEventListener { Long taskId = event.getTaskId(); log.info("接收到任务完成事件: 任务ID={}", taskId); - try { - // 开始异步视频分析 - videoAnalysisService.analyzeVideo(taskId); - } catch (Exception e) { - log.error("处理任务完成事件失败: {}", e.getMessage()); - } + // 注意:视频分析已经在 InspectionTaskServiceImpl.performVideoAnalysisWithRecord 中同步执行 + // 因此这里不需要再次调用分析 + log.info("任务完成处理完毕: 任务ID={}", taskId); + + // 如果未来需要在任务完成后执行其他操作,可以在这里添加 } } \ No newline at end of file diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java index 92c3ea9..2de7b31 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java @@ -33,6 +33,7 @@ import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.math.BigDecimal; import java.net.URL; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -118,7 +119,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { } // 启用任务,使用新版实体类的方法 - task.setStatus(0); // 0表示启用 + task.setStatus("0"); // 0表示启用 task.setUpdateTime(DateUtils.getNowDate()); inspectionTaskMapper.updateInspectionTask(task); @@ -137,7 +138,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { } // 停用任务,使用新版实体类的方法 - task.setStatus(1); // 1表示停用 + task.setStatus("1"); // 1表示停用 task.setUpdateTime(DateUtils.getNowDate()); inspectionTaskMapper.updateInspectionTask(task); @@ -151,7 +152,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { @Async public void executeInspectionTask(Long taskId) { InspectionTask task = inspectionTaskMapper.selectInspectionTaskById(taskId); - if (task == null || task.getStatus() != 0) { // 0表示启用状态 + if (task == null || !"0".equals(task.getStatus())) { // 0表示启用状态 return; } @@ -169,7 +170,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { try { // 更新任务状态为执行中 - task.setStatus(1); + task.setStatus("1"); inspectionTaskMapper.updateInspectionTask(task); // 获取设备信息 @@ -190,7 +191,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { inspectionTaskRecordMapper.updateInspectionTaskRecord(record); // 更新任务状态为已完成 - task.setStatus(2); + task.setStatus("2"); inspectionTaskMapper.updateInspectionTask(task); } catch (Exception e) { @@ -198,7 +199,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { updateRecordFailed(record, e.getMessage()); // 更新任务状态为已完成(虽然失败) - task.setStatus(2); + task.setStatus("2"); inspectionTaskMapper.updateInspectionTask(task); } } @@ -281,12 +282,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { minioObject.setCreateTime(new Date()); Long objectId = vMinioObjectService.insertVMinioObject(minioObject); - // 7. 更新任务的视频ID和状态 - task.setVideoOssId(objectId); - task.setVideoStatus(1); // 已录制未分析 - inspectionTaskMapper.updateInspectionTask(task); - - // 8. 更新记录的附件信息(视频URL) + // 7. 更新记录的附件信息(视频URL) record.setAccessory(objectUrl); inspectionTaskRecordMapper.updateInspectionTaskRecord(record); @@ -454,18 +450,17 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { AlarmRecord alarm = new AlarmRecord(); alarm.setTaskId(task.getTaskId()); - // 这些字段在新版实体类中可能不存在,需要调整 - // alarm.setTaskName(task.getTaskName()); + alarm.setTaskName(task.getTaskName()); alarm.setDeviceId(task.getDeviceId()); - // alarm.setDeviceName(task.getDeviceName()); + alarm.setDeviceName(task.getDeviceName()); alarm.setAlarmType(best.getLabel()); // 这里需要转换double为float alarm.setAlarmLevel(getAlarmLevel((float)best.getConfidence())); - alarm.setAlarmContent(String.format("检测到%s,置信度: %.2f", best.getLabel(), best.getConfidence())); - alarm.setConfidence(best.getConfidence()); - alarm.setImageOssId(rec.getObjectId()); - alarm.setCreateTime(new Date(now)); - alarm.setStatus(0); // 0: 未处理 + alarm.setAlarmDesc(String.format("检测到%s,置信度: %.2f", best.getLabel(), best.getConfidence())); + alarm.setConfidence(BigDecimal.valueOf(best.getConfidence())); + alarm.setImagePath(up.getUrl()); + alarm.setAlarmTime(new Date(now)); + alarm.setHandleStatus("0"); // 0: 未处理 saveAlarmRecord(alarm); currentAlarmId = alarm.getAlarmId(); @@ -546,8 +541,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { AlarmRecord patch = new AlarmRecord(); patch.setAlarmId(currentAlarmId); - // videoPath字段在新版实体类中可能不存在,需要调整 - // patch.setVideoPath(upv.getUrl()); + patch.setVideoPath(upv.getUrl()); alarmRecordMapper.updateAlarmRecord(patch); } catch (Exception ue) { log.warn("巡检会话-上传/回填视频失败: {}", ue.getMessage()); @@ -673,19 +667,18 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { // 创建告警记录 AlarmRecord alarmRecord = new AlarmRecord(); alarmRecord.setTaskId(taskId); - // 这些字段在新版实体类中可能不存在,需要调整 - // alarmRecord.setTaskName(task.getTaskName()); + alarmRecord.setTaskName(task.getTaskName()); alarmRecord.setDeviceId(task.getDeviceId()); - // alarmRecord.setDeviceName(task.getDeviceName()); + alarmRecord.setDeviceName(task.getDeviceName()); alarmRecord.setAlarmType(detection.getLabel()); alarmRecord.setAlarmLevel(getAlarmLevel((float)detection.getConfidence())); - alarmRecord.setAlarmContent(String.format("检测到%s,置信度: %.2f", + alarmRecord.setAlarmDesc(String.format("检测到%s,置信度: %.2f", detection.getLabel(), detection.getConfidence())); - alarmRecord.setConfidence(detection.getConfidence()); - // 设置图片路径 - 需要调整为适合新实体类的方式 - // alarmRecord.setImagePath(imagePath); - alarmRecord.setCreateTime(new Date()); - alarmRecord.setStatus(0); // 0: 未处理 + alarmRecord.setConfidence(BigDecimal.valueOf(detection.getConfidence())); + // 设置图片路径 - 使用正确的方法名 + alarmRecord.setImagePath(imagePath); + alarmRecord.setAlarmTime(new Date()); + alarmRecord.setHandleStatus("0"); // 0: 未处理 saveAlarmRecord(alarmRecord);