From f703b278956736aa14c12d1d25c8e8f23b822760 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期四, 26 六月 2025 17:27:32 +0800 Subject: [PATCH] 优化国自辅助调度和任务推送逻辑 --- .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1b470183-023c-416d-bb96-68ba4438601c.vsidx | 0 dispatch/GZRobot.cs | 111 ++++++++++++++++++++------- core/Monitor.cs | 33 -------- /dev/null | 0 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1a495659-e37c-434f-8b88-6132140fefe1.vsidx | 0 process/TaskProcess.cs | 64 ++++++++++++++++ core/WCSCore.cs | 3 api/MoboxController.cs | 2 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/464eaeb0-6a8d-451a-9aba-ddc122b33d68.vsidx | 0 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/9ac976c0-07a0-401d-88dc-3e2e5fd17dbc.vsidx | 0 10 files changed, 150 insertions(+), 63 deletions(-) diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1a495659-e37c-434f-8b88-6132140fefe1.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1a495659-e37c-434f-8b88-6132140fefe1.vsidx new file mode 100644 index 0000000..f92647f --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1a495659-e37c-434f-8b88-6132140fefe1.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1b470183-023c-416d-bb96-68ba4438601c.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1b470183-023c-416d-bb96-68ba4438601c.vsidx new file mode 100644 index 0000000..eab5c5b --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/1b470183-023c-416d-bb96-68ba4438601c.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/d454431d-5ff0-4870-b58b-659457d9dd0a.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/464eaeb0-6a8d-451a-9aba-ddc122b33d68.vsidx similarity index 68% rename from .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/d454431d-5ff0-4870-b58b-659457d9dd0a.vsidx rename to .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/464eaeb0-6a8d-451a-9aba-ddc122b33d68.vsidx index d99f720..8a5532c 100644 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/d454431d-5ff0-4870-b58b-659457d9dd0a.vsidx +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/464eaeb0-6a8d-451a-9aba-ddc122b33d68.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/754396c7-eaff-48c1-966a-0bbb85008292.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/754396c7-eaff-48c1-966a-0bbb85008292.vsidx deleted file mode 100644 index 3dd4cca..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/754396c7-eaff-48c1-966a-0bbb85008292.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b233932-2148-476d-a58f-024f6cac6202.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b233932-2148-476d-a58f-024f6cac6202.vsidx deleted file mode 100644 index febf7e4..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b233932-2148-476d-a58f-024f6cac6202.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/9ac976c0-07a0-401d-88dc-3e2e5fd17dbc.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/9ac976c0-07a0-401d-88dc-3e2e5fd17dbc.vsidx new file mode 100644 index 0000000..0d6effd --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/9ac976c0-07a0-401d-88dc-3e2e5fd17dbc.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f9a252f3-6694-4ab8-a204-0ccfbf239beb.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f9a252f3-6694-4ab8-a204-0ccfbf239beb.vsidx deleted file mode 100644 index c2a52b7..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f9a252f3-6694-4ab8-a204-0ccfbf239beb.vsidx +++ /dev/null Binary files differ diff --git a/api/MoboxController.cs b/api/MoboxController.cs index 5b9ce71..14d9c86 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -48,7 +48,7 @@ return NewSimpleResult(-1, $"瀹瑰櫒绫诲瀷 '{model.CntrType}' 涓嶅悎娉曪細搴斾负 '绌烘墭鐩� 鎴�'绌哄ソ杩愮'"); } } - + /// <summary> /// 鎵樼洏-绌烘墭涓婄嚎(PDA) /// </summary> diff --git a/core/Monitor.cs b/core/Monitor.cs index 2204e35..87fc655 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -23,7 +23,7 @@ public static void CheckInbound() { var db = new SqlHelper<object>().GetInstance(); var info = ""; - + try { // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅 foreach (var prod in Settings.ProductionLines) { @@ -223,37 +223,6 @@ } } - - - //// BEG 鏌ユ壘6涓湀浠ュ墠鐨勪换鍔¤〃鍜屼换鍔″姩浣滆〃 - //var oldTaskList = db.Queryable<TN_Task>() - // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) - // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") - // .ToList(); - - //var oldTaskActionList = db.Queryable<TN_Task, TN_Task_Action>((t, a) => t.S_CODE == a.S_TASK_CODE) - // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) - // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") - // .Select((t, a) => a) - // .ToList(); - //// END - - //using (var tran = db.Ado.UseTran()) { - // // 鍦ㄥ嚭搴撹疆璇腑澶勭悊锛屾煡鎵句换鍔″崟鏄惁鏈夊崐骞村墠涓斿凡缁忓畬鎴愮殑浠诲姟锛屽鏋滄湁鍒欏垹闄�- // // 杩欎釜鎿嶄綔涓嶅奖鍝嶆甯告祦绋嬶紝濡傛灉澶辫触涔熶笉闇�鍥炴粴 - // //if (db.Deleteable<TN_Task>() - // // .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6)) - // // .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚") - // // .ExecuteCommand() <= 0) { - // // info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触"; - // // LogHelper.Info(info); - // //} - // if (db.Deleteable<TN_Task>(oldTaskList).ExecuteCommand() <= 0 - // && db.Deleteable<TN_Task_Action>(oldTaskActionList).ExecuteCommand() <= 0) { - // info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触"; - // LogHelper.Info(info); - // } - //} } catch (Exception ex) { diff --git a/core/WCSCore.cs b/core/WCSCore.cs index d72bf4b..f0d8b90 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -446,7 +446,8 @@ if (list.Count > 0) { list.ForEach(task => { //浣跨敤鑷畾涔変换鍔℃帹閫�- TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 + //TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 + TaskProcess.SendNDCTask(task); }); } else { diff --git a/dispatch/GZRobot.cs b/dispatch/GZRobot.cs index a5306ea..dbc6847 100644 --- a/dispatch/GZRobot.cs +++ b/dispatch/GZRobot.cs @@ -28,7 +28,15 @@ var result = apiHelper.Post(baseUrl + "api/engine/tasks/iostates/", JsonConvert.SerializeObject(data)); var dataResult = JsonConvert.DeserializeObject<gzResult<IOStatesInfoResult>>(result); } - + /// <summary> + /// 鍒涘缓鍥借嚜浠诲姟 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="priority"></param> + /// <param name="param"></param> + /// <param name="ts"></param> + /// <param name="created_user"></param> + /// <returns></returns> public static int CreateOrder(string taskNo, int priority, string param, string ts = "churuku", string created_user = "hanhe") { LogHelper.Info($"CreateOrder鍙傛暟淇℃伅:taskNo:{taskNo},priority:{priority},param:{param},ts:{ts}锛宑reated_user锛歿created_user}", "API"); var msg = ""; @@ -42,11 +50,18 @@ if (response != "") { try { var dataResult = JsonConvert.DeserializeObject<gzResult<OrderInfoResult>>(response); - if (dataResult.code == 0) { + //if (dataResult.code == 0) { + // orderId = dataResult.data[0].in_order_id; + //} + + // 杩斿洖鍙傛暟涓紝code鐩墠涓嶅啀浣跨敤锛屽彲閫氳繃msg瀛楁鍒ゆ柇鏄惁鎴愬姛锛屽鏋渕sg涓衡�success鈥濆垯琛ㄧず鎴愬姛锛屽惁鍒欎负鎶ラ敊淇℃伅鎴栦笉瀛樺湪銆俬ttp code涓�22鏃跺�鐨勬姤閿欎负绯荤粺鎶ラ敊锛屽叾涓殑msg鏃犳硶鍏ㄩ儴鑾峰彇銆�+ // SELFNOTE: 鐩存帴璋冪敤HttpHelper.Post鏂规硶锛屾棤娉曡幏鍙杊eader锛屾殏鏃朵笉鑰冭檻 + if (dataResult.msg == "success") { orderId = dataResult.data[0].in_order_id; } } catch (Exception ex) { + LogHelper.InfoEx(ex); } } else { @@ -55,29 +70,13 @@ LogHelper.Info($"鍒涘缓璁㈠崟澶辫触", "API"); } - return orderId; } - public static bool CancelOrder(int orderId) { - bool result = false; - string msg = ""; - var request = new CancelOrderInfo() { order_list = new List<int>(orderId) }; - var response = apiHelper.Post(baseUrl + "api/om/order/cancel/", JsonConvert.SerializeObject(request)); - msg = $"[guozi-CancelOrder] request={request};response={response}"; - Console.WriteLine(msg); - if (response != "") { - var dataResult = JsonConvert.DeserializeObject<gzResult<CancelOrderInfoResult>>(response); - if (dataResult.code == 0) { - result = true; - } - } - else { - msg = "[guozi-CancelOrder]鍙栨秷璁㈠崟澶辫触"; - Console.WriteLine(msg); - } - return result; - } - + /// <summary> + /// 鍙栨秷鍥借嚜浠诲姟 + /// </summary> + /// <param name="orderId"></param> + /// <returns></returns> public static bool CancelGZOrder(int orderId) { bool result = false; string msg = ""; @@ -88,9 +87,18 @@ msg = $"[guozi-CancelOrder] request={requests};response={response}"; if (response != "") { var dataResult = JsonConvert.DeserializeObject<CancelGZOrderResult>(response); - if (dataResult.code == 0) { - msg = "[guozi-CancelOrder]鍙栨秷璁㈠崟鎴愬姛"; - Console.WriteLine(msg); + //if (dataResult.code == 0) { + // msg = "[guozi-CancelOrder]鍙栨秷璁㈠崟鎴愬姛"; + // Console.WriteLine(msg); + // result = true; + // return result; + //} + + // 杩斿洖鍙傛暟涓紝code鐩墠涓嶅啀浣跨敤锛屽彲閫氳繃msg瀛楁鍒ゆ柇鏄惁鎴愬姛锛屽鏋渕sg涓衡�success鈥濆垯琛ㄧず鎴愬姛锛屽惁鍒欎负鎶ラ敊淇℃伅鎴栦笉瀛樺湪銆俬ttp code涓�22鏃跺�鐨勬姤閿欎负绯荤粺鎶ラ敊锛屽叾涓殑msg鏃犳硶鍏ㄩ儴鑾峰彇銆�+ // SELFNOTE: 鐩存帴璋冪敤HttpHelper.Post鏂规硶锛屾棤娉曡幏鍙杊eader锛屾殏鏃朵笉鑰冭檻 + // 灏婇噸鏂囨。鐨勭増鏈�+ if (dataResult.msg == "success") { // 鐩墠鍙彇娑堜竴涓换鍔★紝鎴愬姛鏃犻渶鍐嶆鏌uccess_list鍜宔rror_list + Console.WriteLine("[guozi-CancelOrder]鍙栨秷璁㈠崟鎴愬姛"); result = true; return result; } @@ -101,7 +109,52 @@ } return result; } + /// <summary> + /// 鍙栨秷澶氫釜浠诲姟 + /// </summary> + /// <param name="orderIds"></param> + /// <returns></returns> + public static bool CancelGZOrders(List<int> orderIds) { + bool result = false; + string msg = ""; + List<CancelGZOrderInfo> requests = new List<CancelGZOrderInfo>(); + foreach (var id in orderIds) { + var request = new CancelGZOrderInfo() { order_id = id, order_command_type_id = 2 }; + requests.Add(request); + } + var response = apiHelper.Put(baseUrl + "api/om/order/order-command/", JsonConvert.SerializeObject(requests)); + msg = $"[guozi-CancelOrder] request={requests};response={response}"; + if (response != "") { + var dataResult = JsonConvert.DeserializeObject<CancelGZOrderResult>(response); + //if (dataResult.code == 0) { + // msg = "[guozi-CancelOrder]鍙栨秷璁㈠崟鎴愬姛"; + // Console.WriteLine(msg); + // result = true; + // return result; + //} + // 杩斿洖鍙傛暟涓紝code鐩墠涓嶅啀浣跨敤锛屽彲閫氳繃msg瀛楁鍒ゆ柇鏄惁鎴愬姛锛屽鏋渕sg涓衡�success鈥濆垯琛ㄧず鎴愬姛锛屽惁鍒欎负鎶ラ敊淇℃伅鎴栦笉瀛樺湪銆俬ttp code涓�22鏃跺�鐨勬姤閿欎负绯荤粺鎶ラ敊锛屽叾涓殑msg鏃犳硶鍏ㄩ儴鑾峰彇銆�+ // SELFNOTE: 鐩存帴璋冪敤HttpHelper.Post鏂规硶锛屾棤娉曡幏鍙杊eader锛屾殏鏃朵笉鑰冭檻 + // 灏婇噸鏂囨。鐨勭増鏈�+ if (dataResult.msg == "success") { // 鐩墠鍙彇娑堜竴涓换鍔★紝鎴愬姛鏃犻渶鍐嶆鏌uccess_list鍜宔rror_list + if (dataResult.success_list.Count == requests.Count && dataResult.error_list.Count == 0) { + Console.WriteLine("[guozi-CancelOrder]鍙栨秷璁㈠崟鎴愬姛"); + result = true; + return result; + } + else { + Console.WriteLine("[guozi-CancelOrder]鍙栨秷璁㈠崟閮ㄥ垎澶辫触" + JsonConvert.SerializeObject(dataResult.error_list)); + result = true; + return result; + } + } + } + else { + msg = "[guozi-CancelOrder]鍙栨秷璁㈠崟澶辫触"; + Console.WriteLine(msg); + } + return result; + } /// <summary> /// 璁㈠崟鐘舵�鍙嶉 @@ -173,7 +226,6 @@ public static QueryOrderResult QueryOrder(int id) { - // var result = new QueryOrderResult() { agv_list = new List<int> { 0 } }; string msg = ""; var response = apiHelper.Get(baseUrl + $"/api/om/order/{id}/"); @@ -311,7 +363,7 @@ public List<ResultInfo> error_list { get; set; } public class ResultInfo { public int order_id { get; set; } } } - public class cancle + public class Cancel { public List<success_list> success_list { get; set; } public List<error_list> error_list { get; set; } @@ -323,6 +375,7 @@ public class error_list { + public int order_id { get; set; } // 鏂拌ˉ鍏� } public class CancelGZOrderResult { @@ -330,7 +383,7 @@ public string version { get; set; } public int code { get; set; } public string msg { get; set; } - public cancle data { get; set; } + public Cancel data { get; set; } public List<int> success_list { get; set; } public List<int> error_list { get; set; } } diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index e600622..19c469f 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -109,6 +109,19 @@ /// <param name="mst"></param> internal static bool SendTask(TN_Task mst) { var result = false; + switch (mst.N_SCHEDULE_TYPE) { + case 1: //閫氳繃NDC锛宧osttoagv璋冨害璁惧 + return SendNDCTask(mst); + case 5: //閫氳繃鏉ゥ璋冨害璁惧 + return SendHanAoTask(mst); + case 3: //閫氳繃鍥借嚜璋冨害璁惧 + return SendGZTask(mst); + } + return result; + } + + public static bool SendNDCTask(TN_Task mst) { + var result = false; var start = "0"; var end = "0"; var taskType = mst.S_TYPE.Trim(); @@ -142,6 +155,57 @@ } return result; } + + public static bool SendGZTask(TN_Task mst) { + var db = new SqlHelper<object>().GetInstance(); + var result = false; + var start = "0"; var end = "0"; + var taskType = mst.S_TYPE.Trim(); + + if (mst.N_B_STATE == 0) { + //var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = mst.S_START_LOC, dst = mst.S_END_LOC }), "p2p"); + start = LocationHelper.GetAgvSite(mst.S_START_LOC); + end = LocationHelper.GetAgvSite(mst.S_END_LOC); + + var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = start, dst = end }), "p2pdst", "pgapi"); + + if (code > 0) { + //鏇存柊浠诲姟鐘舵� + mst.N_B_STATE = 1; + mst.S_B_STATE = TN_Task.GetStateStr(1); + mst.S_EQ_TASK_CODE = code.ToString(); + WCSHelper.UpdateStatus(mst); + WCSHelper.UpdateEQNo(mst); + LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + mst.S_START_LOC + "end= " + mst.S_END_LOC); + } + else { + LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(mst)); + } + } + return result; + } + + public static bool SendHanAoTask(TN_Task mst) { + var result = false; + //璋冪涓夋柟鎺ュ彛 + var model = new HanAo.TaskInfoModel { + requestPk = mst.S_CODE, + frmPos = mst.S_START_LOC, + toPos = mst.S_END_LOC, + trkType = mst.S_OP_NAME == "鍏ュ簱" ? "1" : "2", + contNo = mst.S_CNTR_CODE + }; + if (HanAo.CreateOrder(model)) { + mst.N_B_STATE = 1; + WCSHelper.UpdateStatus(mst); + LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + model.frmPos + "end= " + model.toPos); + return true; + } + else { + LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(model)); + } + return result; + } #endregion } } -- Gitblit v1.9.1