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