| | |
| | | |
| | | @Autowired |
| | | private ISysConfigService configService; |
| | | |
| | | /** |
| | | * 执行GPS分段里程补偿计算 |
| | | * 检查最近N天内未被处理的GPS坐标并进行补偿计算 |
| | | * 建议配置为每天执行一次,例如凌晨2点 |
| | | */ |
| | | public void executeCompensationCalculation() { |
| | | executeCompensationCalculation("7"); |
| | | } |
| | | |
| | | /** |
| | | * 执行GPS分段里程补偿计算(带参数) |
| | | * |
| | | * @param params 参数字符串,格式:回溯天数(如:7表示回溯7天) |
| | | */ |
| | | public void executeCompensationCalculation(String params) { |
| | | try { |
| | | // 解析参数:回溯天数 |
| | | int lookbackDays = 7; // 默认7天 |
| | | if (params != null && !params.trim().isEmpty()) { |
| | | try { |
| | | lookbackDays = Integer.parseInt(params.trim()); |
| | | } catch (NumberFormatException e) { |
| | | logger.warn("参数格式错误,使用默认值7天: {}", params); |
| | | } |
| | | } |
| | | |
| | | logger.info("========== 开始执行GPS分段里程补偿计算 - 回溯{}天 ==========", lookbackDays); |
| | | |
| | | // 执行补偿计算 |
| | | int successCount = segmentMileageService.compensateCalculation(lookbackDays); |
| | | |
| | | logger.info("========== GPS分段里程补偿计算完成 - 成功处理 {} 辆车 ==========", successCount); |
| | | |
| | | } catch (Exception e) { |
| | | logger.error("GPS分段里程补偿计算失败", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 计算最近一段时间的GPS分段里程 |
| | |
| | | } |
| | | } |
| | | |
| | | // 计算时间范围 |
| | | // 计算时间范围(向前回溯指定分钟数) |
| | | Calendar cal = Calendar.getInstance(); |
| | | Date endTime = cal.getTime(); |
| | | cal.add(Calendar.MINUTE, -minutes); |
| | | Date startTime = cal.getTime(); |
| | | |
| | | // 注意:此方法只计算最近时间段的数据,历史遗漏数据由补偿机制处理 |
| | | |
| | | logger.info("开始计算GPS分段里程 - 时间范围: {} 到 {}, 时间段间隔: {}分钟", |
| | | startTime, endTime, segmentMinutes); |
| | | |