From 2c188371ed9e91ba58c452dbf27150de8eca208a Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 15 七月 2024 10:52:14 +0800
Subject: [PATCH] 增加IWorkStep,行为要保存数据,对接工步DBSubmitAction

---
 Tiger.IBusiness/MES/IWorkStep.cs              |   44 ++++++++++++++
 Tiger.Business.MES/WorkAction/IPQC.cs         |    6 +-
 Tiger.Business.MES/Transaction/CollectNode.cs |    6 +
 Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs    |    2 
 Tiger.Business.MES/Transaction/PackingNode.cs |    6 +
 Tiger.Business.MES/WorkAction/PrintLabel.cs   |   23 ++++++-
 Tiger.IBusiness/MES/IWorkAction.cs            |    5 +
 Tiger.Business/MES/Biz.WorkStep.cs            |   27 ++++++--
 Tiger.IBusiness/MES/Transaction/IPosition.cs  |   10 +++
 Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs   |    2 
 Tiger.Business.MES/Transaction/TestNode.cs    |    6 +
 11 files changed, 112 insertions(+), 25 deletions(-)

diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs
index 087315d..39339a5 100644
--- a/Tiger.Business.MES/Transaction/CollectNode.cs
+++ b/Tiger.Business.MES/Transaction/CollectNode.cs
@@ -208,7 +208,7 @@
 
                 //鍒濆鍖栧伐姝ュ垪琛�
                 Steps.Clear();
