wlzboy
昨天 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleAbnormalAlertTask.java
@@ -81,7 +81,7 @@
            // 查询所有活跃车辆
            List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(new VehicleInfo());
            if (vehicles == null || vehicles.isEmpty()) {
                log.debug("没有找到需要监控的车辆");
                log.info("没有找到需要监控的车辆");
                return;
            }
            
@@ -118,14 +118,14 @@
        // 获取该车辆的配置(优先级:车辆 > 部门 > 全局)
        AlertConfig config = getVehicleAlertConfig(vehicleId, deptId, globalConfig);
        if (config == null) {
            log.debug("车辆 {} 未找到有效配置,跳过监控", vehicleNo);
//            log.info("车辆 {} 未找到有效配置,跳过监控", vehicleNo);
            return false;
        }
        
        // 1. 查询车辆在时间窗口内的总运行里程
        BigDecimal totalMileage = calculateVehicleMileage(vehicleId, startTime, endTime);
        if (totalMileage == null || totalMileage.compareTo(BigDecimal.ZERO) == 0) {
            log.debug("车辆 {} 在监控窗口内无运行里程", vehicleNo);
//            log.info("车辆 {} 在监控窗口内无运行里程", vehicleNo);
            return false;
        }
        
@@ -138,23 +138,23 @@
        // 3. 计算非任务状态下的运行里程
        BigDecimal nonTaskMileage = totalMileage.subtract(taskMileage);
        if (nonTaskMileage.compareTo(BigDecimal.ZERO) <= 0) {
            log.debug("车辆 {} 在监控窗口内无非任务里程", vehicleNo);
//            log.info("车辆 {} 在监控窗口内无非任务里程", vehicleNo);
            return false;
        }
        
        log.debug("车辆 {} 总里程: {}km, 任务里程: {}km, 非任务里程: {}km",
                vehicleNo, totalMileage, taskMileage, nonTaskMileage);
//        log.info("车辆 {} 总里程: {}km, 任务里程: {}km, 非任务里程: {}km",
//                vehicleNo, totalMileage, taskMileage, nonTaskMileage);
        
        // 4. 检查非任务里程是否超过公里数阈值
        if (nonTaskMileage.compareTo(config.mileageThreshold) <= 0) {
            log.debug("车辆 {} 非任务运行里程 {}km 未超过阈值 {}km",
                    vehicleNo, nonTaskMileage, config.mileageThreshold);
//            log.info("车辆 {} 非任务运行里程 {}km 未超过阈值 {}km",
//                    vehicleNo, nonTaskMileage, config.mileageThreshold);
            return false;
        }
        
        // 5. 检查告警频率限制
        if (!checkAlertFrequency(vehicleId, config)) {
            log.debug("车辆 {} 已达到告警频率限制", vehicleNo);
//            log.info("车辆 {} 已达到告警频率限制", vehicleNo);
            return false;
        }
        
@@ -338,13 +338,14 @@
                    vehicleId, vehicleNo, mileage, startTime, endTime, deptId, deptName);
            
            if (!created) {
//                log.info("车辆 {} 今日已存在相同类型的告警,不再创建", vehicleNo);
                return false;
            }
            
            log.info("车辆 {} 产生异常告警:无任务运行 {}km,时间 {} 至 {}",
                    vehicleNo, mileage,
                    DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startTime),
                    DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endTime));
//            log.info("车辆 {} 产生异常告警:无任务运行 {}km,时间 {} 至 {}",
//                    vehicleNo, mileage,
//                    DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startTime),
//                    DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endTime));
            
            // 发送通知
            sendAlertNotification(vehicle, mileage, deptId, config);
@@ -424,8 +425,8 @@
                            userService.selectUserByUserName(dept.getLeader());
                    if (leaderUser != null) {
                        userIds.add(leaderUser.getUserId());
                        log.info("使用部门 {} 负责人: {} (ID: {})",
                                dept.getDeptName(), dept.getLeader(), leaderUser.getUserId());
//                        log.info("使用部门 {} 负责人: {} (ID: {})",
//                                dept.getDeptName(), dept.getLeader(), leaderUser.getUserId());
                    } else {
                        log.warn("部门 {} 负责人 {} 未找到对应用户", 
                                dept.getDeptName(), dept.getLeader());
@@ -524,8 +525,8 @@
            // 通知用户列表
            config.notifyUsers = configService.selectConfigByKey("vehicle.alert.notify.users");
            
            log.debug("告警配置: 阈值={}km, 每日限制={}次, 间隔={}分钟, 时间窗口={}分钟",
                    config.mileageThreshold, config.dailyLimit, config.alertInterval, config.timeWindow);
//            log.debug("告警配置: 阈值={}km, 每日限制={}次, 间隔={}分钟, 时间窗口={}分钟",
//                    config.mileageThreshold, config.dailyLimit, config.alertInterval, config.timeWindow);
            
        } catch (Exception e) {
            log.error("加载告警配置失败,使用默认值", e);