From 7a0be25c49eebba92ab70c715faa987312950b7d Mon Sep 17 00:00:00 2001 From: Christoph Krey Date: Mon, 16 Apr 2018 10:50:57 +0200 Subject: [NEW] Odometer in Reports --- src/org/traccar/reports/ReportUtils.java | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src/org/traccar/reports/ReportUtils.java') diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java index e04f2f90c..e12968428 100644 --- a/src/org/traccar/reports/ReportUtils.java +++ b/src/org/traccar/reports/ReportUtils.java @@ -217,10 +217,21 @@ public final class ReportUtils { trip.setDriverUniqueId(findDriver(startTrip, endTrip)); trip.setDriverName(findDriverName(trip.getDriverUniqueId())); + if (!ignoreOdometer + && startTrip.getDouble(Position.KEY_ODOMETER) != 0 + && endTrip.getDouble(Position.KEY_ODOMETER) != 0) { + trip.setStartOdometer(startTrip.getDouble(Position.KEY_ODOMETER)); + trip.setEndOdometer(endTrip.getDouble(Position.KEY_ODOMETER)); + } else { + trip.setStartOdometer(startTrip.getDouble(Position.KEY_TOTAL_DISTANCE)); + trip.setEndOdometer(endTrip.getDouble(Position.KEY_TOTAL_DISTANCE)); + } + return trip; } - private static StopReport calculateStop(ArrayList positions, int startIndex, int endIndex) { + private static StopReport calculateStop(ArrayList positions, int startIndex, int endIndex, + boolean ignoreOdometer) { Position startStop = positions.get(startIndex); Position endStop = positions.get(endIndex); @@ -256,6 +267,16 @@ public final class ReportUtils { } stop.setEngineHours(engineHours); + if (!ignoreOdometer + && startStop.getDouble(Position.KEY_ODOMETER) != 0 + && endStop.getDouble(Position.KEY_ODOMETER) != 0) { + stop.setStartOdometer(startStop.getDouble(Position.KEY_ODOMETER)); + stop.setEndOdometer(endStop.getDouble(Position.KEY_ODOMETER)); + } else { + stop.setStartOdometer(startStop.getDouble(Position.KEY_TOTAL_DISTANCE)); + stop.setEndOdometer(endStop.getDouble(Position.KEY_TOTAL_DISTANCE)); + } + return stop; } @@ -265,7 +286,7 @@ public final class ReportUtils { if (reportClass.equals(TripReport.class)) { return (T) calculateTrip(positions, startIndex, endIndex, ignoreOdometer); } else { - return (T) calculateStop(positions, startIndex, endIndex); + return (T) calculateStop(positions, startIndex, endIndex, ignoreOdometer); } } -- cgit v1.2.3