wlzboy
23 小时以前 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java
@@ -123,7 +123,7 @@
            List<VehicleGps> gpsList = vehicleGpsMapper.selectGpsDataByTimeRange(vehicleId, dayStartStr, dayEndStr);
            
            if (gpsList == null || gpsList.isEmpty()) {
                logger.info("---> 车辆ID:{} 在日期:{} 无GPS数据", vehicleId, statDate);
//                logger.info("---> 车辆ID:{} 在日期:{} 无GPS数据", vehicleId, statDate);
                return null;
            }
//            logger.info("---> 车辆ID:{} GPS数据条数:{}", vehicleId, gpsList.size());
@@ -476,17 +476,17 @@
//            logger.info("车辆ID: {} 在日期: {} 有 {} 个任务", vehicleId, statDate, taskCount);
            List<VehicleGpsSegmentMileage> mileages = this.getTaskDistanceMileage(vehicleId, dayStart, dayEnd).stream().filter(e -> e.getSegmentDistance() != null && e.getSegmentDistance().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
//            logger.info("车辆ID: {} 在日期: {} 有 {} 个分段里程数据", vehicleId, statDate, mileages.size());
            Integer totalGpsPoints = mileages != null ? mileages.stream()
                .filter(segment -> segment.getGpsPointCount() != null)
                .mapToInt(VehicleGpsSegmentMileage::getGpsPointCount)
                .sum() : 0;
            Integer totalGpsPoints = mileages.stream()
                            .filter(segment -> segment.getGpsPointCount() != null)
                            .mapToInt(VehicleGpsSegmentMileage::getGpsPointCount)
                            .sum();
            BigDecimal taskDistance = getTaskDistance(taskIntervals, mileages);
            BigDecimal totalDistance = calculateTotalMileage(segments);
            BigDecimal nonTaskDistance = totalDistance.subtract(taskDistance);
            
            // 防止除零错误
            BigDecimal taskRatio = BigDecimal.ZERO;
            if (totalDistance != null && totalDistance.compareTo(BigDecimal.ZERO) > 0) {
            if (totalDistance.compareTo(BigDecimal.ZERO) > 0) {
                taskRatio = taskDistance.divide(totalDistance, 4, RoundingMode.HALF_UP);
            }
            // 3. 汇总里程数据
@@ -533,8 +533,8 @@
            }
            
//            logger.info("车辆ID: {} 日期: {} 从分段汇总完成 - 总里程: {}km, 任务里程: {}km, 非任务里程: {}km, 分段数: {}",
//                       vehicleId, statDate, totalMileage, taskMileage, nonTaskMileage, segments.size());
//                       vehicleId, statDate, stats.getTotalMileage(), stats.getTaskMileage(),stats.getNonTaskMileage(), segments.size());
            return stats;
            
        } catch (Exception e) {