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