From 3cab868262d5e84cd1000851c07cce43a459f3ea Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期四, 29 八月 2024 20:49:54 +0800 Subject: [PATCH] 增加CS客户端登录逻辑 --- Tiger.Business.MES/Transaction/Position.cs | 111 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 65 insertions(+), 46 deletions(-) diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index 33bcf88..e718347 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -56,14 +56,14 @@ public WorkBatch CurBatch { get; set; } public IWorkBatch WorkBatch => CurBatch; public List<MES_WIP_DATA> CurWipSNs { get; set; } = new(); - public string CurSN => CurWipSNs.Any() ? (CurWipSNs.First().TRAY_SN.IsNullOrEmpty() ? CurWipSNs.First().SN : CurWipSNs.First().TRAY_SN) : ""; + public string CurSN => (CurWipSNs.Any() ? (CurWipSNs.First().TRAY_SN.IsNullOrEmpty() ? CurWipSNs.First().SN : CurWipSNs.First().TRAY_SN) : ""); public List<MES_WIP_HIS> CurWipSNHiss { get; set; } = new(); public List<MES_WIP_DFT> CurDefects { get; set; } = new(); 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(); - public bool IsFinishNodeSteps => !Steps.Any(q => q.Type == IWorkStep.Types.Node && !q.IsFinished); + public bool IsFinishNodeSteps => !Steps.Any(q => q.NodeType == IWorkStep.NodeTypes.Node && !q.IsFinished); 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; @@ -71,9 +71,10 @@ /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦 /// </summary> public bool NeedTemporaryStoreDBCommitAction { get; set; } = false; - protected List<Action> DBCommitList { get; set; } = new(); + protected Dictionary<string, List<Action>> DBCommitList { get; set; } = new(); protected List<Position> NodeCommitList { get; set; } = new(); - + protected Dictionary<string, OperInfo> OperInfoDic { get; set; } = new(); + //protected OperInfo CurOperInfo { get; set; } #endregion Propertys & Variables #region Functions @@ -125,6 +126,11 @@ WoContext.WoBatchDic.Add(wb.Batch.BATCH_NO, wb); } CurBatch = WoContext.GetBatch(input.OrderNo, CurLine.LINE_CODE); + if (!OperInfoDic.ContainsKey(CurBatch.Batch.BATCH_NO)) + { + OperInfoDic.Add(CurBatch.Batch.BATCH_NO, new()); + } + action.Data = new { WorkOrder = CurBatch.WO, Bacth = CurBatch.Batch }; } catch (Exception ex) @@ -184,6 +190,26 @@ } /// <summary> + /// 璁剧疆褰撳墠鏉$爜鐨勫伐搴忎俊鎭� + /// </summary> + public OperInfo SetOperNodeInfo(OperInfo info, string locale) + { + if (CurWipSNs.Any()) + { + info.CurNode = CurWipSNs.First().NODE_NAME; + info.NextNode = string.Join(",", CurBatch.GetNextNodes(CurWipSNs.First()).Select(q => q.NODE_NAME)); + info.StepsInfo = Steps.Select(q => q.GetInfo(locale)).ToList(); + } + else + { + info.CurNode = " 鈥� "; + info.NextNode = " 鈥� "; + info.StepsInfo = new(); + } + return info; + } + + /// <summary> /// 鐢熸垚浼犲叆宸ユ鍚庣画鐨勮涓哄埌宸ユ鍒楄〃 /// </summary> /// <param name="parent"></param> @@ -225,12 +251,13 @@ } else { - var next = new WorkStep(IWorkStep.Types.Action, this) + var next = new WorkStep(IWorkStep.NodeTypes.Action, this) { Sequence = parent.Sequence + 1, Node = parent.Node, + OperSetting = CurBatch.NodeSets.FirstOrDefault(q => q.NODE_ID == parent.Node.ID), NodeAct = act, - Setting = CurBatch.ActionSets.FirstOrDefault(q => q.ACT_ID == act.ID), + ActSetting = CurBatch.ActionSets.FirstOrDefault(q => q.ACT_ID == act.ID), }; next.Init(); next.PrepNodeIDs.Add(parent.NodeID); @@ -335,50 +362,40 @@ /// </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; - // } - //} - if (NeedTemporaryStoreDBCommitAction) + //淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版彁浜ゆ搷浣滃垪琛� + var commitList = new List<Action>(); + foreach (var step in Steps.OrderBy(q => q.Sequence)) { - NodeCommitList.Add(this.MemberwiseClone() as Position); + commitList.Add(step.DBSubmitAction); } - else + DBCommitList.Add(CurSN, commitList); + //濡傛灉涓嶉渶瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽垯鎶婃彁浜ゆ搷浣滃垪琛ㄦ彁浜ゅ埌鏁版嵁搴� + if (!NeedTemporaryStoreDBCommitAction) { - //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛� - foreach (var item in NodeCommitList) + //鎭㈠涓存椂瀛樺偍鏍囪涓篺alse + NeedTemporaryStoreDBCommitAction = false; + + var dbTran = GetCommitDB().UseTran(() => { - item?.DoSaveToDB(); - item?.Dispose(); + //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁 + foreach (var wipSn in DBCommitList.Keys) + { + foreach (var action in DBCommitList[wipSn]) + { + action.Invoke(); + } + } + }); + if (dbTran.IsSuccess) + { + //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛� + DBCommitList.Clear(); } - DoSaveToDB(); - NodeCommitList.Clear(); + else + { + //鎶涘嚭寮傚父 + throw dbTran.ErrorException; + } } } @@ -490,7 +507,9 @@ switch (pv.VAR_METHOD) { case "GetCartonGenerate": - return Biz.CodeRule[lv.BARCODE_RULE].Generate($"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString(); + return Biz.CodeRule[lv.BARCODE_RULE ?? ""]?.Generate($"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString() ?? ""; + case "GetHW21SNGenerate": + return Biz.CodeRule[lv.BARCODE_RULE ?? ""]?.Generate("SN:","05").Data.ToString() ?? ""; default: return ""; } -- Gitblit v1.9.3