From 7d67ebe9cdef145439b5d6f39cf03340fddb67bb Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期六, 03 五月 2025 18:54:02 +0800
Subject: [PATCH] 优化了一些已知问题

---
 .gitignore                      |    1 
 Document/事务(Transaction)架构简介.md |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 115 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index aa2e4af..a731d3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
 *.user
 *.sln.docstates
 .vs/
+.vscode/
 
 # Build results
 [Dd]ebug/
diff --git "a/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md" "b/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md"
new file mode 100644
index 0000000..b059ad6
--- /dev/null
+++ "b/Document/\344\272\213\345\212\241\050Transaction\051\346\236\266\346\236\204\347\256\200\344\273\213.md"
@@ -0,0 +1,114 @@
+# Transaction缁撴瀯鍒嗘瀽
+
+## 1. 浜嬪姟鍩虹鏋舵瀯
+
+椤圭洰閲囩敤浜嗗垎灞傜殑浜嬪姟澶勭悊鏋舵瀯锛屼富瑕佸寘鎷互涓嬪嚑涓眰娆★細
+
+### 1.1 鍩虹鎺ュ彛鍜岀被
+- **ITransaction鎺ュ彛**锛氬畾涔変簡鎵�鏈変簨鍔$殑鍩烘湰琛屼负鍜屽睘鎬э紝鍖呮嫭浜嬪姟ID銆侀攣鏈哄埗銆佸巻鍙茶褰曠鐞嗙瓑銆�
+- **TransactionBase鎶借薄绫�**锛氬疄鐜颁簡ITransaction鎺ュ彛锛屾彁渚涗簡浜嬪姟鐨勫熀纭�鍔熻兘锛屽鍘嗗彶璁板綍绠$悊銆佷簨鍔″叧闂拰璧勬簮閲婃斁绛夈��
+
+### 1.2 棰嗗煙鐗瑰畾浜嬪姟鎺ュ彛鍜屽熀绫�
+- **IMESTransaction/IWMSTransaction鎺ュ彛**锛氱户鎵胯嚜ITransaction锛屼负鐗瑰畾棰嗗煙锛圡ES/WMS锛夊畾涔変簨鍔¤涓恒��
+- **MESTransactionBase/WMSTransactionBase绫�**锛氱户鎵胯嚜TransactionBase锛屽疄鐜颁簡棰嗗煙鐗瑰畾鐨勪簨鍔″熀纭�鍔熻兘銆�
+
+### 1.3 鍏蜂綋涓氬姟浜嬪姟绫�
+- 鍚勭鍏蜂綋鐨勪笟鍔′簨鍔$被锛堝InReceipt銆丱utSale銆丩oadingMaterial绛夛級锛氱户鎵胯嚜棰嗗煙鐗瑰畾鐨勪簨鍔″熀绫伙紝瀹炵幇鍏蜂綋涓氬姟閫昏緫銆�
+
+## 2. 浜嬪姟绠$悊鏈哄埗
+
+### 2.1 浜嬪姟鍒涘缓鍜岀鐞�
+- **BizContext**锛氱淮鎶ゅ叏灞�鐨勪簨鍔″瓧鍏革紙TransactionDic锛夛紝绠$悊鎵�鏈夋椿鍔ㄧ殑浜嬪姟瀹炰緥銆�
+- **WMSContext/MESContext**锛氱鐞嗙壒瀹氶鍩熺殑浜嬪姟锛屾彁渚涗簨鍔″垱寤哄拰鏌ヨ鍔熻兘銆�
+
+### 2.2 浜嬪姟鐢熷懡鍛ㄦ湡
+1. **鍒涘缓**锛氶�氳繃Controller璋冪敤鐩稿簲鐨処nit鏂规硶鍒濆鍖栦簨鍔★紝骞堕�氳繃Context.NewTransaction娉ㄥ唽鍒颁簨鍔″瓧鍏镐腑銆�
+2. **浣跨敤**锛氶�氳繃浜嬪姟ID浠庝簨鍔″瓧鍏镐腑鑾峰彇浜嬪姟瀹炰緥锛屾墽琛屼笟鍔℃搷浣溿��
+3. **鍏抽棴**锛氳皟鐢–lose鏂规硶鍏抽棴浜嬪姟锛屽彲閫夋嫨鏄惁淇濆瓨鍘嗗彶璁板綍銆�
+4. **閲婃斁**锛氶�氳繃Dispose鏂规硶閲婃斁璧勬簮锛屽苟浠庝簨鍔″瓧鍏镐腑绉婚櫎銆�
+
+## 3. 浜嬪姟鍚屾鍜屽苟鍙戞帶鍒�
+
+### 3.1 浜嬪姟閿�
+- 姣忎釜浜嬪姟瀹炰緥閮芥湁涓�涓猅ransLock瀵硅薄锛岀敤浜庡悓姝ヨ闂��
+- 鍦–ontroller涓紝闈炲紓姝ユ搷浣滈�氳繃lock(trans.TransLock)纭繚浜嬪姟鎿嶄綔鐨勫師瀛愭�с��
+
+### 3.2 瀹㈡埛绔敮涓�鎬ф帶鍒�
+- 鍒涘缓浜嬪姟鏃跺彲浠ユ寚瀹欼sUniqueInSameClient鍙傛暟锛屾帶鍒跺悓涓�瀹㈡埛绔槸鍚﹀彧鑳芥湁涓�涓悓绫诲瀷鐨勪簨鍔°��
+- 濡傛灉璁剧疆涓簍rue锛屼細鍏抽棴鍚屼竴瀹㈡埛绔凡鏈夌殑鍚岀被鍨嬩簨鍔°��
+
+## 4. 浜嬪姟鍘嗗彶璁板綍
+
+### 4.1 鍘嗗彶璁板綍绠$悊
+- 浜嬪姟浼氳褰曟墍鏈堿PI璋冪敤鐨勫巻鍙诧紝鍖呮嫭璇锋眰鍜屽搷搴斾俊鎭��
+- 閫氳繃AddHistory鏂规硶娣诲姞鍘嗗彶璁板綍锛孲aveHistory鏂规硶灏嗗巻鍙蹭繚瀛樺埌鏂囦欢銆�
+
+### 4.2 鏃ュ織璁板綍
+- 浜嬪姟鎿嶄綔浼氳褰曡缁嗙殑鏃ュ織锛屽寘鎷垱寤恒�佸叧闂拰寮傚父鎯呭喌銆�
+- 鏃ュ織鏂囦欢淇濆瓨鍦ㄥ簲鐢ㄧ▼搴忕洰褰曠殑Logs/Transaction鏂囦欢澶逛腑銆�
+
+## 5. 浜嬪姟瓒呮椂澶勭悊
+
+- 绯荤粺閫氳繃閰嶇疆鏂囦欢璁剧疆浜嬪姟瓒呮椂鏃堕棿锛圱ransaction:TimeoutHours锛夈��
+- 浜嬪姟璁板綍鏈�鍚庢搷浣滄椂闂达紙LastActionTime锛夛紝鍙敤浜庡垽鏂簨鍔℃槸鍚﹁秴鏃躲��
+
+## 6. 浜嬪姟浣跨敤妯″紡
+
+### 6.1 Controller涓殑浜嬪姟浣跨敤妯″紡
+1. **鑾峰彇/鍒涘缓浜嬪姟**锛�
+   ```csharp
+   if (iBiz.WMS.Context.GetTransDic().ContainsKey(action.ID))
+   {
+       trans = iBiz.WMS.Context.GetTransDic()[action.ID] as IInReceipt;
+   }
+   else
+   {
+       trans = AutoFacContainer.Instance.Resolve<IInReceipt>().Init(action.ID, action.Data?.USER_CODE, Request.Host.Value, action.Data?.ORG_CODE);
+       iBiz.WMS.Context.NewTransaction(HttpContext, trans);
+   }
+   ```
+
+2. **鎵ц浜嬪姟鎿嶄綔**锛�
+   ```csharp
+   if (action.IsAsync)
+   {
+       response = action.GetResponse(await trans.ScanItem(action.Data));
+   }
+   else
+   {
+       lock (trans.TransLock) { response = action.GetResponse(trans.ScanItem(action.Data).Result); }
+   }
+   ```
+
+3. **璁板綍鍘嗗彶骞惰繑鍥炵粨鏋�**锛�
+   ```csharp
+   trans?.AddHistory(Request, action);
+   return Ok(response);
+   ```
+
+### 6.2 浜嬪姟鍒濆鍖栨ā寮�
+```csharp
+public IInReceipt Init(string id, string userCode, string apiHost, string orgCode)
+{
+    TransID = id;
+    UserCode = userCode;
+    ApiHost = apiHost;
+    OrgCode = orgCode;
+    Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
+    return this;
+}
+```
+
+## 7. 浜嬪姟鐨勪紭鍔垮拰鐗圭偣
+
+1. **鐘舵�佺淮鎶�**锛氫簨鍔″彲浠ュ湪澶氫釜璇锋眰涔嬮棿缁存姢鐘舵�侊紝閫傚悎闇�瑕佸姝ラ瀹屾垚鐨勪笟鍔℃祦绋嬨��
+2. **骞跺彂鎺у埗**锛氶�氳繃浜嬪姟閿佹満鍒剁‘淇濆悓涓�浜嬪姟鐨勬搷浣滀笉浼氬苟鍙戞墽琛岋紝淇濊瘉鏁版嵁涓�鑷存�с��
+3. **鍘嗗彶璁板綍**锛氬畬鏁磋褰曚簨鍔$殑鎵�鏈夋搷浣滐紝渚夸簬瀹¤鍜岄棶棰樻帓鏌ャ��
+4. **璧勬簮绠$悊**锛氫簨鍔″畬鎴愬悗鑷姩閲婃斁璧勬簮锛岄伩鍏嶈祫婧愭硠婕忋��
+5. **棰嗗煙鍒嗙**锛氶�氳繃涓嶅悓鐨勪簨鍔″熀绫伙紙MESTransactionBase/WMSTransactionBase锛夊疄鐜伴鍩熼�昏緫鍒嗙銆�
+
+## 8. 鎬荤粨
+
+椤圭洰鐨凾ransaction缁撴瀯閲囩敤浜嗛潰鍚戝璞$殑璁捐妯″紡锛岄�氳繃鎺ュ彛鍜屾娊璞$被鏋勫缓浜嗙伒娲荤殑浜嬪姟澶勭悊妗嗘灦銆傝繖绉嶈璁′娇寰椾簨鍔″鐞嗛�昏緫涓庝笟鍔¢�昏緫鍒嗙锛屼究浜庣淮鎶ゅ拰鎵╁睍銆傚悓鏃讹紝閫氳繃浜嬪姟瀛楀吀鍜岄攣鏈哄埗锛岀‘淇濅簡浜嬪姟鎿嶄綔鐨勫畨鍏ㄦ�у拰涓�鑷存�с��
+
+杩欑浜嬪姟妯″紡鐗瑰埆閫傚悎闇�瑕佽法澶氫釜璇锋眰缁存姢鐘舵�佺殑澶嶆潅涓氬姟娴佺▼锛屽浠撳簱绠$悊銆佺敓浜х鐞嗙瓑棰嗗煙銆傞�氳繃浜嬪姟鏈哄埗锛屽彲浠ユ湁鏁堢鐞嗚繖浜涢暱鏃堕棿杩愯鐨勪笟鍔℃祦绋嬶紝纭繚鏁版嵁鐨勪竴鑷存�у拰瀹屾暣鎬с��

--
Gitblit v1.9.3