From 1319cb7072623dff12369a889af766db2d166def Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期一, 28 七月 2025 17:58:47 +0800 Subject: [PATCH] 叠盘机优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs | 195 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 135 insertions(+), 60 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs index 4e05af9..8cc7ebe 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs @@ -1,12 +1,18 @@ -锘縰sing HH.WCS.JiaTong.dispatch; +锘縰sing HH.WCS.JiaTong.device; +using HH.WCS.JiaTong.dispatch; using HH.WCS.JiaTong.process; using HH.WCS.JiaTong.util; using HH.WCS.JiaTong.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.IdentityModel.Protocols.WSTrust; using System.Linq; +using System.Net.NetworkInformation; using System.Security.Policy; +using System.Threading; +using System.Threading.Tasks; +using System.Web.Services.Description; using static HH.WCS.JiaTong.api.ApiModel; using static HH.WCS.JiaTong.util.Settings; @@ -57,6 +63,7 @@ { TaskProcess.OperateStatus(TN_Task, 6); } + UpdateWait(TN_Task); break; #endregion case 2: @@ -70,36 +77,33 @@ } WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data); - //鐗╂枡鍒颁綅閫氱煡 - if ((TN_Task.S_TYPE == "鍑哄钩搴� || TN_Task.S_TYPE == "浣欐枡杩斿洖") && model.state == 6) - { - string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; - TaskProcess.MESIteminfoback(TN_Task, urlitem); - } - if ((TN_Task.S_NOTE == "鍑哄簱" || TN_Task.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && !string.IsNullOrEmpty(TN_Task.S_MES_NO) && model.state == 6) - { - string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; - TaskProcess.MESIteminfoback(TN_Task, urlitem); - } - //浠诲姟鍥炴姤 浠诲姟鏉ユ簮 1.閽笣绔嬪簱 2.鑳剁墖搴� 3.棰勫搴�5.mes涓嬪彂 - if (TN_Task.Z_TYPE == 5) - { + //澶嶆潅涓氬姟绾跨▼澶勭悊 涓嶅奖鍝嶅洖鎶�+ + //鐗╂枡鍒颁綅閫氱煡 + if ((TN_Task.S_TYPE == "鍑哄钩搴� || TN_Task.S_TYPE == "浣欐枡杩斿洖") && model.state == 6) + { + string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; + TaskProcess.MESIteminfoback(TN_Task, urlitem); + } + if ((TN_Task.S_NOTE == "鍑哄簱" || TN_Task.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && !string.IsNullOrEmpty(TN_Task.S_MES_NO) && model.state == 6) + { + string urlitem = Settings.tableUrls.Find(a => a.id == 5).url; + TaskProcess.MESIteminfoback(TN_Task, urlitem); + } + //浠诲姟鍥炴姤 浠诲姟鏉ユ簮 1.閽笣绔嬪簱 2.鑳剁墖搴� 3.棰勫搴�5.mes涓嬪彂 + //TN_Task = WCSHelper.GetTask(TN_Task.S_CODE); string urlstate = Settings.tableUrls.Find(a => a.id == 4).url; TaskProcess.MESReportback(TN_Task, model.state, urlstate); - } - else - { //绔嬪簱涓巜ms浠诲姟鍥炴姤 TableUrl url = null; switch (TN_Task.Z_TYPE) { - case 1: url = Settings.tableUrls.Find(a => a.id == 1); if (url != null) { - TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url,"ML"); + TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "ML"); } else { @@ -110,7 +114,7 @@ url = Settings.tableUrls.Find(a => a.id == 9); if (url != null) { - TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url,"YBK"); + TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "YBK"); } else { @@ -162,52 +166,108 @@ { LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=14鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�); } + break; } - } + + + } else { - var db = new SqlHelper<TaskAction>().GetInstance(); - var taskAction = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == model.task_no && a.N_ACTION_CODE == model.state).First(); - if (taskAction == null) - { - WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data); - } + + var db = new SqlHelper<TaskAction>().GetInstance(); + var taskAction = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == model.task_no && a.N_ACTION_CODE == model.state).First(); + if (taskAction == null) + { + WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data); + } - //瀹夊叏璇锋眰绛�- string url = ""; - string name = ""; - if (TN_Task.Z_TYPE == 1) - { - url = Settings.tableUrls.Find(a => a.id == 2).url; - name = "ML"; - } - else if (TN_Task.Z_TYPE == 3) - { - url = Settings.tableUrls.Find(a => a.id == 10).url; - name = "YBK"; - } - else if (TN_Task.Z_TYPE == 4) - { - url = Settings.tableUrls.Find(a => a.id == 11).url; - name = "YCL"; - } - else - { - LogHelper.Info($"瀹夊叏璇锋眰锛氫换鍔$被鍨嬮敊璇�褰撳墠浠诲姟绫诲瀷{TN_Task.Z_TYPE}"); - } - if (!string.IsNullOrEmpty(url)) - { - TaskProcess.OperateReq(model, url, TN_Task,name); - } - else - { - LogHelper.Info($"瀹夊叏璇锋眰锛氭湭鎵惧埌鍥炴姤鍦板潃锛岃妫�煡閰嶇疆鏂囦欢==>{JsonConvert.SerializeObject(Settings.tableUrls)}"); - } + //瀹夊叏璇锋眰绛�+ string url = ""; + string name = ""; + if (TN_Task.Z_TYPE == 1) + { + url = Settings.tableUrls.Find(a => a.id == 2).url; + name = "ML"; + } + else if (TN_Task.Z_TYPE == 3) + { + url = Settings.tableUrls.Find(a => a.id == 10).url; + name = "YBK"; + } + else if (TN_Task.Z_TYPE == 4) + { + url = Settings.tableUrls.Find(a => a.id == 11).url; + name = "YCL"; + } + else + { + LogHelper.Info($"瀹夊叏璇锋眰锛氫换鍔$被鍨嬮敊璇�褰撳墠浠诲姟绫诲瀷{TN_Task.Z_TYPE}"); + } + if (!string.IsNullOrEmpty(url)) + { + TaskProcess.OperateReq(model, url, TN_Task, name); + } + else + { + LogHelper.Info($"瀹夊叏璇锋眰锛氭湭鎵惧埌鍥炴姤鍦板潃锛岃妫�煡閰嶇疆鏂囦欢==>{JsonConvert.SerializeObject(Settings.tableUrls)}"); + } + + } } } + } + + /// <summary> + /// 鍗歌揣瀹屾垚濡傛灉鏈夌浉閭诲簱鍖虹殑鍥炲簱浠诲姟 鎺ㄩ�浠诲姟 + /// </summary> + internal static void UpdateWait(WCSTask mst) + { + var db = new SqlHelper<object>().GetInstance(); + try + { + var area = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == mst.S_END_AREA).First(); + if (area != null) + { + if (!string.IsNullOrEmpty(area.S_GROUP)) + { + int code = int.Parse(area.S_GROUP.Substring(1, 1)); + string areaName = area.S_GROUP.Substring(0, 1); + string[] AreaList = new string[] { areaName + (code - 1), areaName + (code + 1), area.S_GROUP }; + LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣鍖哄煙{JsonConvert.SerializeObject(AreaList)}"); + var AreasByGroup = db.Queryable<Area>().Where(a => AreaList.Contains(a.S_GROUP)).ToList(); + if (AreasByGroup.Count > 0) + { + var AreaCodes = AreasByGroup.Select(a => a.S_CODE).ToList(); + LogHelper.Info($"浠诲姟{mst.S_CODE},鏍规嵁缁堢偣鍖哄煙鑾峰彇搴撳尯缂栫爜锛歿JsonConvert.SerializeObject(AreaCodes)}"); + var updateMst = db.Queryable<WCSTask>().Where(a => AreaCodes.Contains(a.S_END_AREA.Trim()) && a.S_B_STATE == "绛夊緟鎺ㄩ�").OrderBy(a => a.T_CREATE).First(); + updateMst.S_B_STATE = "绛夊緟"; + db.Updateable(updateMst).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand(); + } + else + { + LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣鍖哄煙{JsonConvert.SerializeObject(AreaList)},鏈壘鍒板浜庡垎缁勫簱鍖猴紝璇锋鏌ュ簱鍖鸿〃"); + } + + } + else + { + LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣搴撳尯{mst.S_END_AREA}鍒嗙粍涓虹┖"); + } + } + else + { + LogHelper.Info($"浠诲姟{mst.S_CODE},缁堢偣搴撳尯{mst.S_END_AREA}鏈壘鍒板浜庡簱鍖猴紝璇锋鏌ュ簱鍖鸿〃"); + } + } + catch (Exception ex) + { + LogHelper.Info($"UpdateWait Error锛歿ex}"); + + } + } /// <summary> @@ -232,11 +292,26 @@ } }); - - } } + /// <summary> + /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 + /// </summary> + internal static void DispatchWait() + { + //鏌ヨ浠诲姟 + //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+ // Console.WriteLine("寮�浠诲姟鎺ㄩ�"); + var list = WCSHelper.GetTaskListByState("绛夊緟鎺ㄩ�"); + if (list.Count > 0) + { + list.ForEach(task => + { + TaskProcess.WaitSend(task); + }); + } + } } } -- Gitblit v1.9.1