From 2efbd25f2160cb68cf2464f370aca3d1ea21f86f Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期三, 04 六月 2025 17:28:24 +0800 Subject: [PATCH] 入库优先级配置 --- core/Monitor.cs | 238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 234 insertions(+), 4 deletions(-) diff --git a/core/Monitor.cs b/core/Monitor.cs index a739122..7f9637f 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -1,12 +1,15 @@ -锘縰sing HH.WCS.ZhongCeJinTan.api; +锘縰sing HH.WCS.Mobox3.ZhongCeJinTan.dispatch; +using HH.WCS.ZhongCeJinTan.api; using HH.WCS.ZhongCeJinTan.dispatch; using HH.WCS.ZhongCeJinTan.process; using HH.WCS.ZhongCeJinTan.util; using HH.WCS.ZhongCeJinTan.wms; using Newtonsoft.Json; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -52,7 +55,7 @@ - if (tasks.Count >1 && tasks.Count(p => p.N_B_STATE == 3) == 1) + if (tasks.Count > 1 && tasks.Count(p => p.N_B_STATE == 3) == 1) { operation.S_B_STATE = "瀹屾垚涓�崐"; operation.T_MODIFY = DateTime.Now; @@ -65,8 +68,8 @@ operation.S_B_STATE = "瀹屾垚"; operation.T_MODIFY = DateTime.Now; operation.T_END_TIME = DateTime.Now; - db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE,it.T_MODIFY,it.T_END_TIME }).ExecuteCommand(); - + db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY, it.T_END_TIME }).ExecuteCommand(); + } else if (tasks.Count(p => p.N_B_STATE == 5) > 0) { @@ -80,8 +83,235 @@ } } + //鍑哄簱浠诲姟 鍔ㄤ綔鐮佹湁1鏃� 姣忛殧涓�鏃堕棿鎻愰珮涓�浼樺厛绾�+ + public static void UpdateOutTaskPriority() + { + var db = new SqlHelper<object>().GetInstance(); + var st = Settings.outMinutePriority; + var list = TaskHelper.GetWcsTaskListByState("鎵ц", "agv", "鍑哄簱"); + + foreach (var item in list) + { + var action = db.Queryable<WmsTaskAction>().Where(p => p.S_TASK_CODE==item.S_CODE && p.N_ACTION_CODE == 1).First(); + if (action != null) + { + var action3 = db.Queryable<WmsTaskAction>().Where(p => p.S_TASK_CODE == item.S_CODE && p.N_ACTION_CODE == 3).First(); + if (action3 == null) + { + if (DateTime.Now.Subtract(action.T_CREATE).TotalMinutes > st.Minute) + { + item.N_PRIORITY += st.Priority; + db.Updateable(item).UpdateColumns(it => new { it.N_PRIORITY }).ExecuteCommand(); + NDCApi.ChangeOrderPri(item.S_CODE, item.N_PRIORITY); + } + } + } + } + int sp = st.Minute * 60000; + Thread.Sleep(sp); + } + private static object locker = new object(); + /// <summary> + /// 鑷姩鍑哄簱绌烘墭 + /// </summary> + public static void ktAuto() { + var db = new SqlHelper<object>().GetInstance(); + + try + { + lock (locker) + { + var ktTaskList = db.Queryable<MesKtTask>().Where(a => a.Status == "N").OrderBy(b => b.CreateDate).ToList(); + foreach (var kt in ktTaskList) + { + LogHelper.Info($"绌烘墭鍑哄簱缂撳瓨淇℃伅" + JsonConvert.SerializeObject(kt), "绌烘墭鍑哄簱"); + + var tm = DateTime.Now.Subtract(kt.CreateDate).TotalMinutes; + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱缂撳瓨鏃堕棿闂撮殧淇℃伅锛歿tm}", "绌烘墭鍑哄簱"); + if (tm < 1) + { + continue; + } + + var workFlow = TaskHelper.selectWorkFlowByType(kt.BUSI_TYPE, kt.TOOLS_TPYE); + + + if (workFlow == null) + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂澶辫触锛屾祦绋嬬紪鍙�{kt.BUSI_TYPE},宸ヨ绫诲瀷{kt.TOOLS_TPYE},娌℃壘鍒板搴斾綔涓氭祦绋�, "绌烘墭鍑哄簱"); + continue; + } + else + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浣滀笟娴佺▼淇℃伅" + JsonConvert.SerializeObject(workFlow), "绌烘墭鍑哄簱"); + } + + + + //鍑哄簱浠诲姟 + + //鎺ラ┏浣�+ var connection = ""; + + //鎺ラ┏浣嶅簱鍖�+ var connectionArea = ""; + + + //鏌ユ壘缁欏畾缁堢偣 + var end = LocationHelper.GetLoc(kt.Location_To); + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "绌烘墭鍑哄簱"); + + + if (end == null) + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{kt.Location_To},娌℃壘鍒�, "绌烘墭鍑哄簱"); + continue; + } + + + + + + //鏌ユ壘璧风偣 + List<Location> strrtList; + + Location start = null; + + + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) + { + strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); + } + else + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + } + + + + + //瀵绘壘绔嬪簱鍖虹┖鎵�+ start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA); + + + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "绌烘墭鍑哄簱"); + + if (start == null ) + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "绌烘墭鍑哄簱"); + continue; + } + if (start.S_LOCK_STATE!="鏃�) + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐箋start.S_CODE}鏈夐攣", "绌烘墭鍑哄簱"); + continue; + } + + + + //鑾峰彇鎵樼洏鐮�+ var cntrCode = LocationHelper.GetLocCntrCode(start.S_CODE); + + if (workFlow.SENDWCS == "Y") + { + + //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 + var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + + var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList); + foreach (var item in balanceConnectionList) + { + if (item.loc.N_CURRENT_NUM < 2) + { + connection = item.loc.S_CODE; + connectionArea = item.loc.S_AREA_Name; + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "绌烘墭鍑哄簱"); + break; + } + } + + if (connection == "") + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠荤┖鎵樺嚭搴撳姟涓嬪彂"); + continue; + } + } + + + var startTask = TaskHelper.GetTaskByStartLoc(start.S_CODE); + if (startTask != null) + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐箋start.S_CODE}鏈夋墽琛屼腑浠诲姟{startTask.S_CODE}", "绌烘墭鍑哄簱"); + continue; + } + + + + LocationHelper.LockLoc(start.S_CODE, "鍑哄簱閿�, 2); + + + + //璧风偣缁堢偣鏌ユ壘鎴愬姛锛屽垱寤轰綔涓�+ + var taskType = int.Parse(workFlow.FLOWCODE); + + var operation = new WmsWork + { + // 浣滀笟鍙�+ S_CODE = kt.task_no, + // 浣滀笟绫诲瀷 + N_TYPE = taskType, + // 浣滀笟绫诲瀷 + S_TYPE = workFlow.FLOWNAME, + // 璧风偣璐т綅 + S_START_LOC = start.S_CODE, + // 璧风偣搴撳尯缂栫爜 + S_START_AREA = start.S_AREA_CODE, + //鎺ラ┏浣�+ CONNECTION = connection, + // 缁堢偣璐т綅 + S_END_LOC = end.S_CODE, + // 缁堢偣搴撳尯缂栫爜 + S_END_AREA = end.S_AREA_CODE, + // 瀹瑰櫒缂栫爜 + S_CNTR_CODE = cntrCode, + // 浣滀笟瀹氫箟鍚嶇О + S_OP_DEF_NAME = workFlow.FLOWNAME, + //浼樺厛绾�+ N_PRIORITY = kt.Priority, + //宸ヨ绫诲瀷 + TOOLSTYPE = kt.TOOLS_TPYE, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = start.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + CONNECTION_AREA = connectionArea + }; + + //鍒涘缓浣滀笟 + if (WMSHelper.CreateWmsWork(operation) && TaskHelper.ChangeMesKtTask(kt)) + { + + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "绌烘墭鍑哄簱"); + } + else + { + LogHelper.Info($"绌烘墭{kt.task_no}鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "绌烘墭鍑哄簱"); + continue; + } + + } + } + } + catch (Exception ex) + { + LogHelper.Info($"绌烘墭鍑哄簱寮傚父淇℃伅" + ex.Message, "绌烘墭鍑哄簱"); + } + } } } -- Gitblit v1.9.1