-                var curStep = new Biz.WorkStep(curNode.ID, Biz.WorkStep.Types.Node)
+                var curStep = new Biz.WorkStep(curNode.ID, IWorkStep.Types.Node)
                 {
                     Sequence = Steps.Count + 1,
                     Node = curNode,
@@ -226,7 +226,7 @@
                 var acts = CurBatch.NodeActs.Where(q => q.NODE_ID == curNode.ID).ToList();
                 foreach (var act in acts)
                 {
-                    Steps.Add(new Biz.WorkStep(act.ID, Biz.WorkStep.Types.Action)
+                    Steps.Add(new Biz.WorkStep(act.ID, IWorkStep.Types.Action)
                     {
                         Sequence = Steps.Count + 1,
                         Node = curNode,
@@ -235,6 +235,8 @@
                     });
                 }
 
+                //瀹屾垚褰撳墠宸ュ簭鑺傜偣
+                curStep.IsFinished = true;
                 //鏈畬鎴愭墍鏈夊伐姝�
                 if (!IsFinishAllSteps)
                 {
diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs
index 0f5833d..67fc824 100644
--- a/Tiger.Business.MES/Transaction/PackingNode.cs
+++ b/Tiger.Business.MES/Transaction/PackingNode.cs
@@ -208,7 +208,7 @@
 
                 //鍒濆鍖栧伐姝ュ垪琛�
                 Steps.Clear();
-                var curStep = new Biz.WorkStep(curNode.ID, Biz.WorkStep.Types.Node) {
+                var curStep = new Biz.WorkStep(curNode.ID, IWorkStep.Types.Node) {
                     Sequence = Steps.Count + 1,
                     Node = curNode,
                     DBSubmitAction = () =>
@@ -225,7 +225,7 @@
                 var acts = CurBatch.NodeActs.Where(q => q.NODE_ID == curNode.ID).ToList();
                 foreach (var act in acts)
                 {
-                    Steps.Add(new Biz.WorkStep(act.ID, Biz.WorkStep.Types.Action)
+                    Steps.Add(new Biz.WorkStep(act.ID, IWorkStep.Types.Action)
                     {
                         Sequence = Steps.Count + 1,
                         Node = curNode,
@@ -234,6 +234,8 @@
                     });
                 }
 
+                //瀹屾垚褰撳墠宸ュ簭鑺傜偣
+                curStep.IsFinished = true;
                 //鏈畬鎴愭墍鏈夊伐姝�
                 if (!IsFinishAllSteps)
                 {
diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs
index 69592af..1f2d523 100644
--- a/Tiger.Business.MES/Transaction/TestNode.cs
+++ b/Tiger.Business.MES/Transaction/TestNode.cs
@@ -207,7 +207,7 @@
 
                 //鍒濆鍖栧伐姝ュ垪琛�
                 Steps.Clear();
-                var curStep = new Biz.WorkStep(curNode.ID, Biz.WorkStep.Types.Node)
+                var curStep = new Biz.WorkStep(curNode.ID, IWorkStep.Types.Node)
                 {
                     Sequence = Steps.Count + 1,
                     Node = curNode,
@@ -225,7 +225,7 @@
                 var acts = CurBatch.NodeActs.Where(q => q.NODE_ID == curNode.ID).ToList();
                 foreach (var act in acts)
                 {
-                    Steps.Add(new Biz.WorkStep(act.ID, Biz.WorkStep.Types.Action)
+                    Steps.Add(new Biz.WorkStep(act.ID, IWorkStep.Types.Action)
                     {
                         Sequence = Steps.Count + 1,
                         Node = curNode,
@@ -234,6 +234,8 @@
                     });
                 }
 
+                //瀹屾垚褰撳墠宸ュ簭鑺傜偣
+                curStep.IsFinished = true;
                 //鏈畬鎴愭墍鏈夊伐姝�
                 if (!IsFinishAllSteps)
                 {
diff --git a/Tiger.Business.MES/WorkAction/IPQC.cs b/Tiger.Business.MES/WorkAction/IPQC.cs
index 6d633f1..22cb3cb 100644
--- a/Tiger.Business.MES/WorkAction/IPQC.cs
+++ b/Tiger.Business.MES/WorkAction/IPQC.cs
@@ -15,7 +15,7 @@
     {
         #region Propertys & Variables
         public bool IsFinished { get; set; } = false;
-        public string StepID { get; set; }
+        public IWorkStep CurStep { get; set; }
         public IPosition CurPosition { get; set; }
         public MES_WO_NODE_ACT NodeAct { get; set; }
         public MES_WO_ACTION Setting { get; set; }
@@ -26,9 +26,9 @@
         /// 寮�濮嬫墽琛屽伐搴忚涓�
         /// </summary>
         /// <returns></returns>
-        public ApiAction<SubmitOutput> Begin(string stepID, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting)
+        public ApiAction<SubmitOutput> Begin(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting)
         {
-            StepID = stepID;
+            CurStep = curStep;
             CurPosition = position;
             NodeAct = nodeAct;
             Setting = setting;
diff --git a/Tiger.Business.MES/WorkAction/PrintLabel.cs b/Tiger.Business.MES/WorkAction/PrintLabel.cs
index 115ab6d..18ccf31 100644
--- a/Tiger.Business.MES/WorkAction/PrintLabel.cs
+++ b/Tiger.Business.MES/WorkAction/PrintLabel.cs
@@ -16,7 +16,7 @@
     {
         #region Propertys & Variables
         public bool IsFinished { get; set; } = false;
-        public string StepID { get; set; }
+        public IWorkStep CurStep { get; set; }
         public IPosition CurPosition { get; set; }
         public MES_WO_NODE_ACT NodeAct { get; set; }
         public MES_WO_ACTION Setting { get; set; }
@@ -29,9 +29,9 @@
         /// 寮�濮嬫墽琛屽伐搴忚涓�
         /// </summary>
         /// <returns></returns>
-        public ApiAction<SubmitOutput> Begin(string stepID, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting)
+        public ApiAction<SubmitOutput> Begin(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting)
         {
-            StepID = stepID;
+            CurStep = curStep;
             CurPosition = position;
             NodeAct = nodeAct;
             Setting = setting;
@@ -90,6 +90,20 @@
         public ApiAction<SubmitOutput> End()
         {
             var action = new ApiAction<SubmitOutput>();
+            //淇濆瓨鏁版嵁
+            CurStep.DBSubmitAction = () =>
+            {
+                var db = CurPosition.GetCommitDB();
+
+                var wipAct = new MES_WIP_ACT()
+                {
+                    HIS_ID = CurPosition.CurWipSN.HIS_ID,
+                    SN = CurPosition.CurWipSN.SN,
+                };
+
+                db.Storageable(wipAct, CurPosition.UserCode).ExecuteCommand();
+            };
+
             IsFinished = true;
             //action.LocaleMsg = new($"鏍囩{Label.LABEL_NAME}[{Label.LABEL_CODE}]鎵撳嵃鎴愬姛", Label.LABEL_NAME);
             action.LocaleMsg = new("MES.WorkAction.PrintLabel.PrintSuccess", Label.LABEL_NAME, Label.LABEL_CODE);
@@ -110,8 +124,7 @@
                                 case "GetSN":
                                     return CurPosition.CurWipSN.SN;
                                 case "GetBAS_ITEM":
-                                    var itemInfo = Biz.Db.Queryable<BAS_ITEM>().Where(q => q.ITEM_CODE == CurPosition.CurWipSN.ITEM_CODE).First();
-                                    return itemInfo.ToJson();
+                                    return Biz.Db.Queryable<BAS_ITEM>().Where(q => q.ITEM_CODE == CurPosition.CurWipSN.ITEM_CODE).First()?.ToJson();
                                 case "GetCustomer":
                                     return CurPosition.WorkBatch.Batch.ToJson();
                                 default:
diff --git a/Tiger.Business/MES/Biz.WorkStep.cs b/Tiger.Business/MES/Biz.WorkStep.cs
index 9b50319..de8c0f2 100644
--- a/Tiger.Business/MES/Biz.WorkStep.cs
+++ b/Tiger.Business/MES/Biz.WorkStep.cs
@@ -20,9 +20,9 @@
         /// <summary>
         /// 宸ユ
         /// </summary>
-        public partial class WorkStep
+        public partial class WorkStep : IWorkStep
         {
-            public WorkStep(string id, Types type)
+            public WorkStep(string id, IWorkStep.Types type)
             {
                 ID = id;
                 Type = type;
@@ -30,28 +30,41 @@
 
             #region Propertys & Variables
             public string ID { get; set; } = Guid.NewGuid().ToString("N");
-            public enum Types { Node, Action }
-            public Types Type { get; set; }
+            public IWorkStep.Types Type { get; set; }
             public int Sequence { get; set; }
-            //public bool IsFinished { get; set; } = false;
             public MES_WO_NODE Node { get; set; }
             public MES_WO_NODE_ACT NodeAct { get; set; }
             public MES_WO_ACTION Setting { get; set; }
             public IPosition CurPosition { get; set; }
             public IWorkAction CurAction { get; set; }
-            public bool IsFinished => (Type == Types.Action && CurAction.IsFinished) || Type == Types.Node;
+            private bool _IsFinished = false;
+            public bool IsFinished
+            {
+                get => Type == IWorkStep.Types.Action ? CurAction.IsFinished : _IsFinished; 
+                set { _IsFinished = value; }
+            }
             public Action DBSubmitAction { get; set; } = () => { };
             #endregion
 
             #region Functions
+            /// <summary>
+            /// 寮�濮嬫墽琛屽伐姝�
+            /// </summary>
+            /// <param name="position"></param>
+            /// <returns></returns>
             public ApiAction<SubmitOutput> Begin(IPosition position)
             {
                 CurPosition = position;
                 CurAction = DI.Resolve(NodeAct.Definition.SERVICE_TYPE) as IWorkAction;
                 //CurAction = DI.Resolve("Tiger.IBusiness.IPrintLabel,Tiger.IBusiness") as IWorkAction;
-                return CurAction.Begin(ID, position, NodeAct, Setting);
+                return CurAction.Begin(this, position, NodeAct, Setting);
             }
 
+            /// <summary>
+            /// 宸ユ鎻愪氦鏁版嵁
+            /// </summary>
+            /// <param name="input"></param>
+            /// <returns></returns>
             public ApiAction<SubmitOutput> Submit(SubmitInput input)
             {
                 return CurAction.Submit(input);
diff --git a/Tiger.IBusiness/MES/IWorkAction.cs b/Tiger.IBusiness/MES/IWorkAction.cs
index 441b3f2..19a4772 100644
--- a/Tiger.IBusiness/MES/IWorkAction.cs
+++ b/Tiger.IBusiness/MES/IWorkAction.cs
@@ -13,9 +13,10 @@
     {
         #region Propertys & Variables
         public bool IsFinished { get; set; }
+        public IWorkStep CurStep { get; set; }
         public IPosition CurPosition { get; set; }
-        public MES_WO_ACTION Setting { get; set; }
         public MES_WO_NODE_ACT NodeAct { get; set; }
+        public MES_WO_ACTION Setting { get; set; }
         #endregion Propertys & Variables
 
         #region Functions
@@ -23,7 +24,7 @@
         /// 寮�濮嬫墽琛屽伐搴忚涓�
         /// </summary>
         /// <returns></returns>
-        public ApiAction<SubmitOutput> Begin(string stepID, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting);
+        public ApiAction<SubmitOutput> Begin(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting);
         /// <summary>
         /// 宸ュ簭琛屼负鎻愪氦鏁版嵁
         /// </summary>
diff --git a/Tiger.IBusiness/MES/IWorkStep.cs b/Tiger.IBusiness/MES/IWorkStep.cs
new file mode 100644
index 0000000..148de53
--- /dev/null
+++ b/Tiger.IBusiness/MES/IWorkStep.cs
@@ -0,0 +1,44 @@
+锘縰sing Newtonsoft.Json;
+using Rhea.Common;
+using System;
+using Tiger.Model;
+using Tiger.Model.Entitys.MES.Position;
+
+namespace Tiger.IBusiness
+{
+    /// <summary>
+    /// 宸ユ琛屼负鍩虹被
+    /// </summary>
+    public interface IWorkStep
+    {
+        #region Propertys & Variables
+        public string ID { get; set; }
+        
+        public Types Type { get; set; }
+        public int Sequence { get; set; }
+        public MES_WO_NODE Node { get; set; }
+        public MES_WO_NODE_ACT NodeAct { get; set; }
+        public MES_WO_ACTION Setting { get; set; }
+        public IPosition CurPosition { get; set; }
+        public IWorkAction CurAction { get; set; }
+        public bool IsFinished { get; set; }
+        public Action DBSubmitAction { get; set; }
+        #endregion Propertys & Variables
+        public enum Types { Node, Action }
+
+        #region Functions
+        /// <summary>
+        /// 寮�濮嬫墽琛屽伐姝�
+        /// </summary>
+        /// <param name="position"></param>
+        /// <returns></returns>
+        public ApiAction<SubmitOutput> Begin(IPosition position);
+        /// <summary>
+        /// 宸ユ鎻愪氦鏁版嵁
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public ApiAction<SubmitOutput> Submit(SubmitInput input);
+        #endregion Functions
+    }
+}
diff --git a/Tiger.IBusiness/MES/Transaction/IPosition.cs b/Tiger.IBusiness/MES/Transaction/IPosition.cs
index 4512a16..d086695 100644
--- a/Tiger.IBusiness/MES/Transaction/IPosition.cs
+++ b/Tiger.IBusiness/MES/Transaction/IPosition.cs
@@ -10,6 +10,7 @@
 {
     public interface IPosition : IMESTransaction
     {
+        #region Propertys & Variables
         public string UserCode { get; set; }
         public string PostCode { get; set; }
         public MES_FACTORY CurFactory { get; set; }
@@ -20,7 +21,14 @@
         public MES_WIP_DATA CurWipSN { get; set; }
         public IPosition Init(string id, string apiHost, string userCode, string postCode);
         public void ResetSteps();
+        #endregion Propertys & Variables
 
-        //public bool Close(bool needSaveHistoryLog = false);
+        #region Functions
+        /// <summary>
+        /// 鑾峰彇鎻愪氦鏁版嵁鐨凞bClient瀵硅薄
+        /// </summary>
+        /// <returns></returns>
+        public DbClient GetCommitDB();
+        #endregion Functions
     }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs
index d8968d8..2ac3a63 100644
--- a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs
+++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs
@@ -220,6 +220,8 @@
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
+        [SugarColumn(IsIgnore = true)]
+        public string HIS_ID { get; set; } = Guid.NewGuid().ToString("N");
         #endregion
 
         #region 澶栭敭灞炴��
diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs
index 952194c..8f56f47 100644
--- a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs
+++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs
@@ -28,7 +28,7 @@
         /// <param name="traceInfo">杩芥函淇℃伅</param>
         public MES_WIP_HIS(MES_WIP_DATA data, string traceInfo)
         {
-            ID = Guid.NewGuid().ToString("N");
+			ID = data.HIS_ID;
             CREATE_USER = data.CREATE_USER;
             UPDATE_USER = data.UPDATE_USER;
             AUTH_ORG = data.AUTH_ORG;

--
Gitblit v1.9.3