From 95c865c03a9cb128af51ac4b7d7f9d7149441efd Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期一, 07 七月 2025 17:30:35 +0800 Subject: [PATCH] agv效率开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs | 256 ++++++++++++++++++++++++++++++++++----------------- 1 files changed, 171 insertions(+), 85 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 2a03bd3..63dde4f 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs @@ -5,8 +5,13 @@ 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.Tasks; using static HH.WCS.JiaTong.api.ApiModel; +using static HH.WCS.JiaTong.util.Settings; namespace HH.WCS.JiaTong.core { @@ -27,15 +32,15 @@ { if (model.state <= 7) { - //鏈変换鍔″彿璇锋眰 switch (model.state) { case 1: - WCSHelper.Begin(TN_Task); + WCSHelper.Begin(TN_Task, model.forklift_no); break; #region MyRegion case 3: + WCSHelper.UpdateAgvNo(TN_Task, model.forklift_no); WCSHelper.UpdateStatus(TN_Task, "寮�鍙栬揣"); break; case 4: @@ -47,13 +52,20 @@ break; case 6: WCSHelper.UpdateStatus(TN_Task, "鍗歌揣瀹屾垚"); - TaskProcess.OperateStatus(TN_Task, 6); + if (!string.IsNullOrEmpty(TN_Task.S_NOTE) && (TN_Task.S_NOTE.Trim() == "鍏ュ簱" || TN_Task.S_NOTE.Trim() == "绌烘墭鍥炲簱")) + { + LocationHelper.UnlockLoc(TN_Task.S_END_LOC); + } + else + { + TaskProcess.OperateStatus(TN_Task, 6); + } + UpdateWait(TN_Task); break; #endregion case 2: WCSHelper.End(TN_Task); - - break; ; + break; case 7: TaskProcess.OperateStatus(TN_Task, 7); WCSHelper.Fail(TN_Task); @@ -61,9 +73,14 @@ break; } WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data); - //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級 + //鐗╂枡鍒颁綅閫氱煡 - if ((TN_Task.S_TYPE == "鍑哄钩搴� ||TN_Task.S_TYPE == "浣欐枡杩斿洖" || TN_Task.S_NOTE == "鍑哄簱"|| TN_Task.S_NOTE == "寮傚父搴撳尯鍏ュ簱") && model.state == 2) + 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); @@ -71,111 +88,115 @@ //浠诲姟鍥炴姤 浠诲姟鏉ユ簮 1.閽笣绔嬪簱 2.鑳剁墖搴� 3.棰勫搴�5.mes涓嬪彂 if (TN_Task.Z_TYPE == 5) { + //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 { - string url = ""; - if (TN_Task.Z_TYPE == 1) + //绔嬪簱涓巜ms浠诲姟鍥炴姤 + TableUrl url = null; + switch (TN_Task.Z_TYPE) { - url = Settings.tableUrls.Find(a => a.id == 1).url; - } - else if (TN_Task.Z_TYPE == 2) - { - url = Settings.tableUrls.Find(a => a.id == 7).url; - } - else if (TN_Task.Z_TYPE == 3) - { - url = Settings.tableUrls.Find(a => a.id == 9).url; - } - else if (TN_Task.Z_TYPE == 4) - { - url = Settings.tableUrls.Find(a => a.id == 11).url; - } - else if (TN_Task.Z_TYPE == 6) - { - url = Settings.tableUrls.Find(a => a.id == 14).url; - } - else - { - LogHelper.Info($"浠诲姟鍥炴姤锛氫换鍔$被鍨嬮敊璇�); - } - //鍘熸潗鏂欐帴鍙i渶瑕佸姞涓妕oken - if (TN_Task.Z_TYPE == 4) - { - Console.WriteLine($"鍘熸潗鏂欎换鍔″洖鎶TN_Task.S_EQ_NO}"); - var db = new SqlHelper<object>().GetInstance(); - var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList(); - //鍒嗘。浠诲姟鍥炴姤,浠诲姟1鍙洖鎶� 3 4 浠诲姟2鍙洖鎶�5 6 2 - if (TN_Task.S_TYPE.Contains("鐢垫")) - { - if (TN_Task.S_TYPE == "鐢垫1") + case 1: + url = Settings.tableUrls.Find(a => a.id == 1); + if (url != null) { - if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4") - { - TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url); - } - } - else if (TN_Task.S_TYPE == "鐢垫2") - { - if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2") - { - TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url); - } - } - } - else - { - TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url); - } - - } - else - { - if (!string.IsNullOrEmpty(url)) - { - if (TN_Task.S_TYPE == "鐢垫2" && TN_Task.S_CODE == "2") - { - - TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url); - + TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "ML"); } else { - TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url); + LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=1鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�); + } + break; + case 3: + 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"); + } + else + { + LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=9鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�); + } + break; + case 4: + url = Settings.tableUrls.Find(a => a.id == 11); + if (url != null) + { + Console.WriteLine($"鍘熸潗鏂欎换鍔″洖鎶TN_Task.S_EQ_NO}"); + if (TN_Task.S_TYPE.Contains("鐢垫")) + { + if (TN_Task.S_TYPE == "鐢垫1") + { + if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4") + { + TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url); + } + } + else if (TN_Task.S_TYPE == "鐢垫2") + { + if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2") + { + TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url); + } + } + } + else + { + + var db = new SqlHelper<object>().GetInstance(); + var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList(); + TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url); + } + } + else + { + LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=11鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�); + } + break; + case 6: + url = Settings.tableUrls.Find(a => a.id == 14); + if (url != null) + { + TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url); + } + else + { + LogHelper.Info("鍘熸潗鏂欎换鍔″洖鎶ワ紝鏍规嵁id=14鏈壘鍒板湴鍧�厤缃枃浠讹紝璇锋鏌ラ厤缃枃浠�); } - } - else - { - LogHelper.Info($"浠诲姟鍥炴姤锛氭湭鎵惧埌鍥炴姤鍦板潃锛岃妫�煡閰嶇疆鏂囦欢==>{JsonConvert.SerializeObject(Settings.tableUrls)}"); - } + 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); + } + //瀹夊叏璇锋眰绛� string url = ""; + string name = ""; if (TN_Task.Z_TYPE == 1) { url = Settings.tableUrls.Find(a => a.id == 2).url; - } - else if (TN_Task.Z_TYPE == 2) - { - url = Settings.tableUrls.Find(a => a.id == 8).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 { @@ -183,7 +204,7 @@ } if (!string.IsNullOrEmpty(url)) { - TaskProcess.OperateReq(model,url, TN_Task); + TaskProcess.OperateReq(model, url, TN_Task, name); } else { @@ -195,13 +216,63 @@ } /// <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> /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 /// </summary> internal static void Dispatch() { //鏌ヨ浠诲姟 //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�- + Console.WriteLine("寮�浠诲姟鎺ㄩ�"); var list = WCSHelper.GetTaskListByState("绛夊緟"); if (list.Count > 0) @@ -216,11 +287,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