From 98304e3ffd220092103074a5da83bcad2b5c0c7d Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期二, 30 七月 2024 09:03:38 +0800
Subject: [PATCH] 优化打印变量值获取写法

---
 Tiger.Business.MES/Transaction/Position.cs   |   44 +++++++++++++++++++---
 Tiger.Business.MES/WorkAction/PrintLabel.cs  |   23 +----------
 Tiger.IBusiness/MES/Transaction/IPosition.cs |    7 +++
 3 files changed, 48 insertions(+), 26 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index 99879d9..eef212d 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -153,6 +153,8 @@
         {
             Steps.Clear();
             CurWipSN = null;
+            CurWipSNHis = null;
+            CurStep = null;
         }
 
         /// <summary>
@@ -234,7 +236,7 @@
                 }
             }
             //濡傛灉褰撳墠宸ユ娌℃湁鍙墽琛岀殑鍚庣画宸ユ锛屽垯鍦ㄥ墠缃伐姝ユ煡鎵捐繕鏈夋病鏈夊悗缁伐姝ユ病瀹屾垚鐨勫伐姝ワ紝鏈夊垯鎵ц
-            if (!result.Any())
+            if (!result.Any() && Steps.Any())
             {
                 //鏌ユ壘鏈夋病鏈夊墠缃伐姝ユ湭瀹屾垚锛岃嫢鏈夊垯鍏堝畬鎴愭湭瀹屾垚鐨勫墠缃伐姝�
                 var prepIDs = curStep.PrepNodeIDs.Where(id => CurBatch.Edges.Any(e => e.SRC_NODE == id && Steps.Any(q => !q.IsFinished && e.TGT_NODE == q.NodeID))).ToList();
@@ -283,9 +285,9 @@
                     result.Data.IsFinished = IsFinishAllSteps;
                     result.Data.CurWO = CurBatch.WO.ORDER_NO;
                     result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
-                    result.Data.CurNode = CurStep.NodeAct.ACT_NAME;
-                    result.Data.StepActCode = CurStep.NodeAct.ACT_CODE;
-                    result.Data.NextStepID = CurStep.ID;
+                    result.Data.CurNode = CurStep?.NodeAct.ACT_NAME;
+                    result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
+                    result.Data.NextStepID = CurStep?.ID;
                     
                     return result;
                 }
@@ -295,8 +297,8 @@
             result.Data.IsFinished = IsFinishAllSteps;
             result.Data.CurWO = CurBatch.WO.ORDER_NO;
             result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
-            result.Data.CurNode = CurStep.Node.NODE_NAME;
-            result.Data.StepActCode = CurStep.NodeAct.ACT_CODE;
+            result.Data.CurNode = CurStep?.Node.NODE_NAME;
+            result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
             result.Data.NextStepID = "";
 
             //娌℃湁鍙互鐩存帴寮�濮嬬殑鍚庣画宸ユ锛屾牴鎹悗缁彲鎵ц宸ユ鍒楄〃杩斿洖鐩稿簲鐨勬搷浣滄彁绀�
@@ -316,6 +318,36 @@
         /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊�
         /// </summary>
         /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param>
+        /// <param name="label">鏍囩妯℃澘</param>
+        /// <returns></returns>
+        public BAS_LABEL_TEMP SetLabelVariables(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_TEMP label)
+        {
+            foreach (var item in label.Variables)
+            {
+                switch (item.VAR_TYPE.GetEnum<BAS_LABEL_VAR.VAR_TYPEs>())
+                {
+                    case BAS_LABEL_VAR.VAR_TYPEs.Constant:
+                        item.Value = item.VAR_VALUE;
+                        break;
+                    case BAS_LABEL_VAR.VAR_TYPEs.ProcessVariable:
+                        item.Value = GetPrintProcessValue(labelPVs, item);
+                        break;
+                    case BAS_LABEL_VAR.VAR_TYPEs.DateVariable:
+                        item.Value = DateTime.Now.ToString(item.VAR_VALUE);
+                        break;
+                    case BAS_LABEL_VAR.VAR_TYPEs.CustomVariable:
+                    default:
+                        item.Value = "";
+                        break;
+                }
+            }
+            return label;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊�
+        /// </summary>
+        /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param>
         /// <param name="lv">鏍囩妯℃澘鍙橀噺</param>
         /// <returns></returns>
         public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv)
diff --git a/Tiger.Business.MES/WorkAction/PrintLabel.cs b/Tiger.Business.MES/WorkAction/PrintLabel.cs
index bab5da0..eef9e77 100644
--- a/Tiger.Business.MES/WorkAction/PrintLabel.cs
+++ b/Tiger.Business.MES/WorkAction/PrintLabel.cs
@@ -62,26 +62,9 @@
         public ApiAction<SubmitOutput> TryBegin(SubmitInput input)
         {
             var action = new ApiAction<SubmitOutput>(new SubmitOutput());
-            
-            foreach (var item in Label.Variables)
-            {
-                switch (item.VAR_TYPE.GetEnum<BAS_LABEL_VAR.VAR_TYPEs>())
-                {
-                    case BAS_LABEL_VAR.VAR_TYPEs.Constant:
-                        item.Value = item.VAR_VALUE;
-                        break;
-                    case BAS_LABEL_VAR.VAR_TYPEs.ProcessVariable:
-                        item.Value = CurPosition.GetPrintProcessValue(LabelPV, item);
-                        break;
-                    case BAS_LABEL_VAR.VAR_TYPEs.DateVariable:
-                        item.Value = DateTime.Now.ToString(item.VAR_VALUE);
-                        break;
-                    case BAS_LABEL_VAR.VAR_TYPEs.CustomVariable:
-                    default:
-                        item.Value = "";
-                        break;
-                }
-            }
+
+            //璁剧疆鎵撳嵃鍙橀噺鍊�
+            Label = CurPosition.SetLabelVariables(LabelPV, Label);
             action.Data.Data = Label;
 
             //濡傛灉杩斿洖鎴愬姛鍒欒涓哄綋鍓嶈涓哄彲浠ュ紑濮嬫墽琛岋紝鍚﹀垯杩斿洖澶辫触
diff --git a/Tiger.IBusiness/MES/Transaction/IPosition.cs b/Tiger.IBusiness/MES/Transaction/IPosition.cs
index ee3b6c8..1a181ad 100644
--- a/Tiger.IBusiness/MES/Transaction/IPosition.cs
+++ b/Tiger.IBusiness/MES/Transaction/IPosition.cs
@@ -46,6 +46,13 @@
         /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊�
         /// </summary>
         /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param>
+        /// <param name="label">鏍囩妯℃澘</param>
+        /// <returns></returns>
+        public BAS_LABEL_TEMP SetLabelVariables(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_TEMP label);
+        /// <summary>
+        /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊�
+        /// </summary>
+        /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param>
         /// <param name="lv">鏍囩妯℃澘鍙橀噺</param>
         /// <returns></returns>
         public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv);

--
Gitblit v1.9.3