From 25f8eb843fd2046d8b94b410185e4ecdd3c07f57 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期日, 04 八月 2024 18:44:28 +0800 Subject: [PATCH] 工单工艺路线编辑 --- Tiger.Business.MES/Transaction/Position.cs | 144 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 123 insertions(+), 21 deletions(-) diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index 435eb9f..95596c4 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -57,6 +57,7 @@ public IWorkBatch WorkBatch => CurBatch; public MES_WIP_DATA CurWipSN { get; set; } public MES_WIP_HIS CurWipSNHis { get; set; } + public Dictionary<string, object> Context { get; set; } = new(); public List<WorkStep> Steps { get; set; } = new(); public WorkStep CurStep { get; set; } public List<WorkStep> NextSteps { get; set; } = new(); @@ -146,12 +147,30 @@ } /// <summary> - /// 閲嶇疆褰撳墠宸ユ + /// 閲嶇疆宸ュ簭鎿嶄綔 /// </summary> - public void ResetSteps() + /// <returns></returns> + public ApiAction Reset() + { + var action = new ApiAction(); + + ResetNode(); + action.IsSuccessed = true; + action.LocaleMsg = new($"宸ュ簭鎿嶄綔宸查噸缃紝璇烽噸鏂版壂鎻忚繘绔欎骇鍝佹潯鐮�"); + action.LocaleMsg = new("MES.Transaction.Position.ResetNode"); + + return action; + } + + /// <summary> + /// 閲嶇疆褰撳墠宸ュ簭锛屾湁闇�瑕佸垯閲嶅啓姝ゆ柟娉� + /// </summary> + public virtual void ResetNode() { Steps.Clear(); CurWipSN = null; + CurWipSNHis = null; + CurStep = null; } /// <summary> @@ -198,12 +217,12 @@ { var next = new WorkStep(IWorkStep.Types.Action, this) { - NodeID = act.ID, Sequence = parent.Sequence + 1, Node = parent.Node, NodeAct = act, Setting = CurBatch.ActionSets.FirstOrDefault(q => q.ACT_ID == act.ID), }; + next.Init(); next.PrepNodeIDs.Add(parent.NodeID); next.PrepNodeIDs.AddRange(parent.PrepNodeIDs); next.PrepNodeIDs = next.PrepNodeIDs.Distinct().ToList(); @@ -233,7 +252,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(); @@ -262,39 +281,33 @@ /// <param name="input"></param> public ApiAction<SubmitOutput> BeginNextActionStep(SubmitInput input) { - var result = new ApiAction<SubmitOutput>(); + var result = new ApiAction<SubmitOutput>(new SubmitOutput()); //璁剧疆鍚庣画鍙墽琛岀殑宸ユ鍒楄〃 NextSteps = GetNextSteps(CurStep); //灏濊瘯鏈夋病鏈夊彲浠ョ洿鎺ュ紑濮嬬殑鍚庣画宸ユ foreach (var step in NextSteps) { + //灏濊瘯鎵ц鍚庣画宸ユ var canBegin = step.TryBegin(input); //濡傛灉鍚庣画宸ユ鍙互鐩存帴寮�濮嬪垯鐩存帴鎵ц if (canBegin.IsSuccessed) { + //鏇存柊褰撳墠鎵ц宸ユ涓哄凡寮�濮嬪伐姝� CurStep = step; + //鏇存柊鍚庣画鍙墽琛岀殑宸ユ鍒楄〃 NextSteps = GetNextSteps(CurStep); + //杩斿洖缁撴灉鍒板鎴风 result = canBegin; - 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.SetValue(CurBatch, CurStep, CurStep?.ID, IsFinishAllSteps); + return result; } } - //鏍规嵁鍚庣画宸ユ杩斿洖ApiAction - 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.NextStepID = ""; + //娌℃湁鍙互鐩存帴寮�濮嬬殑鍚庣画宸ユ锛屾牴鎹悗缁伐姝ヨ繑鍥濧piAction + result.Data.SetValue(CurBatch, CurStep, "", IsFinishAllSteps); - //鏍规嵁鍚庣画鍙墽琛屽伐姝ュ垪琛ㄨ繑鍥炵浉搴旂殑鎿嶄綔鎻愮ず + //娌℃湁鍙互鐩存帴寮�濮嬬殑鍚庣画宸ユ锛屾牴鎹悗缁彲鎵ц宸ユ鍒楄〃杩斿洖鐩稿簲鐨勬搷浣滄彁绀� if (NextSteps.Count == 1) { result.LocaleMsg = NextSteps.First().GetBeginMsg(); @@ -306,7 +319,96 @@ } return result; } - + + /// <summary> + /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊� + /// </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) + { + var pv = labelPVs.FirstOrDefault(q => q.VAR_CODE == lv.VAR_VALUE); + if (!pv.IsNullOrEmpty()) + { + switch (pv.VAR_TYPE.GetEnum<BAS_LABEL_PV.VAR_TYPEs>()) + { + case BAS_LABEL_PV.VAR_TYPEs.ServerMethod: + { + switch (pv.VAR_METHOD) + { + case "GetSN": + return CurWipSN.SN; + case "GetBAS_ITEM": + return WorkBatch.Product.ToJson(); + case "GetCustomer": + return WorkBatch.Batch.ToJson(); + case "GetVarByWo": + return GetLabelVarWo(lv); + default: + return ""; + } + } + case BAS_LABEL_PV.VAR_TYPEs.WebApiWebApi: + break; + case BAS_LABEL_PV.VAR_TYPEs.StoredProcedure: + break; + default: + break; + } + } + return ""; + } + /// <summary> + /// 鑾峰彇宸ュ崟缁存姢鐨勬ā鏉垮彉閲� + /// </summary> + /// <param name="labelId"></param> + /// <returns></returns> + private string GetLabelVarWo(BAS_LABEL_VAR lv) + { + string result = ""; + var labelVarwos = Biz.Db.Queryable<BAS_LABEL_VAR_WO>().Where(x => x.LABEL_ID == lv.LABEL_ID && x.VAR_NAME == lv.VAR_NAME).ToList(); + if (labelVarwos.Any(q => q.WORK_ORDER == WorkBatch.Batch.ORDER_NO)) + { + result = labelVarwos.First(q => q.WORK_ORDER == WorkBatch.Batch.ORDER_NO).VAR_VALUE; + } + else + { + result = labelVarwos.Count > 0 ? labelVarwos[0].DEFAULT_VALUE : ""; + } + return result; + } + #endregion Functions public override bool Close(bool needSaveHistoryLog = false) -- Gitblit v1.9.3