From ff636d822e327602f0c9a609d5f6d01cc22e5e86 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 05 八月 2024 15:02:22 +0800
Subject: [PATCH] 增加可以临时存储数据库提交操作,待需要的时候再提交

---
 Tiger.Business.MES/Transaction/CollectNode.cs  |   16 +------
 Tiger.Business.MES/Transaction/PackingNode.cs  |   18 ++-------
 Tiger.Business.MES/Transaction/Position.cs     |   43 +++++++++++++++++++++
 Tiger.Business.MES/WorkAction/PackingAction.cs |    6 ---
 Tiger.IBusiness/MES/Transaction/IPosition.cs   |    4 ++
 Tiger.Business.MES/Transaction/TestNode.cs     |   16 +------
 6 files changed, 57 insertions(+), 46 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs
index 3088aa4..09d71f1 100644
--- a/Tiger.Business.MES/Transaction/CollectNode.cs
+++ b/Tiger.Business.MES/Transaction/CollectNode.cs
@@ -216,7 +216,7 @@
                     //鏉$爜杩囩珯
                     wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG;
                     wipSN.AUTH_PROD = CurLine.LINE_CODE;
-                    wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
+                    wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
                     wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE;
                     wipSN.NODE_ID = curNode.ID;
                     wipSN.NODE_NAME = curNode.NODE_NAME;
@@ -373,18 +373,8 @@
         public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action)
         {
             //淇濆瓨鏁版嵁搴�
-            var dbTran = GetCommitDB().UseTran(() =>
-            {
-                //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
-                foreach (var step in Steps.OrderBy(q => q.Sequence))
-                {
-                    step.DBSubmitAction.Invoke();
-                }
-            });
-            if (!dbTran.IsSuccess)
-            {
-                throw dbTran.ErrorException;
-            }
+            SaveStepsCommitActionToDB();
+
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
             action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME,CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs
index 6a65b6c..b6b5ba4 100644
--- a/Tiger.Business.MES/Transaction/PackingNode.cs
+++ b/Tiger.Business.MES/Transaction/PackingNode.cs
@@ -240,8 +240,8 @@
 	                //鏉$爜杩囩珯
                     wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG;
                     wipSN.AUTH_PROD = CurLine.LINE_CODE;
-	                wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
-	                wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE;
+                    wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
+                    wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE;
 	                wipSN.NODE_ID = curNode.ID;
 	                wipSN.NODE_NAME = curNode.NODE_NAME;
 	                wipSN.FTY_CODE = CurFactory.FTY_CODE;
@@ -396,18 +396,8 @@
         public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action)
         {
             //淇濆瓨鏁版嵁搴�
-            var dbTran = GetCommitDB().UseTran(() =>
-            {
-                //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
-                foreach (var step in Steps.OrderBy(q => q.Sequence))
-                {
-                    step.DBSubmitAction.Invoke();
-                }
-            });
-            if (!dbTran.IsSuccess)
-            {
-                throw dbTran.ErrorException;
-            }
+            SaveStepsCommitActionToDB();
+
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
             action.LocaleMsg = new("MES.Transaction.PackingNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index 95596c4..ccd93fd 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -65,6 +65,12 @@
         public bool IsFinishAllSteps => !Steps.Any() || !Steps.Any(q => !q.IsFinished);
         //public int CurStep => Steps.Where(q => !q.IsFinished).OrderBy(q => q.Sequence).FirstOrDefault()?.Sequence ?? 0;
         private DbClient CommitDB;
+        /// <summary>
+        /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦
+        /// </summary>
+        public bool NeedTemporaryStoreDBCommitAction { get; set; } = false;
+        protected List<Action> DBCommitList { get; set; } = new();
+
         #endregion Propertys & Variables
 
         #region Functions
@@ -321,6 +327,43 @@
         }
 
         /// <summary>
+        /// 淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版暟鎹簱
+        /// </summary>
+        protected void SaveStepsCommitActionToDB()
+        {
+            //淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版彁浜ゆ搷浣滃垪琛�
+            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;
+                }
+            }
+        }
+
+        /// <summary>
         /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊�
         /// </summary>
         /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param>
diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs
index 6d34732..fee2960 100644
--- a/Tiger.Business.MES/Transaction/TestNode.cs
+++ b/Tiger.Business.MES/Transaction/TestNode.cs
@@ -217,7 +217,7 @@
                     //鏉$爜杩囩珯
                     wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG;
                     wipSN.AUTH_PROD = CurLine.LINE_CODE;
-                    wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
+                    wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
                     wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE;
                     wipSN.NODE_ID = curNode.ID;
                     wipSN.NODE_NAME = curNode.NODE_NAME;
@@ -373,18 +373,8 @@
         public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action)
         {
             //淇濆瓨鏁版嵁搴�
-            var dbTran = GetCommitDB().UseTran(() =>
-            {
-                //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
-                foreach (var step in Steps.OrderBy(q => q.Sequence))
-                {
-                    step.DBSubmitAction.Invoke();
-                }
-            });
-            if (!dbTran.IsSuccess)
-            {
-                throw dbTran.ErrorException;
-            }
+            SaveStepsCommitActionToDB();
+
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
             action.LocaleMsg = new("MES.Transaction.TestNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 094982a..51a1f90 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -56,12 +56,6 @@
             	PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First();
             }
             //鏍规嵁琛屼负璁剧疆鑾峰彇澶氬眰鍖呰鐨勬爣绛炬墦鍗版ā鏉垮瓧鍏�
-            //for (int i = 1; i < 10; i++)
-            //{
-            //    var code = Setting.GetType().GetProperty($"OPTION_{i}")?.GetValue(Setting)?.ToString() ?? "";
-            //    var label = code.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code).IncludesAllFirstLayer().First();
-            //    LabelDic.Add(i, label);
-            //}
             var codes = (Setting.OPTION_1?? "").JsonToObject<List<WipPkgItem>>();
             foreach (var code in codes)
             {
diff --git a/Tiger.IBusiness/MES/Transaction/IPosition.cs b/Tiger.IBusiness/MES/Transaction/IPosition.cs
index 5ceb050..1d2e6bc 100644
--- a/Tiger.IBusiness/MES/Transaction/IPosition.cs
+++ b/Tiger.IBusiness/MES/Transaction/IPosition.cs
@@ -21,6 +21,10 @@
         public MES_WIP_DATA CurWipSN { get; set; }
         public MES_WIP_HIS CurWipSNHis { get; set; }
         public Dictionary<string, object> Context { get; set; }
+        /// <summary>
+        /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦
+        /// </summary>
+        public bool NeedTemporaryStoreDBCommitAction { get; set; }
         #endregion Propertys & Variables
 
         #region Functions

--
Gitblit v1.9.3