From b36884c1fedec5391aaaa5e862b34b5a5debae54 Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期四, 08 十月 2026 10:36:04 +0800
Subject: [PATCH] 修改计算车辆行驶距离和时间的判断规则

---
 src/modules/report/service/taskservicevehicle.ts |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/modules/report/service/taskservicevehicle.ts b/src/modules/report/service/taskservicevehicle.ts
index 22405df..7d392c0 100644
--- a/src/modules/report/service/taskservicevehicle.ts
+++ b/src/modules/report/service/taskservicevehicle.ts
@@ -27,11 +27,12 @@
         let HOUR_OFFWORK = parseInt(await this.baseSysParamService.dataByKey('vehicle.hour.offwork')); //'22';
         let THRESHOLD_MOVING = parseInt(await this.baseSysParamService.dataByKey('vehicle.speed.threshold.moving')); //'2.0 km/h';
         let THRESHOLD_SPEEDING = parseInt(await this.baseSysParamService.dataByKey('vehicle.speed.threshold.speeding')); //'30 km/h';
-
+        let THRESHOLD_DISPLACEMENT = parseInt(await this.baseSysParamService.dataByKey('vehicle.threshold.displacement')); //'30 km/h';
         HOUR_STARTWORK = Number.isNaN(HOUR_STARTWORK) ? 6 : HOUR_STARTWORK;
         HOUR_OFFWORK = Number.isNaN(HOUR_OFFWORK) ? 22 : HOUR_OFFWORK;
         THRESHOLD_MOVING = Number.isNaN(THRESHOLD_MOVING) ? 2 : THRESHOLD_MOVING;
         THRESHOLD_SPEEDING = Number.isNaN(THRESHOLD_SPEEDING) ? 30 : THRESHOLD_SPEEDING;
+        THRESHOLD_DISPLACEMENT = Number.isNaN(THRESHOLD_DISPLACEMENT) ? 10 : THRESHOLD_DISPLACEMENT;
 
 
 
@@ -85,7 +86,8 @@
                 HOUR_STARTWORK,
                 HOUR_OFFWORK,
                 THRESHOLD_MOVING,
-                THRESHOLD_SPEEDING
+                THRESHOLD_SPEEDING,
+                THRESHOLD_DISPLACEMENT
             );
             summariesToUpsert.push(summary);
         }
@@ -109,7 +111,8 @@
         HOUR_STARTWORK: number,
         HOUR_OFFWORK: number,
         HHRESHOLD_MOVING: number,
-        THRESHOLD_SPEEDING: number
+        THRESHOLD_SPEEDING: number,
+        THRESHOLD_DISPLACEMENT: number
     ): Partial<ReportDailyVehicleEntity> {
         const departmentId = points[0]?.departmentId ?? null;
 
@@ -169,9 +172,15 @@
                 if (timeDiffSec > 0 && timeDiffSec <= 120) {
 
                     // ================================================
-                    // 椤哄簭 3锛氬熀浜庨�熷害鍒掑垎涓恒�愯椹躲�戞垨銆愰潤姝㈠仠闈犮��
+                    // 椤哄簭 3锛氬熀浜庡潗鏍囦綅绉诲垝鍒嗕负銆愯椹躲�戞垨銆愰潤姝㈠仠闈犮��
                     // ================================================
-                    if (speed > HHRESHOLD_MOVING) {
+                    const distance = this.getHaversineDistance(
+                        Number(prev.latitude),
+                        Number(prev.longitude),
+                        Number(curr.latitude),
+                        Number(curr.longitude),
+                    );
+                    if (distance > THRESHOLD_DISPLACEMENT) {
                         // 3.1 绱姞绾椹舵椂闀�
                         secondsMoving += timeDiffSec;
 

--
Gitblit v1.9.1