From 8ccb8c4d10bff43b884005426110b5ec234a1cbb Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期三, 07 八月 2024 15:44:09 +0800
Subject: [PATCH] 更新MES工序事务跟工序行为中保存数据操作的写法

---
 Tiger.Business.MES/Transaction/Position.cs |   97 +++++++++++++++++++++++++++---------------------
 1 files changed, 55 insertions(+), 42 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index 33bcf88..6e26cf6 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -17,7 +17,7 @@
     /// <summary>
     /// MES宀椾綅浜嬪姟
     /// </summary>
-    public class Position : MESTransactionBase, IPosition
+    public class Position : MESTransactionBase, IPosition, ICloneable
     {
         public IPosition Init(string id, string apiHost, string userCode, string postCode)
         {
@@ -330,56 +330,69 @@
             return result;
         }
 
+        public object Clone()
+        {
+            var newObject = this.MemberwiseClone() as Position;
+            newObject.Steps = Steps.Clone();
+            newObject.CurWipSNs = CurWipSNs.Clone();
+
+            return newObject;
+        }
+
         /// <summary>
         /// 淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版暟鎹簱
         /// </summary>
         protected void SaveStepsCommitActionToDB()
         {
-            ////淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版彁浜ゆ搷浣滃垪琛�
-            //foreach (var step in Steps.OrderBy(q => q.Sequence))
-            //{
-            //    DBCommitList.Add(step.DBSubmitAction);
-            //}
-            ////濡傛灉涓嶉渶瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽垯鎶婃彁浜ゆ搷浣滃垪琛ㄦ彁浜ゅ埌鏁版嵁搴�
-            //if (!NeedTemporaryStoreDBCommitAction)
-            //{
-            //    //鎭㈠涓存椂瀛樺偍鏍囪涓篺alse
-            //    NeedTemporaryStoreDBCommitAction = false;
+            //淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版彁浜ゆ搷浣滃垪琛�
+            foreach (var step in Steps.OrderBy(q => q.Sequence))
+            {
+                DBCommitList.Add(step.DBSubmitAction);
+            }
+            //濡傛灉涓嶉渶瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽垯鎶婃彁浜ゆ搷浣滃垪琛ㄦ彁浜ゅ埌鏁版嵁搴�
+            if (!NeedTemporaryStoreDBCommitAction)
+            {
+                //鎭㈠涓存椂瀛樺偍鏍囪涓篺alse
+                NeedTemporaryStoreDBCommitAction = false;
 
-            //    var dbTran = GetCommitDB().UseTran(() =>
-            //    {
-            //        //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
-            //        foreach (var action in DBCommitList)
-            //        {
-            //            action.Invoke();
-            //        }
-            //    });
-            //    if (dbTran.IsSuccess)
-            //    {
-            //        //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛�
-            //        DBCommitList.Clear();
-            //    }
-            //    else
-            //    {
-            //        //鎶涘嚭寮傚父
-            //        throw dbTran.ErrorException;
-            //    }
-            //}
-            if (NeedTemporaryStoreDBCommitAction)
-            {
-                NodeCommitList.Add(this.MemberwiseClone() as Position);
-            }
-            else
-            {
-                //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛�
-                foreach (var item in NodeCommitList)
+                var dbTran = GetCommitDB().UseTran(() =>
                 {
-                    item?.DoSaveToDB();
-                    item?.Dispose();
+                    //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
+                    foreach (var action in DBCommitList)
+                    {
+                        action.Invoke();
+                    }
+                });
+                if (dbTran.IsSuccess)
+                {
+                    //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛�
+                    DBCommitList.Clear();
                 }
-                DoSaveToDB();
-                NodeCommitList.Clear();
+                else
+                {
+                    //鎶涘嚭寮傚父
+                    throw dbTran.ErrorException;
+                }
             }
+
+
+            //if (NeedTemporaryStoreDBCommitAction)
+            //{
+
+
+            //    NodeCommitList.Add(this.Clone() as Position);
+            //}
+            //else
+            //{
+            //    //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛�
+            //    foreach (var item in NodeCommitList)
+            //    {
+            //        item?.DoSaveToDB();
+            //        item?.Dispose();
+            //    }
+            //    DoSaveToDB();
+            //    NodeCommitList.Clear();
+            //}
         }
 
         protected void DoSaveToDB()

--
Gitblit v1.9.3