From 5d75fcaea0a3774052b7484a4ffe755258502363 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 20:49:11 +0800
Subject: [PATCH] fix:开始执行人员就绪按钮
---
prd/转运任务状态变更记录同步功能说明.md | 397 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 397 insertions(+), 0 deletions(-)
diff --git "a/prd/\350\275\254\350\277\220\344\273\273\345\212\241\347\212\266\346\200\201\345\217\230\346\233\264\350\256\260\345\275\225\345\220\214\346\255\245\345\212\237\350\203\275\350\257\264\346\230\216.md" "b/prd/\350\275\254\350\277\220\344\273\273\345\212\241\347\212\266\346\200\201\345\217\230\346\233\264\350\256\260\345\275\225\345\220\214\346\255\245\345\212\237\350\203\275\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..8205519
--- /dev/null
+++ "b/prd/\350\275\254\350\277\220\344\273\273\345\212\241\347\212\266\346\200\201\345\217\230\346\233\264\350\256\260\345\275\225\345\220\214\346\255\245\345\212\237\350\203\275\350\257\264\346\230\216.md"
@@ -0,0 +1,397 @@
+# 杞繍浠诲姟鐘舵�佸彉鏇磋褰曞悓姝ュ埌鏃х郴缁熷姛鑳借鏄�
+
+## 涓�銆佸姛鑳芥杩�
+
+鏈姛鑳藉疄鐜颁簡鍦ㄨ浆杩愪换鍔$姸鎬佸彂鐢熷彉鏇存椂锛岃嚜鍔ㄥ皢鐘舵�佸彉鏇磋褰曞悓姝ュ埌SQL Server鏃х郴缁熺殑 `DispatchOrd_Running` 琛ㄤ腑銆傝鍔熻兘閫氳繃Spring浜嬩欢鐩戝惉鏈哄埗瀹炵幇锛岀‘淇濈姸鎬佸彉鏇寸殑瀹屾暣璁板綍鍜岃拷韪��
+
+## 浜屻�佹牳蹇冪粍浠�
+
+### 1. 鏁版嵁搴撹〃缁撴瀯
+
+**鏃х郴缁熻〃锛欴ispatchOrd_Running**锛圫QL Server锛�
+
+```sql
+create table DispatchOrd_Running(
+ id int comment "鑷涓婚敭",
+ DispatchOrdIDDt bigint comment '璋冨害鍗旾D',
+ DispatchOrdState int comment '鐘舵��',
+ DispatchOrdStartDate datetime comment '鐘舵�佹椂闂�',
+ DispatchOrdStartOA int comment '鎿嶄綔鐘舵�佺殑OA鐢ㄦ埛ID',
+ OA_latitude float comment '鏇存柊鐘舵�佹椂鐨勭含搴�',
+ OA_longitude float comment '鏇存柊鐘舵�佹椂鐨勭粡搴�',
+ OA_address nvarchar(400) comment '鏇存柊鐘舵�佹椂鐨勫湴鍧�'
+)
+```
+
+### 2. Mapper鎺ュ彛
+
+**LegacyTransferSyncMapper.java**
+
+鏂板鏂规硶锛�
+```java
+/**
+ * 鎻掑叆璋冨害鍗曠姸鎬佸彉鏇磋褰曞埌 DispatchOrd_Running 琛�
+ *
+ * @param dispatchOrdID 璋冨害鍗旾D
+ * @param dispatchOrdState 鐘舵�佺爜
+ * @param dispatchOrdStartDate 鐘舵�佹椂闂�
+ * @param dispatchOrdStartOA 鎿嶄綔鐘舵�佺殑OA鐢ㄦ埛ID
+ * @param oaLatitude 鏇存柊鐘舵�佹椂鐨勭含搴�
+ * @param oaLongitude 鏇存柊鐘舵�佹椂鐨勭粡搴�
+ * @param oaAddress 鏇存柊鐘舵�佹椂鐨勫湴鍧�
+ * @return 褰卞搷琛屾暟
+ */
+int insertDispatchOrdRunning(
+ @Param("dispatchOrdID") Long dispatchOrdID,
+ @Param("dispatchOrdState") Integer dispatchOrdState,
+ @Param("dispatchOrdStartDate") java.util.Date dispatchOrdStartDate,
+ @Param("dispatchOrdStartOA") Long dispatchOrdStartOA,
+ @Param("oaLatitude") Double oaLatitude,
+ @Param("oaLongitude") Double oaLongitude,
+ @Param("oaAddress") String oaAddress
+);
+```
+
+### 3. Mapper XML閰嶇疆
+
+**LegacyTransferSyncMapper.xml**
+
+```xml
+<!-- 鎻掑叆璋冨害鍗曠姸鎬佸彉鏇磋褰曞埌 DispatchOrd_Running 琛� -->
+<insert id="insertDispatchOrdRunning">
+ INSERT INTO DispatchOrd_Running (
+ DispatchOrdIDDt,
+ DispatchOrdState,
+ DispatchOrdStartDate,
+ DispatchOrdStartOA,
+ OA_latitude,
+ OA_longitude,
+ OA_address
+ ) VALUES (
+ #{dispatchOrdID},
+ #{dispatchOrdState},
+ #{dispatchOrdStartDate},
+ #{dispatchOrdStartOA},
+ #{oaLatitude},
+ #{oaLongitude},
+ #{oaAddress}
+ )
+</insert>
+```
+
+### 4. 浜嬩欢鐩戝惉鍣�
+
+**DispatchOrdRunningListener.java**
+
+- **浣嶇疆**: `ruoyi-system/src/main/java/com/ruoyi/system/listener/`
+- **鍔熻兘**: 鐩戝惉浠诲姟鐘舵�佸彉鏇翠簨浠讹紙TaskStatusChangedEvent锛夛紝鑷姩鍚屾鐘舵�佸彉鏇磋褰曞埌鏃х郴缁�
+- **鐗规��**:
+ - 鉁� **寮傛澶勭悊**: 浣跨敤 `@Async` 娉ㄨВ锛屼笉闃诲涓讳笟鍔℃祦绋�
+ - 鉁� **浜嬩欢鐩戝惉**: 浣跨敤 `@EventListener` 娉ㄨВ鐩戝惉鐘舵�佸彉鏇翠簨浠�
+ - 鉁� **鏅鸿兘杩囨护**: 鍙鐞嗘�ユ晳杞繍浠诲姟涓斿凡鍚屾鍒版棫绯荤粺鐨勪换鍔�
+ - 鉁� **鐘舵�佽浆鎹�**: 鑷姩灏嗘柊绯荤粺鐘舵�佽浆鎹负鏃х郴缁熺姸鎬佺爜
+ - 鉁� **GPS璁板綍**: 璁板綍鐘舵�佸彉鏇存椂鐨凣PS浣嶇疆鍜屽湴鍧�淇℃伅
+ - 鉁� **瀹归敊澶勭悊**: 寮傚父涓嶅奖鍝嶄富涓氬姟娴佺▼
+
+## 涓夈�佸伐浣滄祦绋�
+
+```mermaid
+graph TB
+ A[杞繍浠诲姟鐘舵�佸彉鏇碷 --> B[SysTaskServiceImpl.changeTaskStatus]
+ B --> C[鍙戝竷TaskStatusChangedEvent浜嬩欢]
+ C --> D[DispatchOrdRunningListener鐩戝惉]
+ D --> E{鏄惁鍚敤鏃х郴缁熷悓姝�?}
+ E -->|鍚 F[璺宠繃鍚屾]
+ E -->|鏄瘄 G{鏄惁鎬ユ晳杞繍浠诲姟?}
+ G -->|鍚 F
+ G -->|鏄瘄 H{璋冨害鍗曟槸鍚﹀凡鍚屾?}
+ H -->|鍚 F
+ H -->|鏄瘄 I[杞崲鐘舵�佺爜]
+ I --> J{鐘舵�侀渶瑕佸悓姝�?}
+ J -->|鍚 F
+ J -->|鏄瘄 K[鎻掑叆DispatchOrd_Running琛╙
+ K --> L[璁板綍鏃ュ織]
+```
+
+## 鍥涖�佺姸鎬佹槧灏勫叧绯�
+
+鏂扮郴缁熺姸鎬� 鈫� 鏃х郴缁熺姸鎬佺爜鏄犲皠锛�
+
+| 鏂扮郴缁熺姸鎬� | TaskStatus鏋氫妇 | 鏃х郴缁熺姸鎬佺爜 | 鏃х郴缁熺姸鎬佹弿杩� |
+|-----------|---------------|-------------|---------------|
+| 鍑哄彂涓� | DEPARTING | 4 | 宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛� |
+| 浠诲姟涓� | IN_PROGRESS | 6 | 宸插嚭杞︼紙鏈嶅姟涓級 |
+| 杩旂▼涓� | RETURNING | 7 | 宸查�佽揪锛堝洖绋嬩腑锛� |
+| 宸插畬鎴� | COMPLETED | 8 | 宸茶繑鍥� |
+| 宸插彇娑� | CANCELLED | 10 | 鍙栨秷 |
+| 寰呭鐞� | PENDING | - | 涓嶅悓姝� |
+| 宸插埌杈� | ARRIVED | - | 涓嶅悓姝� |
+
+## 浜斻�佸悓姝ユ潯浠�
+
+婊¤冻浠ヤ笅**鎵�鏈夋潯浠�**鏃舵墠浼氬悓姝ョ姸鎬佸彉鏇磋褰曪細
+
+1. 鉁� 鏃х郴缁熷悓姝ュ姛鑳藉凡鍚敤锛坄legacy.system.enabled=true`锛�
+2. 鉁� 浠诲姟绫诲瀷涓烘�ユ晳杞繍锛坄EMERGENCY_TRANSFER`锛�
+3. 鉁� 浠诲姟宸插悓姝ュ埌鏃х郴缁燂紙`legacy_dispatch_ord_id` 涓嶄负绌猴級
+4. 鉁� 鏂扮姸鎬侀渶瑕佸悓姝ュ埌鏃х郴缁燂紙鍙傝鐘舵�佹槧灏勮〃锛�
+
+## 鍏�佷娇鐢ㄧず渚�
+
+### 1. 鑷姩瑙﹀彂锛堟帹鑽愶級
+
+褰撹浆杩愪换鍔$姸鎬佸彂鐢熷彉鏇存椂锛岀郴缁熶細鑷姩瑙﹀彂鍚屾锛�
+
+```java
+// 鍦⊿ysTaskServiceImpl涓彉鏇寸姸鎬�
+sysTaskService.changeTaskStatus(taskId, TaskStatus.DEPARTING, "鍙告満宸插嚭鍙�");
+
+// 绯荤粺鑷姩锛�
+// 1. 鍙戝竷TaskStatusChangedEvent浜嬩欢
+// 2. DispatchOrdRunningListener鐩戝惉骞跺鐞�
+// 3. 鎻掑叆璁板綍鍒癉ispatchOrd_Running琛�
+```
+
+### 2. 鏃ュ織绀轰緥
+
+**鎴愬姛鍚屾鐨勬棩蹇�**锛�
+```
+2025-12-05 14:30:15 INFO DispatchOrdRunningListener - 鏀跺埌浠诲姟鐘舵�佸彉鏇翠簨浠讹紝鍑嗗鍚屾鍒癉ispatchOrd_Running锛屼换鍔D锛�1001锛屾棫鐘舵�侊細PENDING锛屾柊鐘舵�侊細DEPARTING
+2025-12-05 14:30:15 INFO DispatchOrdRunningListener - 寮�濮嬪悓姝ョ姸鎬佸彉鏇磋褰曞埌DispatchOrd_Running锛孌ispatchOrdID: 12345, 鐘舵�佺爜: 4, 鐘舵�佹弿杩�: 宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛�
+2025-12-05 14:30:15 INFO DispatchOrdRunningListener - 鐘舵�佸彉鏇磋褰曞凡鍚屾鍒癉ispatchOrd_Running锛孌ispatchOrdID: 12345, 鐘舵�佺爜: 4 (宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛�), GPS: [113.264385, 23.12911], 鍦板潃: 骞垮窞甯傝秺绉�鍖篨X璺疿X鍙�
+```
+
+**璺宠繃鍚屾鐨勬棩蹇�**锛�
+```
+2025-12-05 14:30:15 DEBUG DispatchOrdRunningListener - 璋冨害鍗曟湭鍚屾鍒版棫绯荤粺锛岃烦杩嘍ispatchOrd_Running鍚屾锛屼换鍔D: 1001
+```
+
+## 涓冦�佹暟鎹褰曞唴瀹�
+
+姣忔鐘舵�佸彉鏇翠細璁板綍浠ヤ笅淇℃伅锛�
+
+| 瀛楁 | 璇存槑 | 鏁版嵁鏉ユ簮 |
+|-----|------|---------|
+| DispatchOrdIDDt | 璋冨害鍗旾D | sys_task_emergency.legacy_dispatch_ord_id |
+| DispatchOrdState | 鐘舵�佺爜 | 浠庢柊绯荤粺TaskStatus杞崲鑰屾潵 |
+| DispatchOrdStartDate | 鐘舵�佹椂闂� | 褰撳墠鏃堕棿 |
+| DispatchOrdStartOA | 鎿嶄綔浜篒D | TaskStatusChangedEvent.creatorId |
+| OA_latitude | 绾害 | TaskStatusChangedEvent.latitude |
+| OA_longitude | 缁忓害 | TaskStatusChangedEvent.longitude |
+| OA_address | 鍦板潃 | TaskStatusChangedEvent.address |
+
+## 鍏�佺洃鎺у拰璋冭瘯
+
+### 1. 鏌ョ湅鐘舵�佸彉鏇磋褰�
+
+```sql
+-- SQL Server涓煡璇㈡渶杩戠殑鐘舵�佸彉鏇磋褰�
+SELECT TOP 20
+ DispatchOrdIDDt,
+ DispatchOrdState,
+ DispatchOrdStartDate,
+ DispatchOrdStartOA,
+ OA_latitude,
+ OA_longitude,
+ OA_address
+FROM DispatchOrd_Running
+ORDER BY DispatchOrdStartDate DESC
+```
+
+### 2. 鏌ヨ鐗瑰畾璋冨害鍗曠殑鐘舵�佸彉鏇村巻鍙�
+
+```sql
+-- 鏌ヨ鏌愪釜璋冨害鍗曠殑鎵�鏈夌姸鎬佸彉鏇磋褰�
+SELECT
+ DispatchOrdState,
+ DispatchOrdStartDate,
+ OA_latitude,
+ OA_longitude,
+ OA_address
+FROM DispatchOrd_Running
+WHERE DispatchOrdIDDt = 12345
+ORDER BY DispatchOrdStartDate DESC
+```
+
+### 3. 缁熻浠婃棩鐘舵�佸彉鏇存鏁�
+
+```sql
+-- 缁熻浠婃棩鍚勭姸鎬佺殑鍙樻洿娆℃暟
+SELECT
+ DispatchOrdState,
+ CASE DispatchOrdState
+ WHEN 4 THEN '宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛�'
+ WHEN 6 THEN '宸插嚭杞︼紙鏈嶅姟涓級'
+ WHEN 7 THEN '宸查�佽揪锛堝洖绋嬩腑锛�'
+ WHEN 8 THEN '宸茶繑鍥�'
+ WHEN 10 THEN '鍙栨秷'
+ ELSE '鍏朵粬'
+ END AS StateName,
+ COUNT(*) AS ChangeCount
+FROM DispatchOrd_Running
+WHERE CONVERT(DATE, DispatchOrdStartDate) = CONVERT(DATE, GETDATE())
+GROUP BY DispatchOrdState
+ORDER BY DispatchOrdState
+```
+
+## 涔濄�佹灦鏋勪紭鍔�
+
+### 1. 瀹屽叏瑙h��
+- 涓氬姟閫昏緫涓庡悓姝ラ�昏緫鍒嗙
+- 鐘舵�佸彉鏇翠笉渚濊禆鏃х郴缁熷悓姝ョ粨鏋�
+- 鍙嫭绔嬫祴璇曞拰缁存姢
+
+### 2. 寮傛澶勭悊
+- 涓嶉樆濉炰富涓氬姟娴佺▼
+- 鎻愰珮绯荤粺鍝嶅簲閫熷害
+- 瀹归敊鑳藉姏寮�
+
+### 3. 鑷姩鍖�
+- 鏃犻渶鎵嬪姩瑙﹀彂
+- 瀹炴椂鍚屾鐘舵�佸彉鏇�
+- 鍑忓皯浜哄伐鎿嶄綔
+
+### 4. 鍙拷婧��
+- 瀹屾暣璁板綍姣忔鐘舵�佸彉鏇�
+- 鍖呭惈GPS浣嶇疆淇℃伅
+- 渚夸簬闂鎺掓煡鍜屽璁�
+
+## 鍗併�佹敞鎰忎簨椤�
+
+### 1. 鏁版嵁婧愰厤缃�
+
+纭繚 `LegacyTransferSyncMapper` 浣跨敤SQL Server鏁版嵁婧愶細
+```java
+@DataSource(DataSourceType.SQLSERVER)
+public interface LegacyTransferSyncMapper {
+ // ...
+}
+```
+
+### 2. 寮傛绾跨▼姹�
+
+寮傛澶勭悊渚濊禆绾跨▼姹犻厤缃紙AsyncConfig.java锛夛細
+```java
+@Configuration
+@EnableAsync
+public class AsyncConfig {
+ @Bean(name = "taskExecutor")
+ public Executor taskExecutor() {
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ executor.setCorePoolSize(5);
+ executor.setMaxPoolSize(10);
+ executor.setQueueCapacity(100);
+ // ...
+ }
+}
+```
+
+### 3. 寮傚父澶勭悊
+
+鐩戝惉鍣ㄤ腑鐨勫紓甯镐笉浼氬奖鍝嶄富涓氬姟锛�
+- 璁板綍璇︾粏鏃ュ織
+- 涓嶆姏鍑哄紓甯�
+- 涓嶅奖鍝嶇姸鎬佸彉鏇存搷浣�
+
+### 4. 鎬ц兘浼樺寲
+
+- 浣跨敤 `@Async` 寮傛澶勭悊
+- 鍙悓姝ュ繀瑕佺殑鐘舵�佸彉鏇�
+- 鏅鸿兘杩囨护涓嶉渶瑕佸悓姝ョ殑浠诲姟
+
+## 鍗佷竴銆佹祴璇曢獙璇�
+
+### 1. 娴嬭瘯姝ラ
+
+**姝ラ1锛氬垱寤哄苟鍚屾杞繍浠诲姟**
+```java
+// 鍒涘缓鎬ユ晳杞繍浠诲姟
+Long taskId = sysTaskService.insertSysTask(createVO);
+
+// 纭繚浠诲姟宸插悓姝ュ埌鏃х郴缁�
+legacySystemSyncService.syncDispatchOrderToLegacy(taskId);
+```
+
+**姝ラ2锛氬彉鏇翠换鍔$姸鎬�**
+```java
+// 鍙樻洿鐘舵�佷负"鍑哄彂涓�"
+sysTaskService.changeTaskStatus(taskId, TaskStatus.DEPARTING, "鍙告満宸插嚭鍙�");
+```
+
+**姝ラ3锛氶獙璇丼QL Server璁板綍**
+```sql
+-- 鏌ヨDispatchOrd_Running琛�
+SELECT * FROM DispatchOrd_Running
+WHERE DispatchOrdIDDt = (
+ SELECT legacy_dispatch_ord_id
+ FROM sys_task_emergency
+ WHERE task_id = ?
+)
+ORDER BY DispatchOrdStartDate DESC
+```
+
+### 2. 棰勬湡缁撴灉
+
+| 娴嬭瘯鍦烘櫙 | 棰勬湡缁撴灉 |
+|---------|---------|
+| 鎬ユ晳杞繍浠诲姟鐘舵�佸彉鏇� | 鎻掑叆璁板綍鍒癉ispatchOrd_Running |
+| 闈炴�ユ晳杞繍浠诲姟鐘舵�佸彉鏇� | 涓嶆彃鍏ヨ褰� |
+| 鏈悓姝ョ殑浠诲姟鐘舵�佸彉鏇� | 涓嶆彃鍏ヨ褰� |
+| 涓嶉渶瑕佸悓姝ョ殑鐘舵�侊紙PENDING锛� | 涓嶆彃鍏ヨ褰� |
+| 鏃х郴缁熷悓姝ュ凡绂佺敤 | 涓嶆彃鍏ヨ褰� |
+
+## 鍗佷簩銆佺浉鍏虫枃浠舵竻鍗�
+
+### 鏂板鏂囦欢
+- `DispatchOrdRunningListener.java` - 鐘舵�佸彉鏇寸洃鍚櫒
+
+### 淇敼鏂囦欢
+- `LegacyTransferSyncMapper.java` - 娣诲姞insertDispatchOrdRunning鏂规硶
+- `LegacyTransferSyncMapper.xml` - 娣诲姞鎻掑叆SQL
+
+### 渚濊禆鏂囦欢锛堟棤闇�淇敼锛�
+- `SysTaskServiceImpl.java` - 鍙戝竷鐘舵�佸彉鏇翠簨浠�
+- `TaskStatusChangedEvent.java` - 鐘舵�佸彉鏇翠簨浠�
+- `TaskStatusPushConverter.java` - 鐘舵�佽浆鎹㈠伐鍏�
+- `DispatchRunning.sql` - 鏁版嵁搴撹〃缁撴瀯瀹氫箟
+
+## 鍗佷笁銆佹晠闅滄帓鏌�
+
+### 闂1锛氱姸鎬佸彉鏇存病鏈夊悓姝ュ埌鏃х郴缁�
+
+**鎺掓煡姝ラ**锛�
+1. 妫�鏌ユ棫绯荤粺鍚屾鏄惁鍚敤锛歚legacy.system.enabled=true`
+2. 妫�鏌ヤ换鍔℃槸鍚︿负鎬ユ晳杞繍浠诲姟
+3. 妫�鏌ヨ皟搴﹀崟鏄惁宸插悓姝ワ細`legacy_dispatch_ord_id` 涓嶄负绌�
+4. 鏌ョ湅鏃ュ織纭鏄惁鏈夊紓甯�
+5. 妫�鏌ョ姸鎬佹槸鍚﹂渶瑕佸悓姝ワ紙鍙傝�冪姸鎬佹槧灏勮〃锛�
+
+### 闂2锛氭棩蹇椾腑鍑虹幇寮傚父
+
+**甯歌鍘熷洜**锛�
+- SQL Server杩炴帴澶辫触
+- 鏁版嵁婧愰厤缃敊璇�
+- 瀛楁绫诲瀷涓嶅尮閰�
+
+**瑙e喅鏂规硶**锛�
+- 妫�鏌ユ暟鎹簮閰嶇疆
+- 楠岃瘉SQL Server杩炴帴
+- 鏌ョ湅璇︾粏閿欒鏃ュ織
+
+### 闂3锛氭�ц兘闂
+
+**浼樺寲寤鸿**锛�
+- 璋冩暣绾跨▼姹犻厤缃�
+- 妫�鏌QL Server鎬ц兘
+- 浼樺寲鏁版嵁搴撶储寮�
+
+## 鍗佸洓銆佹�荤粨
+
+鏈姛鑳介�氳繃Spring浜嬩欢椹卞姩鏈哄埗锛屽疄鐜颁簡杞繍浠诲姟鐘舵�佸彉鏇磋褰曞埌鏃х郴缁熺殑鑷姩鍚屾锛屽叿鏈変互涓嬬壒鐐癸細
+
+- 鉁� **鑷姩鍖�**锛氱姸鎬佸彉鏇磋嚜鍔ㄥ悓姝ワ紝鏃犻渶鎵嬪姩鎿嶄綔
+- 鉁� **瑙h��**锛氫笟鍔¢�昏緫涓庡悓姝ラ�昏緫瀹屽叏鍒嗙
+- 鉁� **寮傛**锛氫笉褰卞搷涓讳笟鍔℃�ц兘
+- 鉁� **瀹屾暣**锛氳褰旼PS浣嶇疆绛夎缁嗕俊鎭�
+- 鉁� **鍙潬**锛氬閿欏鐞嗭紝寮傚父涓嶅奖鍝嶄富娴佺▼
+- 鉁� **鍙拷婧�**锛氬畬鏁寸殑鐘舵�佸彉鏇村巻鍙茶褰�
--
Gitblit v1.9.1