From b521c32ade8a8a598ece7e4c9b0c1bda91f2c5f9 Mon Sep 17 00:00:00 2001 From: meusinfirmary Date: Wed, 16 Jul 2025 18:39:19 +0700 Subject: [PATCH] update --- app.js | 45 +++++++++++++++++++++++++++++++++++++-------- models/VhcModels.js | 8 ++++---- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/app.js b/app.js index b85d4b1..3d4d0fe 100644 --- a/app.js +++ b/app.js @@ -109,24 +109,53 @@ async function commitMessage(now, logDevice) { // ================= UPDATE SUM MILEAGE DARI t_vehicle ==================== if (logDevice.latitude != null && logDevice.longitude != null && lastTrack.length > 0) { const distance = LibHelper.haversineGreatCircleDistance(lastTrack[0].latitude, lastTrack[0].longitude, logDevice.latitude, logDevice.longitude, LibHelper.EARTH_RADIUS_KM); + const distance_km = LibHelper.kmToKm(distance, 100000000); if (distance_km >= 3) { GpsTracksModels.bundleCreate2(logDevice, logDevice); return false; } + logDevice.pre_milleage = distance_km; - logDevice.sum_milleage = (lastTrack[0].sum_milleage + logDevice.pre_milleage).toFixed(8); + if (vhc.length > 0) { - logDevice.vhc_id = vhc[0] ? vhc[0].vid : 0; - if (lastTrack[0].vhc_id == logDevice.vhc_id) { - logDevice.vhc_milleage = (lastTrack[0].vhc_milleage + logDevice.pre_milleage).toFixed(8); - } else { - logDevice.vhc_milleage = (vhc[0] ? vhc[0].sum_milleage : 0 + logDevice.pre_milleage).toFixed(8); - } - VhcModels.update(vhc[0] ? vhc[0].vid : 0, { sum_milleage: logDevice.vhc_milleage }); + const vhcMilleageBase = vhc[0]?.sum_milleage ?? 0; + logDevice.vhc_id = vhc[0]?.vid ?? 0; + const newSum = vhcMilleageBase + logDevice.pre_milleage; + + logDevice.sum_milleage = newSum.toFixed(8); + logDevice.vhc_milleage = newSum.toFixed(8); + + VhcModels.update(logDevice.vhc_id, { + sum_milleage: newSum.toFixed(8), + }); + } else { + logDevice.sum_milleage = logDevice.pre_milleage.toFixed(8); } } + + // V1 + // if (logDevice.latitude != null && logDevice.longitude != null && lastTrack.length > 0) { + // const distance = LibHelper.haversineGreatCircleDistance(lastTrack[0].latitude, lastTrack[0].longitude, logDevice.latitude, logDevice.longitude, LibHelper.EARTH_RADIUS_KM); + // const distance_km = LibHelper.kmToKm(distance, 100000000); + + // if (distance_km >= 3) { + // GpsTracksModels.bundleCreate2(logDevice, logDevice); + // return false; + // } + // logDevice.pre_milleage = distance_km; + // logDevice.sum_milleage = (lastTrack[0].sum_milleage + logDevice.pre_milleage).toFixed(8); + // if (vhc.length > 0) { + // logDevice.vhc_id = vhc[0] ? vhc[0].vid : 0; + // if (lastTrack[0].vhc_id == logDevice.vhc_id) { + // logDevice.vhc_milleage = (lastTrack[0].vhc_milleage + logDevice.pre_milleage).toFixed(8); + // } else { + // logDevice.vhc_milleage = (vhc[0] ? vhc[0].sum_milleage : 0 + logDevice.pre_milleage).toFixed(8); + // } + // VhcModels.update(vhc[0] ? vhc[0].vid : 0, { sum_milleage: logDevice.vhc_milleage }); + // } + // } // if (logDevice.latitude != null && logDevice.longitude != null && lastTrack.length > 0) { // const distance = LibHelper.haversineGreatCircleDistance(lastTrack[0].latitude, lastTrack[0].longitude, logDevice.latitude, logDevice.longitude, LibHelper.EARTH_RADIUS_KM); // const distance_km = LibHelper.kmToKm(distance, 100000000); diff --git a/models/VhcModels.js b/models/VhcModels.js index 282e0b4..702f73f 100755 --- a/models/VhcModels.js +++ b/models/VhcModels.js @@ -96,10 +96,10 @@ class VhcModels { static async incrementMileage(vhc_id, add_km) { return new Promise((resolve, reject) => { const query = ` - UPDATE t_vehicles - SET sum_milleage = COALESCE(sum_milleage, 0) + ? - WHERE id = ? AND dlt IS NULL - `; + UPDATE t_vehicles + SET sum_milleage = COALESCE(sum_milleage, 0) + ? + WHERE id = ? AND dlt IS NULL + `; db.query(query, [add_km, vhc_id], (err, result) => { if (err) return reject(err); resolve(result);