diff --git a/ruoyi-video/pom.xml b/ruoyi-video/pom.xml index 79ebf93..8f352d4 100644 --- a/ruoyi-video/pom.xml +++ b/ruoyi-video/pom.xml @@ -109,6 +109,10 @@ com.ruoyi ruoyi-framework + + com.ruoyi + ruoyi-quartz + diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/controller/AlarmRecordController.java b/ruoyi-video/src/main/java/com/ruoyi/video/controller/AlarmRecordController.java index 671e01d..80b4a83 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/controller/AlarmRecordController.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/controller/AlarmRecordController.java @@ -8,6 +8,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.video.domain.AlarmRecord; +import com.ruoyi.video.domain.bo.alarmBatchBo; import com.ruoyi.video.service.InspectionTaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -34,7 +35,6 @@ public class AlarmRecordController extends BaseController { /** * 查询报警记录列表 */ - @PreAuthorize("@ss.hasPermi('video:alarm:list')") @GetMapping("/list") public TableDataInfo list(AlarmRecord alarmRecord) { startPage(); @@ -45,7 +45,6 @@ public class AlarmRecordController extends BaseController { /** * 导出报警记录列表 */ - @PreAuthorize("@ss.hasPermi('video:alarm:export')") @Log(title = "报警记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, AlarmRecord alarmRecord) { @@ -57,7 +56,6 @@ public class AlarmRecordController extends BaseController { /** * 处理报警记录 */ - @PreAuthorize("@ss.hasPermi('video:alarm:handle')") @Log(title = "处理报警记录", businessType = BusinessType.UPDATE) @PostMapping("/handle") public AjaxResult handle(@RequestParam Long alarmId, @@ -71,12 +69,12 @@ public class AlarmRecordController extends BaseController { /** * 批量处理报警记录 */ - @PreAuthorize("@ss.hasPermi('video:alarm:handle')") @Log(title = "批量处理报警记录", businessType = BusinessType.UPDATE) @PostMapping("/batchHandle") - public AjaxResult batchHandle(@RequestParam Long[] alarmIds, - @RequestParam String handleStatus, - @RequestParam(required = false) String handleRemark) { + public AjaxResult batchHandle(@RequestBody alarmBatchBo alarmBatchBo) { + Long[] alarmIds = alarmBatchBo.getAlarmIds(); + String handleStatus = alarmBatchBo.getHandleStatus(); + String handleRemark = alarmBatchBo.getHandleRemark(); String handleBy = SecurityUtils.getUsername(); int successCount = 0; for (Long alarmId : alarmIds) { diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/domain/bo/alarmBatchBo.java b/ruoyi-video/src/main/java/com/ruoyi/video/domain/bo/alarmBatchBo.java new file mode 100644 index 0000000..ebd5daa --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/domain/bo/alarmBatchBo.java @@ -0,0 +1,10 @@ +package com.ruoyi.video.domain.bo; + +import lombok.Data; + +@Data +public class alarmBatchBo { + private Long[] alarmIds; + private String handleStatus; + private String handleRemark; +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/VideoAnalysisService.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/VideoAnalysisService.java index 40ce9e5..b005dd0 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/service/VideoAnalysisService.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/VideoAnalysisService.java @@ -64,6 +64,8 @@ public class VideoAnalysisService { @Autowired private com.ruoyi.video.mapper.InspectionTaskRecordMapper inspectionTaskRecordMapper; + @Autowired + private InspectionTaskMapper inspectionTaskMapper; // 检测器配置 - 支持环境变量配置 private static final String PYTHON_API_URL = System.getenv().getOrDefault("PYTHON_API_URL", "http://localhost:8000") + "/api/detect/file"; @@ -225,6 +227,9 @@ public class VideoAnalysisService { */ private void createAlarmRecordForRecord(InspectionTask task, com.ruoyi.video.domain.InspectionTaskRecord record, Detection detection, Mat frame, long frameCount) throws Exception { + //创建记录之前应该给task加上报警次数 + task.setAlarmCount(task.getAlarmCount() + 1); + inspectionTaskMapper.updateInspectionTask(task); // 创建告警图像临时文件 File alarmImageFile = File.createTempFile("alarm_", ".jpg"); 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 4fc25ed..e10acd9 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 @@ -2,6 +2,7 @@ package com.ruoyi.video.service.impl; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.quartz.util.CronUtils; import com.ruoyi.video.domain.*; import com.ruoyi.video.domain.dto.CameraDto; import com.ruoyi.video.mapper.InspectionTaskMapper; @@ -83,16 +84,15 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { @Override public int insertInspectionTask(InspectionTask inspectionTask) { inspectionTask.setCreateTime(DateUtils.getNowDate()); - // 这些字段在新版实体类中可能不存在,需要进行调整 - // inspectionTask.setExecuteCount(0L); - // inspectionTask.setAlarmCount(0L); + inspectionTask.setExecuteCount(0L); + inspectionTask.setAlarmCount(0L); // 获取设备信息 Device device = deviceService.selectDeviceByDeviceId(inspectionTask.getDeviceId()); - // 新版实体类可能不需要设备名称 - // if (device != null) { - // inspectionTask.setDeviceName(device.getIp()); - // } + + if (device != null) { + inspectionTask.setDeviceName(device.getIp()); + } return inspectionTaskMapper.insertInspectionTask(inspectionTask); } @@ -171,7 +171,12 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { try { // 更新任务状态为执行中 // task.setStatus("1"); -// inspectionTaskMapper.updateInspectionTask(task); + // 更新最后执行时间和下次执行时间 + task.setLastExecuteTime(new Date()); + task.setNextExecuteTime(CronUtils.getNextExecution(task.getCronExpression())); + //更新执行次数 + task.setExecuteCount(task.getExecuteCount() + 1); + inspectionTaskMapper.updateInspectionTask(task); // 获取设备信息 Device device = deviceService.selectDeviceByDeviceId(task.getDeviceId());