From e552f3366723d8a2392ca59e95e5d9589ad7a858 Mon Sep 17 00:00:00 2001 From: czw <selecti@yeah.net> Date: 星期一, 23 六月 2025 13:03:47 +0800 Subject: [PATCH] Merge branch 'master' of http://121.37.118.194:8000/r/WMSPrjInstance/HH-0014_NongFu_QingXi --- HH.WCS.QingXiNongfu/core/Monitor.cs | 111 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 80 insertions(+), 31 deletions(-) diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index d7867b5..279ecc6 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -8,7 +8,6 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using System.Web.UI.WebControls.WebParts; namespace HH.WCS.QingXigongchang.core { @@ -96,7 +95,7 @@ { if (item.SQL_State != "瀹屾垚") { - ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); + ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); WCSHelper.Do(db => { LogHelper.Info("绉诲簱宸ュ崟鏁伴噺瀹屾垚" + item.SQL_WorkNo); @@ -119,7 +118,7 @@ { LogHelper.Info($"{item.Turn_Type}宸ュ崟{item.SQL_WorkNo} 鎵嬪姩瀹屾垚锛屽鐞嗚В閿�"); - ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); + ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); WCSHelper.Do(db => { if (item.Turn_Type == "鑷姩绉诲簱") @@ -179,7 +178,7 @@ { //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); - ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); + ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "璧锋帓鏃犺揣 鎴�缁堟帓宸叉弧 鏃犳硶绉诲簱"); item.SQL_State = "瀹屾垚"; @@ -303,7 +302,7 @@ { //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); - ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); + ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�); item.SQL_State = "瀹屾垚"; item.Note = "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�; @@ -322,7 +321,7 @@ { //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); - ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); + ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "缁堢偣婊′簡锛岀Щ搴撳畬鎴�); item.SQL_State = "瀹屾垚"; item.Note = "缁堢偣婊′簡锛岀Щ搴撳畬鎴�; @@ -419,11 +418,26 @@ } } - static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true) + static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "") { - LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign); + LogHelper.Info("绉诲簱瑙i攣 doo" + msg + "---" + sign + "--" + WorkNo); LogHelper.Info(JsonConvert.SerializeObject(startBit)); LogHelper.Info(JsonConvert.SerializeObject(EndBit)); + bool j瑙i攣璧风偣搴撳尯鎺�= true; + if (!string.IsNullOrEmpty(WorkNo) && sign == 0) + { + //瑙i攣鏃讹紝鏈夊伐鍗曞彿銆� 鏌ユ煡闄や簡杩欎釜宸ュ崟鍙蜂互澶栫殑鍏朵粬 鎸囧畾鍑哄簱鎺掓墽琛�+ var orders = WCSHelper.GetWorkOrder2(); + var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo); + LogHelper.Info("绉诲簱瑙i攣 --褰撳墠宸ュ崟 sid:" + thisOrder?.S_ID); + if (thisOrder != null) + { + var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row); + LogHelper.Info($"绉诲簱瑙i攣 --鍏朵粬宸ュ崟 x.start_area == {thisOrder.start_area} start_row == {thisOrder.start_row} SID:" + other?.S_ID); + if (other != null) + j瑙i攣璧风偣搴撳尯鎺�= false; + } + } //if (sign == 1) //{ // if (LocationHelper.GetRowLock(x => x.S_AREA_CODE == startBit.S_AREA_CODE && x.N_ROW == startBit.N_ROW).Count > 0) @@ -431,7 +445,8 @@ // return; // } //} - LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign); + if (j瑙i攣璧风偣搴撳尯鎺� + LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign); LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW, S_LOCK_STATE = msg }, sign); //if (EndBit == null || EndBit.S_AREA_CODE.StartsWith("BHQ-")) // return; @@ -440,9 +455,12 @@ { case 0: { + var lst = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC }; + if (!j瑙i攣璧风偣搴撳尯鎺� + lst = new List<string> { EndBit.S_Fule_LOC }; var req = JsonConvert.SerializeObject(new { - areaNum = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC }, + areaNum = lst, repoNo = Settings.repoNo, areaLock = "2" }); @@ -1010,7 +1028,7 @@ static bool InworkLock = false; /// <summary> /// 鍘熸潗鏂�妫�祴鍚勬祦杞綅缃� 鍐欏叆鎵樼洏璐т綅s_type 涓�涓嬩竴涓洰鐨勫湴銆傚氨寮�涓浆銆�- /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�+ /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�YWLRGDD--浜哄伐鍫嗗彔鍖� /// </summary> internal static void BottTask() { @@ -1018,9 +1036,9 @@ var usingSpace = new List<string> { "鍏ュ簱鎺ラ┏鍖�, "搴撳唴鎺ラ┏鍖�, "鍑哄簱鎺ラ┏鍖�, "鎻愬崌鏈洪�鏂欏彛" }; //usingSpace = new List<string> { "YWLRGDD", "YWLWJJB", "YWLYLTKQ", "YWLTKKTQ", "YWLKTDDQ", "YWLT1TSJ", "YWLT1TSJCD", "YWLT2TSJ", "YWLT2TSJCD" }; usingSpace = new List<string> { "YWLYLTKQ", "YWLTKKTQ", "YWLWJJB", "YWLRGDD", "YWLT1TSJ", "YWLT2TSJ" }; + var dbll = new SqlHelper<object>().GetInstance(); ///----------------------------閫�綑鏂欎腑闂村簱鍖猴紝閫�┖涓棿搴撳尯锛� /// /*鎵樼洏璐т綅琛ㄧ殑 S_TYPE銆� 搴撳尯1,搴撳尯,*/ - foreach (var area in usingSpace) { try @@ -1105,7 +1123,7 @@ var arloclist = LocationHelper.GetAreaNormalLocList(EdnRarea);// LocationHelper.GetList<Location>(x => x.S_AREA_CODE == _clrel0.S_TYPE && x.S_LOCK_STATE != "鎶ュ簾"); if (arloclist.Any()) { - if (EdnRarea == "YWLWJJB") + if (EdnRarea == "YWLWJJB")//绾哥鏃犺弻鎺ラ┏鍖� // InworkLock = true; //else InworkLock = false; //if (od.S_ZZ_AREA == "YWLWJJB") @@ -1119,14 +1137,43 @@ Location endbit = null; //foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(xx => xx.Key)) RowLock inlock = null; + List<RowLock> inlockLis = new List<RowLock>(); bool isCd = false; if (CDlist.Contains(EdnRarea)) { isCd = true; - inlock = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).FirstOrDefault(); + inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).ToList(); + inlock = inlockLis.FirstOrDefault(); if (inlock != null) { - arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); + //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓 + //鍏堝垽鏂捣鐐规湁澶氬皯鐩稿悓鐨�鑳藉叆鐨勭墿鏂�+ if (_cl.S_AREA_CODE == "YWLRGDD")//鍒ゆ柇璧风偣鏄惁鏄汉宸ュ爢鍙犲尯 + { + //鐒跺悗鍒ゆ柇浜哄伐鍫嗗彔鍖洪渶瑕佸叆搴撳灏戞墭鍚屽搧绉嶇墿鏂�startMum + //璐т綅 鎵樼洏 鐗╂枡琛ㄨ仈鏌�+ LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 寮�"); + var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); + ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE); + var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).Includes(e => e.LocCntrRel, p => p.CntrItemRel).ToList(); + LogHelper.Info($"璧风偣瑕佸叆CD鐨勬湁澶氬皯鎵樼洏鏁伴噺涓簕lstCanOutL.Count()}"); + //鍒ゆ柇缁堢偣鎺掕兘鍏ュ灏� 灏戜簬鍏ュ簱鎵樼洏鏁板垯澶氬紑涓�帓 EndMum + var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); + if (lstCanOutL.Count <= EndMum.Count()) + { + arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); + } + else + { + arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); + inlock = null; + } + LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 缁撴潫"); + } + else + { + arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); + } } } foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) @@ -2626,6 +2673,7 @@ yuworders.Remove(order); goto retuse; } + var oto = new List<string>(); //if (!string.IsNullOrEmpty(order.TagOver)) // oto = order.TagOver.Split(',').ToList(); @@ -3569,7 +3617,6 @@ /// </summary> public static void AutoRun13TSJ() { - Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) => { LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瀵瑰簲宸ュ崟鐨剓od.S_ROW} 鐗╂枡鏁伴噺涓嶈冻銆傝Е鍙戣浆杩愩�"); @@ -4008,10 +4055,10 @@ var locS = LocationHelper.GetAreaNormalLocList(ODs.Key); foreach (var od in ODs) { - LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 寮� 銆嬨�銆�); - if (string.IsNullOrEmpty(od.S_ZZ_AREA) || string.IsNullOrEmpty(od.S_END_AREA)) + LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 寮� 銆嬨�銆�); + if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA)) { - LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�"); + LogHelper.CError($"YWL_ZX_Turn from{od.S_START_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�"); continue; } var rows = locS.FindAll(x => x.N_ROW == od.N_START_ROW); @@ -4028,13 +4075,23 @@ var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); if (lastful != null) { - LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆�); + LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆�); var crs = LocationHelper.GetLocCntrRel(lastful.S_LOC_CODE); var cntritems = ContainerHelper.GetCntrItemRel(crs.FirstOrDefault()?.S_CNTR_CODE); if (!cntritems.Any()) continue; - LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆傛帴椹虫槸鍚﹁閿侊紵锛歿InworkLock}"); + LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆傛帴椹虫槸鍚﹁閿侊紵锛歿InworkLock}"); var cir1 = cntritems.First(); + + if (!string.IsNullOrEmpty(od.S_ITEM_CODE)) + { + ///缁欑Щ搴撳崟 鍐欎笂杞繍鐨勭墿鏂欐暟鎹� + od.S_ITEM_CODE = cir1.S_ITEM_CODE; + od.S_ITEM_NAME = cir1.S_ITEM_NAME; + od.S_CJ_NAME = cir1.S_CJ_NAME; + WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand()); + } + if (od.S_ZZ_AREA == "YWLWJJB") { if (InworkLock) @@ -4064,24 +4121,16 @@ Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); if (Endbit != null) { - LogHelper.Info($"鍏ヤ腑杞尯{od.S_ZZ_AREA}浣跨敤{Endbit.S_LOC_CODE}"); + LogHelper.Info($"鍏ヤ腑杞尯{nextarea}浣跨敤{Endbit.S_LOC_CODE}"); break; } } - LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱缁堢偣銆媨Endbit?.S_LOC_CODE}"); + LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱缁堢偣銆媨Endbit?.S_LOC_CODE}"); if (Endbit != null) { //鐢熸垚鎺ラ┏鍖轰换鍔★紝鏍囪涓虹粓鐐瑰簱鍖恒� var b = TaskProcess.CreateTransport(od.S_ID, lastful.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, crs.Count, 50, nextarea == od.S_END_AREA ? "" : od.S_END_AREA); if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; - if (!string.IsNullOrEmpty(od.S_ITEM_CODE)) - { - ///缁欑Щ搴撳崟 鍐欎笂杞繍鐨勭墿鏂欐暟鎹� - od.S_ITEM_CODE = cir1.S_ITEM_CODE; - od.S_ITEM_NAME = cir1.S_ITEM_NAME; - od.S_CJ_NAME = cir1.S_CJ_NAME; - WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand()); - } break; } else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; -- Gitblit v1.9.1