From c5c41deac02df2ac552f7eb51e8b9b5f5dcc5472 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 28 十月 2024 12:51:38 +0800 Subject: [PATCH] 计划任务更新 --- Tiger.Business.MES/Common/WorkBatch.cs | 87 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 74 insertions(+), 13 deletions(-) diff --git a/Tiger.Business.MES/Common/WorkBatch.cs b/Tiger.Business.MES/Common/WorkBatch.cs index cbfdad6..ad9ff06 100644 --- a/Tiger.Business.MES/Common/WorkBatch.cs +++ b/Tiger.Business.MES/Common/WorkBatch.cs @@ -62,20 +62,26 @@ public void Update() { - WO = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == OrderNo).IncludesAllFirstLayer().First(); - Batch = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => q.BATCH_NO == Batch.BATCH_NO).First(); - if (WoContext.WoBatchDic.ContainsKey(Batch.BATCH_NO)) + var wo = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == OrderNo).IncludesAllFirstLayer().First(); + var batch = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => q.BATCH_NO == Batch.BATCH_NO).First(); + if (WoContext.WoBatchDic.ContainsKey(batch.BATCH_NO)) { - if (WO.STATUS > BIZ_MES_WO.STATUSs.Working.GetValue() || Batch.STATUS > BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()) + if (wo.STATUS > BIZ_MES_WO.STATUSs.Working.GetValue() || batch.STATUS > BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()) { WoContext.WoBatchDic.Remove(Batch.BATCH_NO); + } + else if(wo.UPDATE_TIME > WO.UPDATE_TIME || batch.UPDATE_TIME > Batch.UPDATE_TIME) + { + GetBatchInfo(); } } else { GetBatchInfo(); - WoContext.WoBatchDic.Add(Batch.BATCH_NO, this); + WoContext.WoBatchDic.Add(batch.BATCH_NO, this); } + WO = wo; + Batch = batch; } private void GetBatchInfo() @@ -99,7 +105,7 @@ } /// <summary> - /// 娣诲姞鑺傜偣鐨勪笅涓�涓涓哄埌宸ユ鍒楄〃 + /// 閫掑綊閬嶅巻宸ュ簭鑺傜偣锛岀粰涓嬬骇宸ュ簭鑺傜偣鎺掑簭鍜屾暣鐞嗗墠缃伐搴� /// </summary> /// <param name="parent"></param> private void NodeSorting(MES_WO_NODE parent) @@ -143,7 +149,7 @@ action.IsSuccessed = false; action.Data.SetValue(this, null); //action.LocaleMsg = new($"宸ュ崟鎵规[{Batch.BATCH_NO}]鐘舵�乕{Batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>().GetName()}]涓嶆槸鍏佽鐢熶骇鐨勭姸鎬侊紝璇锋壂鎻忓厑璁哥敓浜х殑浜у搧鏉$爜"); - action.LocaleMsg = new("MES.WorkBatch.WoBatchStatusCanNotWork", Batch.BATCH_NO, Batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>().GetName()); + action.LocaleMsg = new("MES.WorkBatch.WoBatchStatusCanNotWork", Batch.BATCH_NO, Batch.STATUS.GetEnumDesc<BIZ_MES_WO_BATCH.STATUSs>()); } //宸ュ崟鐘舵�佷笉鏄凡涓嬪彂鎴栬�呯敓浜т腑锛屽垯涓嶅厑璁哥敓浜� if (WO.STATUS != BIZ_MES_WO.STATUSs.Release.GetValue() && WO.STATUS != BIZ_MES_WO.STATUSs.Working.GetValue()) @@ -151,11 +157,11 @@ action.IsSuccessed = false; action.Data.SetValue(this, null); //action.LocaleMsg = new($"宸ュ崟[{WO.ORDER_NO}]鐘舵�乕{Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName()}]涓嶆槸鍏佽鐢熶骇鐨勭姸鎬侊紝璇锋壂鎻忓厑璁哥敓浜х殑浜у搧鏉$爜"); - action.LocaleMsg = new("MES.WorkBatch.WoStatusCanNotWork", WO.ORDER_NO, Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName()); + action.LocaleMsg = new("MES.WorkBatch.WoStatusCanNotWork", WO.ORDER_NO, Batch.STATUS.GetEnumDesc<BIZ_MES_WO.STATUSs>()); } //宸ュ崟鎵规鎶曞叆鏁伴噺鍑忓幓鎶ュ簾鏁伴噺濡傛灉澶т簬绛変簬璁″垝鏁伴噺锛屽垯涓嶅厑璁哥敓浜� //if (curNode.IS_INPUT == "Y" && Batch.INPUT_QTY - Batch.SCRAP_QTY >= Batch.PLAN_QTY) - if (curNodeSetting.IS_INPUT == "Y" && WoSNs.Count(q => q.STATUS > BIZ_MES_WO_SN.STATUSs.NotInput.GetValue() && q.BATCH_NO == Batch.BATCH_NO) - Batch.SCRAP_QTY >= Batch.PLAN_QTY) + if (curNode.IS_FIRST_NODE == "Y" && WoSNs.Count(q => q.STATUS > BIZ_MES_WO_SN.STATUSs.NotInput.GetValue() && q.BATCH_NO == Batch.BATCH_NO) - Batch.SCRAP_QTY >= Batch.PLAN_QTY) { action.IsSuccessed = false; action.Data.SetValue(this, null); @@ -163,7 +169,7 @@ action.LocaleMsg = new("MES.WorkBatch.BatchInputEnough", Batch.BATCH_NO, WoSNs.Count(q => q.BATCH_NO == Batch.BATCH_NO), Batch.SCRAP_QTY, Batch.PLAN_QTY); } //宸ュ崟鎶曞叆鏁伴噺鍑忓幓鎶ュ簾鏁伴噺濡傛灉澶т簬绛変簬璁″垝鏁伴噺锛屽垯涓嶅厑璁哥敓浜� - if (curNodeSetting.IS_INPUT == "Y" && WoSNs.Count(q => q.STATUS > BIZ_MES_WO_SN.STATUSs.NotInput.GetValue() && q.WORK_ORDER == WO.ORDER_NO) - WO.SCRAP_QTY >= WO.PLAN_QTY) + if (curNode.IS_FIRST_NODE == "Y" && WoSNs.Count(q => q.STATUS > BIZ_MES_WO_SN.STATUSs.NotInput.GetValue() && q.WORK_ORDER == WO.ORDER_NO) - WO.SCRAP_QTY >= WO.PLAN_QTY) { action.IsSuccessed = false; action.Data.SetValue(this, null); @@ -227,6 +233,61 @@ return false; } } + return true; + } + + /// <summary> + /// 妫�鏌ュ伐鍗曟槸鍚﹀畬宸ワ紝宸插畬宸ュ垯淇敼鐩稿簲鐘舵�佸苟璁板綍鍒版暟鎹簱 + /// </summary> + /// <param name="user"></param> + /// <returns></returns> + public async Task<bool> CheckIsComplete(string user) + { + var woSNs = Biz.Db.Queryable<BIZ_MES_WO_SN>().Where(q => q.WORK_ORDER == OrderNo).ToList(); + + //鍒ゆ柇褰撳墠宸ュ崟鎵规鏄惁宸插畬宸� + if (!woSNs.Any(q => q.BATCH_NO == Batch.BATCH_NO && q.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) && + woSNs.Count(q => q.BATCH_NO == Batch.BATCH_NO && q.STATUS == BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) == Batch.PLAN_QTY) + { + Batch.STATUS = BIZ_MES_WO_BATCH.STATUSs.Closed.GetValue(); + Batch.ACT_END_TIME = DateTime.Now; + } + + //鍒ゆ柇褰撳墠宸ュ崟鏄惁宸插畬宸� + if (!woSNs.Any(q => q.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) && + woSNs.Count(q => q.STATUS == BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) == WO.PLAN_QTY) + { + WO.STATUS = BIZ_MES_WO.STATUSs.Closed.GetValue(); + WO.ACT_END_TIME = DateTime.Now; + } + + //淇濆瓨鏁版嵁搴� + var db = Biz.Db; + var dbTran = db.UseTran(() => + { + db.Updateable(WO, user).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.ACT_END_TIME }).ExecuteCommand(); + db.Updateable(Batch, user).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.ACT_END_TIME }).ExecuteCommand(); + }); + if (!dbTran.IsSuccess) + { + //throw dbTran.ErrorException; + Logger.Default.Fatal(dbTran.ErrorException, $"妫�鏌ュ伐鍗曟壒娆{Batch.BATCH_NO}]鏄惁瀹屽伐寮傚父"); + return false; + } + //鍒犻櫎缂撳瓨 + if (Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Closed.GetValue()) + { + WoContext.WoBatchDic.Remove(Batch.BATCH_NO); + } + if (WO.STATUS == BIZ_MES_WO.STATUSs.Closed.GetValue()) + { + var list = WoContext.WoBatchDic.Where(q => q.Value.WO.ORDER_NO == OrderNo).Select(q => q.Key); + foreach (var item in list) + { + WoContext.WoBatchDic.Remove(item); + } + } + return true; } @@ -346,7 +407,7 @@ } //濡傛灉褰撳墠宸ュ簭鏈夊繀椤绘墽琛岀殑鍚庣画宸ュ簭锛屽垯鎶ラ敊 - if (nextNodes.Any(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y" && s.CAN_SKIP != "Y"))) + if (nextNodes.Any(q => q.OPER_CODE != "EndNode" && NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y" && s.CAN_SKIP != "Y"))) { action.IsSuccessed = false; action.Data.SetValue(this, null); @@ -391,7 +452,7 @@ } /// <summary> - /// 娣诲姞鑺傜偣鐨勪笅涓�涓彲鎵ц鑺傜偣 + /// 鑾峰彇鑺傜偣鐨勪笅涓�涓彲鎵ц鑺傜偣锛堟帓闄ゆ湁鍓嶇疆宸ュ簭鏈畬鎴愮殑鑺傜偣锛� /// </summary> /// <param name="parent"></param> /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰曪紝闇�瑕佸鑸煡璇㈢敓浜ц繃绋嬭褰曚俊鎭�</param> @@ -426,7 +487,7 @@ } /// <summary> - /// 鏍规嵁浼犲叆鐨勬潯鐮佽繑鍥炰笅涓�绔欏彲杩涘叆杩涘叆鐨勭洰鏍囧伐搴� + /// 鏍规嵁浼犲叆鐨勬潯鐮佽繑鍥炰笅涓�绔欏彲杩涘叆鐨勭洰鏍囧伐搴� /// </summary> /// <param name="wipSN">褰撳墠鐨勬潯鐮佽繃绔欒褰曪紝闇�瑕佸鑸煡璇㈢敓浜ц繃绋嬭褰曞拰鐢熶骇涓嶈壇璁板綍淇℃伅</param> /// <returns></returns> -- Gitblit v1.9.3