From b928a2f0011fc867d7d219cfff4b764250f5b778 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期三, 09 七月 2025 17:03:08 +0800
Subject: [PATCH] 修复查交互表更新终点的流程,添加绑定货位写入物料明细表

---
 core/WCSCore.cs |   98 ++++++++++++++++++++++++++++--------------------
 1 files changed, 57 insertions(+), 41 deletions(-)

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index 4718d04..6363369 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -19,7 +19,7 @@
         public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) {
             var result = new ReturnResult();
             try {
-                if (model.state > 0 && model.state < 1000) {
+                if (model.state > 0) {
                     // AGV 鎵ц浠诲姟鐨勯�杈戝鐞�                     if (!AgvTaskProcessOk(model)) {
                         // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�@@ -164,10 +164,12 @@
 
                 if (data.Count == 0) {
                     LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�);
-                    //return; // TODO 姝e紡杩愯鏈夊浗鑷狝GV鐨勬椂鍊欐仮澶�+                    //cgDetail.F_QTY = 0; // 涓嶈缃负绌猴紝渚夸簬娴嬭瘯鏃堕鍏堣缃竴涓甯稿�
                 }
                 else {
-                    var weight = float.Parse(data[0].parameter_varchar200_up);
+                    var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1];
+
+                    var weight = float.Parse(weight_str);
                     cgDetail.F_QTY = weight;
                     tn_task.F_WEIGHT = weight;
 
@@ -204,12 +206,32 @@
                     return;
                 }
 
+                //row -= 100; // 111-118 => 1-8
+
                 // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣�                 if (cgDetail.F_QTY > 2000) {
                     // 閲嶉噺瓒呰繃 2t 
                     endLoc = null;
                     LogHelper.Info("閲嶉噺瓒呰繃2t锛屼笉鍏佽鍏ュ簱");
-                    return;
+
+                    // 浼犻�缁欏浗鑷狝GV
+                    if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id1)) {
+                        if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo {
+                            type_name = "GET_DST",
+                            interaction_info_id = id1,
+                            info_status = "error",
+                        })) {
+                            LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask");
+                        }
+                        else {
+                            LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask");
+                        }
+                    }
+                    else {
+                        LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask");
+                    }
+
+                    return; // 瓒呴噸浼氳嚜宸眗eturn锛屽鏋滃浗鑷猘gv娌℃帴鍙楀埌涔熶笉闇�鎻愬墠return
                 }
                 else if (cgDetail.F_QTY > 1500) {
                     // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-2灞傝揣鏋�@@ -232,18 +254,17 @@
 
                 // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾
                 if (endLoc == null) {
-                    tn_task.S_END_AREA = Settings.Areas[1][0]; // HJQ
+                    tn_task.S_END_AREA = Settings.Areas[AreaIndex.H璐ф灦鍖篯[0]; // HJQ
                     tn_task.S_END_LOC = "0";
 
                     // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area
-
                     //var request = new UpdateInteractInfo {
                     //    interaction_info_id = 3, // 鏇存敼缁堢偣淇℃伅
                     //    info_status = "active",
                     //    return_value = "",
                     //};
-
                     //GZRobot.UpdateInteractInfo(request);
+
                     if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC })
                             .ExecuteCommand() > 0) {
                         //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�@@ -258,6 +279,26 @@
                     tn_task.S_END_LOC = endLoc.S_CODE;
 
                     LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+
+                    // 浼犻�缁欏浗鑷狝GV
+                    if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id2)) {
+                        if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo {
+                            type_name = "GET_DST",
+                            interaction_info_id = id2,
+                            info_status = "invalid",
+                            return_value = LocationHelper.GetAgvSite(tn_task.S_END_LOC), // 鐩墠浣跨敤agvsite
+                        })) {
+                            LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask");
+                        }
+                        else {
+                            LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask");
+                            return;
+                        }
+                    }
+                    else {
+                        LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask");
+                        return;
+                    }
 
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC })
@@ -304,8 +345,9 @@
                     LogHelper.Info("鏇存柊鐗╂枡閲嶉噺澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�);
                     return;
                 }
+                var weight_str = data[0].parameter_varchar200_up.Split(';')[1].Split('-')[1];
 
-                var weight = float.Parse(data[0].parameter_varchar200_up);
+                var weight = float.Parse(weight_str);
                 cgDetail.F_QTY = weight;
 
                 if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) {
@@ -337,8 +379,6 @@
                 {
                     //浣跨敤鑷畾涔変换鍔℃帹閫�                     TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧
-                    //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧
-
                 });
             }
             else
@@ -347,37 +387,13 @@
             }
         }
 
-        public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) {
-            var gzResult = new ReturnResult();
-            //var db = new SqlHelper<object>().GetInstance();
-            //ModbusHelper.Relink();
-
-            //var productionLineInfo = Settings.ProductionLines[0];
-            //var prodLineDevice = new ProductionLineDevice(productionLineInfo.PlcIp, productionLineInfo.PlcPort);
-            //if (!prodLineDevice.LoadDeviceStateOk()) {
-            //    LogHelper.Info("鍔犺浇璁惧淇℃伅澶辫触");
-            //}
-
-            //var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no);
-            //if (tn_task == null) {
-            //    LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�);
-            //}
-
-            //if (prodLineDevice.SystemState == 1
-            //    && prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == "鎴愬搧鑳朵笅绾�鎵樼洏(WMS)") {
-            //    if (!prodLineDevice.SetAgvPicking(1)) {
-            //        LogHelper.Info("鍐欏叆杈撻�绾�PLC 澶辫触");
-            //    }
-            //}
-
-            //if (prodLineDevice.SystemState == 1
-            //    && prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == "绌烘墭鐩樹笂绾�WMS)") {
-            //    if (!prodLineDevice.SetAgvPlacingPallet(1)) {
-            //        LogHelper.Info("鍐欏叆杈撻�绾�PLC 澶辫触");
-            //    }
-            //}
-
-            //LogHelper.Info(JsonConvert.SerializeObject(prodLineDevice, Formatting.Indented));
+        // DOC 4.	绔欏彴鐢宠瀹夊叏浜や簰 RCS->WMS
+        public static gzResult SafetyInteraction(SafetyInteractionInfo model) {
+            var gzResult = new gzResult() {
+                code = 0,
+                msg = "success"
+            };
+            // 鐩墠璇ラ」鐩病鏈夌珯鍙板畨鍏ㄤ氦浜掔殑鍔熻兘
             return gzResult;
         }
     }

--
Gitblit v1.9.1