fleetmap-reports 1.0.907 → 1.0.908
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/activity-report.js +3 -18
- package/src/kms-report.js +11 -34
- package/src/util/trips.js +19 -0
package/package.json
CHANGED
package/src/activity-report.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const automaticReports = require('./automaticReports')
|
|
2
2
|
const {
|
|
3
3
|
convertMS, getDates, getTranslations, weekDaySelected, convertToLocaleString, isClientSide,
|
|
4
|
-
getLanguage
|
|
4
|
+
getLanguage
|
|
5
5
|
} = require('./util/utils')
|
|
6
6
|
const jsPDF = require('jspdf')
|
|
7
7
|
require('jspdf-autotable')
|
|
@@ -12,7 +12,7 @@ const {
|
|
|
12
12
|
const { getStyle } = require('./reportStyle')
|
|
13
13
|
const { getUserPartner } = require('fleetmap-partners')
|
|
14
14
|
const traccar = require('./util/traccar')
|
|
15
|
-
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip,
|
|
15
|
+
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay } = require('./util/trips')
|
|
16
16
|
const { devicesToProcess } = require('./util/device')
|
|
17
17
|
const { getDriverData } = require('./util/driver')
|
|
18
18
|
const { calculateConsumption } = require('./util/fuel')
|
|
@@ -157,14 +157,6 @@ async function createActivityReportByDriver (from, to, userData, traccarInstance
|
|
|
157
157
|
return allData
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
function checkTripsPartialInsideDate (date, userData, tripsByDay, deviceRoute) {
|
|
161
|
-
const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
|
|
162
|
-
const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
|
|
163
|
-
const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
|
|
164
|
-
const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
|
|
165
|
-
tripsByDay.forEach(t => calculatePartialTrip(startDate, endDate, deviceRoute, t))
|
|
166
|
-
}
|
|
167
|
-
|
|
168
160
|
function processDevices (from, to, devices, data, userData) {
|
|
169
161
|
const devicesResult = []
|
|
170
162
|
|
|
@@ -183,18 +175,11 @@ function processDevices (from, to, devices, data, userData) {
|
|
|
183
175
|
const summary = []
|
|
184
176
|
if (userData.groupByDay) {
|
|
185
177
|
const trips = deviceTrips.filter(t => userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, deviceRoute))
|
|
186
|
-
|
|
187
178
|
const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
|
|
188
179
|
for (const date of dates) {
|
|
189
|
-
const
|
|
190
|
-
const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
|
|
191
|
-
const tripsByDay = trips.filter(t => new Date(t.endTime) > fromByDay && new Date(t.startTime) < toByDay).map(t => { return { ...t } })
|
|
180
|
+
const { tripsByDay, routeByDay } = getDataByDay(date, trips, userData, deviceRoute)
|
|
192
181
|
|
|
193
|
-
checkTripsPartialInsideDate(date, userData, tripsByDay, deviceRoute)
|
|
194
|
-
|
|
195
|
-
const routeByDay = deviceRoute.filter(p => (new Date(p.fixTime) > fromByDay && new Date(p.fixTime) < toByDay))
|
|
196
182
|
const distance = tripsByDay.reduce((a, b) => a + b.distance, 0)
|
|
197
|
-
|
|
198
183
|
if (!userData.allWeek && userData.weekDays && userData.dayHours) {
|
|
199
184
|
if (weekDaySelected(date, userData.weekDays)) {
|
|
200
185
|
summary.push({
|
package/src/kms-report.js
CHANGED
|
@@ -7,10 +7,10 @@ const {
|
|
|
7
7
|
} = require('./util/pdfDocument')
|
|
8
8
|
const { getUserPartner } = require('fleetmap-partners')
|
|
9
9
|
const traccar = require('./util/traccar')
|
|
10
|
-
const { getDates,
|
|
10
|
+
const { getDates, getTranslations } = require('./util/utils')
|
|
11
11
|
const trips = require('./util/trips')
|
|
12
12
|
const drivers = require('./util/driver')
|
|
13
|
-
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip } = require('./util/trips')
|
|
13
|
+
const { isInsideTimetable, isPartialInsideTimetable, calculateTrip, getDataByDay } = require('./util/trips')
|
|
14
14
|
const traccarHelper = require('./util/traccar')
|
|
15
15
|
const { devicesToProcess } = require('./util/device')
|
|
16
16
|
const { getDriverData } = require('./util/driver')
|
|
@@ -43,7 +43,7 @@ async function createKmsReportByDevice (from, to, userData, traccarInstance) {
|
|
|
43
43
|
to
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
const needRoute = !userData.allWeek
|
|
46
|
+
const needRoute = !userData.allWeek || userData.groupByDay
|
|
47
47
|
const allInOne = await traccarHelper.getAllInOne(traccarInstance, from, to, devices, needRoute, true, false, false, 0, devices.length, 20)
|
|
48
48
|
const tripsData = allInOne.trips
|
|
49
49
|
const routeData = allInOne.route
|
|
@@ -161,41 +161,18 @@ function processDevices (from, to, devices, data, userData) {
|
|
|
161
161
|
|
|
162
162
|
if (userData.groupByDay) {
|
|
163
163
|
if (trips.length > 0) {
|
|
164
|
-
trips.forEach(t => {
|
|
165
|
-
const tripDay = convertFromUTC(t.startTime, userData.user.attributes.timezone)
|
|
166
|
-
tripDay.setHours(12, 0, 0)
|
|
167
|
-
t.tripDay = tripDay.toISOString()
|
|
168
|
-
})
|
|
169
|
-
const groupedTrips = trips.reduce(
|
|
170
|
-
(entryMap, e) => entryMap.set(e.tripDay, [...entryMap.get(e.tripDay) || [], e]),
|
|
171
|
-
new Map()
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
const allDates = getDates(from, to)
|
|
175
|
-
|
|
176
164
|
const days = []
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const
|
|
181
|
-
if (!keys.includes(day)) {
|
|
182
|
-
groupedTrips.set(day, [])
|
|
183
|
-
}
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
keys = Array.from(groupedTrips.keys())
|
|
187
|
-
keys.sort((a, b) => new Date(a).getTime() - new Date(b).getTime())
|
|
188
|
-
keys.forEach(key => {
|
|
189
|
-
const currentDate = new Date(key)
|
|
190
|
-
const dayTrips = groupedTrips.get(key)
|
|
165
|
+
const trips = deviceTrips.filter(t => userData.allWeek || !userData.weekDays || isInsideTimetable(t, userData) || isPartialInsideTimetable(t, userData, deviceRoute))
|
|
166
|
+
const dates = getDates(from, to, userData.user.attributes.timezone || getUserPartner(userData.user).timezone)
|
|
167
|
+
for (const date of dates) {
|
|
168
|
+
const { tripsByDay } = getDataByDay(date, trips, userData, deviceRoute)
|
|
191
169
|
const day = {
|
|
192
|
-
date
|
|
193
|
-
kms: 0
|
|
170
|
+
date,
|
|
171
|
+
kms: tripsByDay.reduce((a, b) => a + b.distance, 0)
|
|
194
172
|
}
|
|
195
|
-
day.kms = dayTrips.reduce((a, b) => a + b.distance, 0)
|
|
196
|
-
|
|
197
173
|
days.push(day)
|
|
198
|
-
}
|
|
174
|
+
}
|
|
175
|
+
|
|
199
176
|
devicesResult.push({
|
|
200
177
|
device: d,
|
|
201
178
|
days
|
package/src/util/trips.js
CHANGED
|
@@ -93,6 +93,24 @@ function isPartialInsideTimetable (t, userData, route) {
|
|
|
93
93
|
return false
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
function getDataByDay (date, trips, userData, deviceRoute) {
|
|
97
|
+
const fromByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0)
|
|
98
|
+
const toByDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59)
|
|
99
|
+
const tripsByDay = trips.filter(t => new Date(t.endTime) > fromByDay && new Date(t.startTime) < toByDay).map(t => {
|
|
100
|
+
return { ...t }
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
const startDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.startTime)
|
|
104
|
+
const endDateLocal = new Date(convertFromUTC(date, userData.user.attributes.timezone).toISOString().split('T')[0] + ' ' + userData.dayHours.endTime)
|
|
105
|
+
const startDate = isClientSide() ? startDateLocal : convertFromLocal(startDateLocal, userData.user.attributes.timezone)
|
|
106
|
+
const endDate = isClientSide() ? endDateLocal : convertFromLocal(endDateLocal, userData.user.attributes.timezone)
|
|
107
|
+
tripsByDay.forEach(t => calculatePartialTrip(startDate, endDate, deviceRoute, t))
|
|
108
|
+
console.log(date, tripsByDay)
|
|
109
|
+
|
|
110
|
+
const routeByDay = deviceRoute.filter(p => (new Date(p.fixTime) > fromByDay && new Date(p.fixTime) < toByDay))
|
|
111
|
+
return { tripsByDay, routeByDay }
|
|
112
|
+
}
|
|
113
|
+
|
|
96
114
|
function isInsideTimetable (t, userData) {
|
|
97
115
|
return isInside(t.startTime, t.endTime, userData)
|
|
98
116
|
}
|
|
@@ -162,6 +180,7 @@ function calculateStopDuration (stop) {
|
|
|
162
180
|
exports.checkTripsKms = checkTripsKms
|
|
163
181
|
exports.isInsideTimetable = isInsideTimetable
|
|
164
182
|
exports.isPartialInsideTimetable = isPartialInsideTimetable
|
|
183
|
+
exports.getDataByDay = getDataByDay
|
|
165
184
|
exports.calculatePartialTrip = calculatePartialTrip
|
|
166
185
|
exports.calculateTrip = calculateTrip
|
|
167
186
|
exports.getTripIdleTime = getTripIdleTime
|