From caf56217dc2bf898b63b0e1f31a7098202c32825 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 15 十一月 2025 16:50:17 +0800
Subject: [PATCH] Merge branch 'feature_gps'
---
sql/车辆里程统计使用说明.md | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 202 insertions(+), 0 deletions(-)
diff --git "a/sql/\350\275\246\350\276\206\351\207\214\347\250\213\347\273\237\350\256\241\344\275\277\347\224\250\350\257\264\346\230\216.md" "b/sql/\350\275\246\350\276\206\351\207\214\347\250\213\347\273\237\350\256\241\344\275\277\347\224\250\350\257\264\346\230\216.md"
index e69de29..31a6ee0 100644
--- "a/sql/\350\275\246\350\276\206\351\207\214\347\250\213\347\273\237\350\256\241\344\275\277\347\224\250\350\257\264\346\230\216.md"
+++ "b/sql/\350\275\246\350\276\206\351\207\214\347\250\213\347\273\237\350\256\241\344\275\277\347\224\250\350\257\264\346\230\216.md"
@@ -0,0 +1,202 @@
+# 杞﹁締GPS閲岀▼缁熻鍔熻兘浣跨敤璇存槑
+
+## 鍔熻兘姒傝堪
+
+鏈姛鑳藉疄鐜颁簡杞﹁締GPS琛岄┒閲岀▼鐨勮嚜鍔ㄧ粺璁★紝鍖呮嫭锛�
+1. **鎬婚噷绋嬬粺璁�**锛氬熀浜嶨PS鐐硅绠楄溅杈嗘瘡鏃ユ�昏椹堕噷绋�
+2. **浠诲姟鏃舵閲岀▼**锛氳绠楄溅杈嗗湪鎵ц浠诲姟鏈熼棿鐨勮椹堕噷绋�
+3. **闈炰换鍔℃椂娈甸噷绋�**锛氳绠楄溅杈嗛潪鎵ц浠诲姟鏈熼棿鐨勮椹堕噷绋�
+4. **浠诲姟閲岀▼鍗犳瘮**锛氳绠椾换鍔¢噷绋嬪崰鎬婚噷绋嬬殑姣斾緥
+
+## 鏍稿績绠楁硶
+
+### 1. 璺濈璁$畻
+浣跨敤 **Haversine鍏紡** 璁$畻鐩搁偦GPS鐐逛箣闂寸殑瀹為檯璺濈锛堣�冭檻鍦扮悆鏇茬巼锛�
+
+### 2. 閲岀▼鍒嗘憡绠楁硶
+鏍规嵁GPS璁板綍鐨勬椂闂村尯闂翠笌浠诲姟鏃堕棿鍖洪棿鐨�**閲嶅彔姣斾緥**锛屽皢姣忔璺濈鍒嗘憡鍒颁换鍔¢噷绋嬪拰闈炰换鍔¢噷绋嬶細
+
+```
+鏃堕棿閲嶅彔姣斾緥 = 閲嶅彔鏃堕暱 / 鎬绘椂闀�
+浠诲姟閲岀▼ = 娈佃窛绂� 脳 鏃堕棿閲嶅彔姣斾緥
+闈炰换鍔¢噷绋� = 娈佃窛绂� 脳 (1 - 鏃堕棿閲嶅彔姣斾緥)
+```
+
+## 閮ㄧ讲姝ラ
+
+### 1. 鎵ц鏁版嵁搴撹剼鏈�
+
+鎸夐『搴忔墽琛屼互涓婼QL鏂囦欢锛�
+
+```bash
+# 1. 鍒涘缓缁熻琛�
+sql/vehicle_mileage_stats.sql
+
+# 2. 娣诲姞瀹氭椂浠诲姟
+sql/vehicle_mileage_stats_job.sql
+
+# 3. 娣诲姞鑿滃崟鏉冮檺
+sql/vehicle_mileage_stats_menu.sql
+```
+
+### 2. 浠g爜宸茶嚜鍔ㄩ儴缃�
+
+浠ヤ笅浠g爜鏂囦欢宸插垱寤猴細
+
+**瀹炰綋绫伙細**
+- `VehicleMileageStats.java` - 閲岀▼缁熻瀹炰綋
+- `TaskTimeInterval.java` - 浠诲姟鏃堕棿鍖洪棿
+
+**鏁版嵁璁块棶灞傦細**
+- `VehicleMileageStatsMapper.java` - 閲岀▼缁熻Mapper鎺ュ彛
+- `VehicleMileageStatsMapper.xml` - MyBatis鏄犲皠鏂囦欢
+- `VehicleGpsMapper.java` - 鎵╁睍GPS鏌ヨ鏂规硶
+
+**涓氬姟灞傦細**
+- `IVehicleMileageStatsService.java` - Service鎺ュ彛
+- `VehicleMileageStatsServiceImpl.java` - Service瀹炵幇锛堟牳蹇冪畻娉曪級
+
+**鎺у埗灞傦細**
+- `VehicleMileageStatsController.java` - REST API鎺ュ彛
+
+**瀹氭椂浠诲姟锛�**
+- `VehicleMileageStatsTask.java` - 瀹氭椂缁熻浠诲姟
+
+### 3. 鍚姩瀹氭椂浠诲姟
+
+绯荤粺浼氳嚜鍔ㄦ坊鍔犲畾鏃朵换鍔★紝榛樿閰嶇疆锛�
+- **鎵ц鏃堕棿**锛氭瘡澶╁噷鏅� 1:30
+- **缁熻鑼冨洿**锛氬墠涓�澶╃殑鎵�鏈夎溅杈咷PS鏁版嵁
+- **Cron琛ㄨ揪寮�**锛歚0 30 1 * * ?`
+
+鍦ㄧ郴缁熺鐞� -> 瀹氭椂浠诲姟涓彲浠ユ煡鐪嬪拰绠$悊璇ヤ换鍔°��
+
+## 浣跨敤鏂瑰紡
+
+### 1. 鑷姩缁熻锛堟帹鑽愶級
+
+瀹氭椂浠诲姟姣忓ぉ鍑屾櫒鑷姩鎵ц锛屾棤闇�浜哄伐骞查銆�
+
+### 2. 鎵嬪姩瑙﹀彂缁熻
+
+#### 2.1 鍗曡溅杈嗙粺璁�
+
+璋冪敤鎺ュ彛锛�
+```
+POST /system/mileageStats/calculate
+鍙傛暟锛�
+ - vehicleId: 杞﹁締ID
+ - statDate: 缁熻鏃ユ湡锛堟牸寮忥細yyyy-MM-dd锛�
+```
+
+#### 2.2 鎵归噺缁熻
+
+璋冪敤鎺ュ彛锛�
+```
+POST /system/mileageStats/batchCalculate
+鍙傛暟锛�
+ - statDate: 缁熻鏃ユ湡锛堟牸寮忥細yyyy-MM-dd锛�
+```
+
+#### 2.3 閫氳繃瀹氭椂浠诲姟琛ョ畻鍘嗗彶鏁版嵁
+
+鍦ㄥ畾鏃朵换鍔$鐞嗕腑锛屾墽琛岋細
+```
+vehicleMileageStatsTask.calculateMileageByDate('2025-11-09')
+```
+
+### 3. 鏌ヨ缁熻缁撴灉
+
+```
+GET /system/mileageStats/list
+鍙傛暟锛堝彲閫夛級锛�
+ - vehicleId: 杞﹁締ID
+ - vehicleNo: 杞︾墝鍙�
+ - statDate: 缁熻鏃ユ湡
+ - beginStatDate: 寮�濮嬫棩鏈�
+ - endStatDate: 缁撴潫鏃ユ湡
+```
+
+### 4. 瀵煎嚭缁熻鏁版嵁
+
+```
+POST /system/mileageStats/export
+鍙傛暟锛氬悓鏌ヨ鎺ュ彛
+```
+
+## 鏁版嵁琛ㄧ粨鏋�
+
+### tb_vehicle_mileage_stats锛堥噷绋嬬粺璁¤〃锛�
+
+| 瀛楁 | 绫诲瀷 | 璇存槑 |
+|------|------|------|
+| stats_id | bigint | 缁熻ID锛堜富閿級 |
+| vehicle_id | bigint | 杞﹁締ID |
+| vehicle_no | varchar(20) | 杞︾墝鍙� |
+| stat_date | date | 缁熻鏃ユ湡 |
+| total_mileage | decimal(10,2) | 鎬婚噷绋嬶紙鍏噷锛� |
+| task_mileage | decimal(10,2) | 浠诲姟鏃舵閲岀▼锛堝叕閲岋級 |
+| non_task_mileage | decimal(10,2) | 闈炰换鍔℃椂娈甸噷绋嬶紙鍏噷锛� |
+| task_ratio | decimal(5,4) | 浠诲姟閲岀▼鍗犳瘮锛�0-1锛� |
+| gps_point_count | int | GPS鐐规暟閲� |
+| task_count | int | 浠诲姟鏁伴噺 |
+
+### tb_vehicle_mileage_detail锛堥噷绋嬫槑缁嗚〃锛�
+
+鐢ㄤ簬璋冭瘯鍜岃拷婧紝璁板綍姣忔GPS杞ㄨ抗鐨勯噷绋嬪垎鎽婃槑缁嗐��
+
+## 娉ㄦ剰浜嬮」
+
+### 1. GPS鏁版嵁璐ㄩ噺
+
+- GPS閲囬泦闂撮殧寤鸿鍦� 30-60绉�
+- 杩囩煭锛氳绠楅噺澶э紝鎬ц兘褰卞搷
+- 杩囬暱锛氶噷绋嬬簿搴﹂檷浣�
+
+### 2. 浠诲姟鏃堕棿瀹氫箟
+
+浠诲姟鏃舵 = 浠庝换鍔″垱寤烘椂闂达紙`create_time`锛夊埌浠诲姟瀹屾垚鏃堕棿锛坄actual_end_time`锛�
+
+纭繚浠诲姟琛ㄤ腑杩欎袱涓瓧娈靛噯纭褰曘��
+
+### 3. 鎬ц兘浼樺寲
+
+- 缁熻鏁版嵁鎸夋棩鏈熸眹鎬伙紝閬垮厤瀹炴椂璁$畻
+- 寤鸿淇濈暀3-6涓湀鐨勭粺璁℃暟鎹紝瀹氭湡褰掓。鍘嗗彶鏁版嵁
+- GPS鍘熷鏁版嵁寤鸿淇濈暀7-30澶╋紙鐢辨竻鐞嗕换鍔℃帶鍒讹級
+
+### 4. 鏁版嵁琛ョ畻
+
+濡傞渶琛ョ畻鍘嗗彶鏁版嵁锛屽彲浠ラ�氳繃瀹氭椂浠诲姟鎴朅PI鎺ュ彛鎵归噺鎵ц锛�
+
+```java
+// 琛ョ畻鏈�杩�7澶╃殑鏁版嵁绀轰緥
+for (int i = 1; i <= 7; i++) {
+ String date = "2025-11-" + String.format("%02d", i);
+ vehicleMileageStatsTask.calculateMileageByDate(date);
+}
+```
+
+## 鎵╁睍璇存槑
+
+### 澶╁湴鍥炬帴鍙i泦鎴�
+
+铏界劧鏍稿績绠楁硶浣跨敤Haversine鍏紡璁$畻璺濈锛屼絾绯荤粺宸查泦鎴愬ぉ鍦板浘鎺ュ彛锛屽彲鐢ㄤ簬锛�
+
+1. **鍦板潃瑙f瀽**锛氬皢GPS鍧愭爣杞崲涓哄湴鍧�淇℃伅
+2. **璺緞瑙勫垝**锛氳绠楀疄闄呴亾璺窛绂伙紙姣旂洿绾胯窛绂绘洿鍑嗙‘锛�
+3. **POI鏌ヨ**锛氭煡璇㈡部閫斿叴瓒g偣
+
+濡傞渶浣跨敤澶╁湴鍥続PI杩涜璺緞璺濈璁$畻锛屽彲鍙傝�� `VehicleGpsController` 涓殑澶╁湴鍥炬帴鍙c��
+
+## 鎶�鏈敮鎸�
+
+濡傛湁闂锛岃妫�鏌ワ細
+1. 鏁版嵁搴撹〃鏄惁姝g‘鍒涘缓
+2. 瀹氭椂浠诲姟鏄惁姝e父鍚姩
+3. GPS鏁版嵁鏄惁姝e父閲囬泦
+4. 浠诲姟琛ㄧ殑鏃堕棿瀛楁鏄惁鍑嗙‘
+
+鏃ュ織浣嶇疆锛�
+- Service灞傛棩蹇楋細鎼滅储 `VehicleMileageStatsServiceImpl`
+- 瀹氭椂浠诲姟鏃ュ織锛氭悳绱� `VehicleMileageStatsTask`
--
Gitblit v1.9.1