From befe8d30755ce91989155ad8e8ae8337ac0908eb Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期一, 19 八月 2024 16:45:31 +0800 Subject: [PATCH] 物品基础信息增加字段 --- Tiger.Business/MES/Biz.WorkBatch.cs | 69 ++++++++++++++++++++++++++++++++-- 1 files changed, 65 insertions(+), 4 deletions(-) diff --git a/Tiger.Business/MES/Biz.WorkBatch.cs b/Tiger.Business/MES/Biz.WorkBatch.cs index c4445af..a4e0b4e 100644 --- a/Tiger.Business/MES/Biz.WorkBatch.cs +++ b/Tiger.Business/MES/Biz.WorkBatch.cs @@ -6,7 +6,6 @@ using System.Text; using System.Threading.Tasks; using Rhea.Common; -using System.Net; using System.Linq; using Tiger.IBusiness; using Tiger.Business.MES; @@ -41,6 +40,7 @@ public List<MES_WO_NODE_POST> NodePosts { get; set; } public List<MES_WO_NODE_DFTG> NodeDftgs { get; set; } public List<BAS_DEFECT_GRP> DefectGroups { get; set; } + public List<BAS_DEFECT> Defects => DefectGroups.SelectMany(q => q.Defects).ToList(); /// <summary> /// 浜嬪姟閿� /// </summary> @@ -224,7 +224,7 @@ /// 鏍规嵁浼犲叆鐨勬潯鐮佽繃绔欎俊鎭拰涓嬩竴绔欑殑鐩爣宸ュ簭锛屽垽鏂潯鐮佹槸鍚﹁兘杩涘叆涓嬩竴绔� /// </summary> /// <param name="input">鏈鎻愪氦鐨勬暟鎹�</param> - /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰�</param> + /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰曪紝闇�瑕佸鑸煡璇㈢敓浜ц繃绋嬭褰曚俊鎭�</param> /// <param name="nextNode">瑕佽繘鍏ョ殑鐩爣宸ュ簭</param> /// <returns></returns> public ApiAction<SubmitOutput> CanGotoNext(SubmitInput input, MES_WIP_DATA wipSN, MES_WO_NODE nextNode) @@ -253,6 +253,7 @@ { var curNode = Nodes.First(q => q.ID == wipSN.NODE_ID); var curSetting = NodeSets.FirstOrDefault(q => q.NODE_ID == curNode.ID); + var nextSetting = NodeSets.FirstOrDefault(q => q.NODE_ID == nextNode.ID); //杩涘叆缁翠慨锛氬鏋滅洰鏍囧伐搴忔槸缁翠慨宸ュ簭鍒欏垽鏂綋鍓嶆潯鐮佸湪鏈伐鍗曟湁鏈淮淇殑涓嶈壇璁板綍涓斿綋鍓嶅伐搴忚妭鐐规湁杩炵嚎鍒扮淮淇伐搴忥紝鍒欏厑璁歌繘鍏ョ淮淇伐搴� if (nextNode.Operation.OPER_TYPE == MES_OPERATION.OPER_TYPEs.Repair.GetValue() && wipSN.Defects.Any(q => q.WORK_ORDER == WO.ORDER_NO && q.STATUS < MES_WIP_DFT.STATUSs.Resolved.GetValue()) @@ -285,7 +286,7 @@ } //涓嶈壇鍝佸叆绔欙細濡傛灉浜у搧鏈変笉鑹褰曚笖鐩爣宸ュ簭涓嶆槸缁翠慨宸ュ簭涓斾笉鍏佽涓嶈壇鍝佸叆绔欙紝鍒欐姤閿� else if (wipSN.Defects.Any(q => q.WORK_ORDER == WO.ORDER_NO && q.STATUS < MES_WIP_DFT.STATUSs.Resolved.GetValue()) - && curSetting.ALLOW_DFT_IN != "Y" && nextNode.Operation.OPER_TYPE != MES_OPERATION.OPER_TYPEs.Repair.GetValue()) + && nextSetting.ALLOW_DFT_IN != "Y" && nextNode.Operation.OPER_TYPE != MES_OPERATION.OPER_TYPEs.Repair.GetValue()) { action.IsSuccessed = false; action.Data.SetValue(this, null); @@ -353,7 +354,7 @@ /// 娣诲姞鑺傜偣鐨勪笅涓�涓彲鎵ц鑺傜偣 /// </summary> /// <param name="parent"></param> - /// <param name="wipSN"></param> + /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰曪紝闇�瑕佸鑸煡璇㈢敓浜ц繃绋嬭褰曚俊鎭�</param> private List<MES_WO_NODE> GetNextNodes(MES_WO_NODE parent, MES_WIP_DATA wipSN) { var result = new List<MES_WO_NODE>(); @@ -385,6 +386,66 @@ } /// <summary> + /// 鏍规嵁浼犲叆鐨勬潯鐮佽繑鍥炰笅涓�绔欏彲杩涘叆杩涘叆鐨勭洰鏍囧伐搴� + /// </summary> + /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰曪紝闇�瑕佸鑸煡璇㈢敓浜ц繃绋嬭褰曞拰鐢熶骇涓嶈壇璁板綍淇℃伅</param> + /// <returns></returns> + public List<MES_WO_NODE> GetNextNodes(MES_WIP_DATA wipSN) + { + var result = new List<MES_WO_NODE>(); + + //鏉$爜鍦ㄦ湰宸ュ崟绗竴娆¤繃绔� + if (wipSN.NODE_ID.IsNullOrEmpty()) + { + result.AddRange(Nodes.Where(q => q.IS_FIRST_NODE == "Y")); + } + //鏉$爜宸叉湁杩囩珯璁板綍 + else + { + var curNode = Nodes.First(q => q.ID == wipSN.NODE_ID); + //鏉$爜鍦ㄧ淮淇伐搴忥紝杩斿洖鍙洖娴佸伐搴� + if (curNode.Operation.OPER_TYPE == MES_OPERATION.OPER_TYPEs.Repair.GetValue()) + { + //鏌ユ壘鎵�鏈夊彲浠ュ洖娴佺殑宸ュ簭 + var reflowNodes = Nodes.Where(q => Edges.Any(e => e.SRC_NODE == curNode.ID && e.TGT_NODE == q.ID) + && NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y")).ToList(); + result.AddRange(reflowNodes.Where(q => wipSN.REFLOW_NODE.IsNullOrEmpty() || wipSN.REFLOW_NODE == q.NODE_NAME)); + } + else + { + //寰�涓嬫煡鎵炬潯鐮佸綋鍓嶅伐搴忕殑涓嬩竴涓彲鎵ц宸ュ簭 + var nextNodes = GetNextNodes(curNode, wipSN); + //濡傛灉褰撳墠宸ュ簭娌℃湁蹇呴』鎵ц鐨勫悗缁伐搴忥紝鍒欏皾璇曞湪鍓嶇疆宸ュ簭鏌ユ壘杩樻湁娌℃湁鍚庣画宸ュ簭娌″畬鎴愮殑宸ュ簭锛屾湁鍒欏姞鍏� + if (!nextNodes.Any(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y" && s.CAN_SKIP != "Y"))) + { + //鍦ㄥ墠缃伐搴忔煡鎵捐繕鏈夋病鏈夊悗缁伐搴忔病瀹屾垚鐨勫墠缃伐搴� + var prepIDs = curNode.PrepNodeIDs.Where(id => + Edges.Any(e => e.SRC_NODE == id && !wipSN.History.Any(h => h.WORK_ORDER == WO.ORDER_NO && h.NODE_ID == e.TGT_NODE && h.IsFinished)) + ).ToList(); + foreach (var prepID in prepIDs) + { + //濡傛灉杩炵嚎鐨勭洰鏍囧伐搴忕殑鍓嶇疆宸ュ簭閮藉凡瀹屾垚锛屽垯鎶婅繛绾跨殑鐩爣宸ュ簭娣诲姞鍒板彲鎵ц宸ュ簭鍒楄〃 + var prep = Nodes.First(q => q.ID == prepID); + var next = GetNextNodes(prep, wipSN); + nextNodes.AddRange(next); + } + } + result.AddRange(nextNodes); + //濡傛灉褰撳墠鏉$爜鏄笉鑹垯鍙繑鍥炲厑璁镐笉鑹繘绔欑殑宸ュ簭鍜屽伐搴忚繛鎺ョ殑缁翠慨宸ュ簭 + if (wipSN.Defects.Any(q => q.WORK_ORDER == WO.ORDER_NO && q.STATUS < MES_WIP_DFT.STATUSs.Resolved.GetValue())) + { + result.RemoveAll(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.ALLOW_DFT_IN != "Y")); + //鍔犲叆宸ュ簭杩炴帴鐨勭淮淇伐搴� + var repairNodes = Nodes.Where(q => Edges.Any(e => e.SRC_NODE == curNode.ID && e.TGT_NODE == q.ID) && q.Operation.OPER_TYPE == MES_OPERATION.OPER_TYPEs.Repair.GetValue()); + result.AddRange(repairNodes); + } + } + } + + return result; + } + + /// <summary> /// 鏍规嵁宀椾綅缂栫爜杩斿洖宸ュ簭涓嶈壇浠g爜 /// </summary> /// <param name="postCode"></param> -- Gitblit v1.9.3