From ef839d119eec2c28fac5f5ba175d71f926afae44 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期二, 20 五月 2025 11:49:22 +0800
Subject: [PATCH] 修复数据库表字段不匹配、读取重量错误处理等逻辑

---
 Services/AgvService.cs |   70 +++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/Services/AgvService.cs b/Services/AgvService.cs
index 5ce5195..5a2cd96 100644
--- a/Services/AgvService.cs
+++ b/Services/AgvService.cs
@@ -46,7 +46,7 @@
 
                 result.ResultCode = 0;
                 result.ResultMsg = "success";
-                LogHelper.Info(result.ResultMsg, "API");
+                LogHelper.Info(result.ResultMsg + $": state {model.state}", "API");
                 return result;
             }
             catch (Exception ex) {
@@ -85,14 +85,14 @@
                     WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
 
                     var captureTask = Task.Run(() => {
-                        if (TN_Task.S_TYPE == TaskName.璐у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) {
+                        if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) {
                             CapturePic(TN_Task);
                         }
                     });
 
                     var setEndLocTask = Task.Run(() => {
                         // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛�-                        if (TN_Task.S_TYPE == "浜у搧鍏ュ簱(PDA)") {
+                        if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱) {
                             SetEndLoc(TN_Task);
                         }
                     });
@@ -126,6 +126,7 @@
 
             var filepath = SnapManager.GetCapturePicturePath();
             if (string.IsNullOrEmpty(filepath)) {
+                LogHelper.Info("鍥剧墖鍦板潃涓虹┖");
                 return;
             }
 
@@ -140,50 +141,73 @@
 
         public static void SetEndLoc(TN_Task tn_task) {
             var db = DbHelper.GetDbClient();
-            var endLoc = new TN_Location();
+            var endLoc = db.Queryable<TN_Location>()
+                .First(a => a.S_CODE == tn_task.S_END_LOC);
+
+            // 濡傛灉宸茬粡璁剧疆鐨勭粓鐐硅揣浣嶏紝灏变笉瑕佸啀杩涘叆杩欎釜娴佺▼
+            if (endLoc != null) {
+                LogHelper.Info("宸茬粡璁剧疆浜嗙粓鐐硅揣浣嶏細" + JsonConvert.SerializeObject(endLoc));
+                return;
+            }
+
+            var cgDetail = db.Queryable<TN_CG_Detail>()
+                .Where(d => d.S_CNTR_CODE == tn_task.S_CNTR_CODE).First();
+
+            if (cgDetail == null) {
+                LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氬綋鍓嶄换鍔$殑鎵樼洏鍙峰湪鐗╂枡琛ㄤ腑涓嶅瓨鍦�);
+                return;
+            }
 
             var data = GZRobot.CustomBuf();
 
             if (data.Count == 0) {
                 LogHelper.Info("璁剧疆缁堢偣璐т綅澶辫触锛氭病鏈夋帴鍙楀埌鏉ヨ嚜鍥借嚜AGV鐨勯噸閲忎俊鎭�);
-
-                //return;
+                //return; // TODO 姝e紡杩愯鏈夊浗鑷狝GV鐨勬椂鍊欐仮澶�             }
             else {
                 var weight = float.Parse(data[0].parameter_varchar200_up);
-                tn_task.F_WEIGHT = weight;
+                cgDetail.F_QTY = weight;
 
-                if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => it.F_WEIGHT).ExecuteCommand() <= 0) {
-                    LogHelper.Info("淇敼Task閲嶉噺澶辫触");
+                if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => it.F_QTY).ExecuteCommand() <= 0) {
+                    LogHelper.Info("淇敼鐗╂枡琛ㄩ噸閲忓け璐�);
                     return;
                 }
             }
 
             // 缁堢偣璐ф灦涓虹┖鏃讹紝涓嶅垽鏂紝浜ょ粰浜哄伐澶勭悊
-            if (tn_task.S_END_AREA == "") {
+            if (tn_task.S_END_LOC == "0") {
                 LogHelper.Info("缁堢偣璐ф灦涓虹┖锛屼笉澶勭悊");
+                return;
+            }
+
+            if (!int.TryParse(tn_task.S_END_LOC.Trim(), out int row)) {
+                LogHelper.Info($"缁堢偣璐ф灦鍙�'{tn_task.S_END_LOC}' 鏃犳硶杞垚鏁板瓧");
+                return;
             }
 
             // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣�-            if (tn_task.F_WEIGHT > 1500) {
+            if (cgDetail.F_QTY > 1500) {
                 // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-3灞傝揣鏋�-                endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0 && a.N_LAYER <= 3);
+                endLoc = db.Queryable<TN_Location>()
+                    .First(a => a.N_ROW == row && a.N_LAYER <= 3
+                    && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y");
             }
-            else if (tn_task.F_WEIGHT > 0) {
+            else if (cgDetail.F_QTY > 0) {
                 // 閲嶉噺鏈秴杩�.5t锛屽湪鎸囧畾璐ф灦闅忎究閫夋嫨1涓�-                endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0);
+                endLoc = db.Queryable<TN_Location>().First(a => a.N_ROW == row
+                    && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y");
             }
             else {
                 // 娌℃湁鎺ユ敹鍒伴噸閲忥紝鎴栭噸閲忓嚭閿�                 endLoc = null;
-                LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{tn_task.F_WEIGHT}");
+                LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{cgDetail.F_QTY}");
                 return;
             }
 
             // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾
             if (endLoc == null) {
-                tn_task.S_END_AREA = "";
-                tn_task.S_END_LOC = "";
+                tn_task.S_END_AREA = "HJQ";
+                tn_task.S_END_LOC = "0";
 
                 // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area
 
@@ -196,16 +220,16 @@
                 //GZRobot.UpdateInteractInfo(request);
 
                 using (var trans = db.Ado.UseTran()) {
-                    if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT })
+                    if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC })
                         .ExecuteCommand() > 0) {
                         //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� 
                         trans.CommitTran();
-                        LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
+                        LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�);
                     }
                     else {
                         trans.RollbackTran();
-                        LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
+                        LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�);
                     }
                 }
             }
@@ -214,17 +238,17 @@
                 tn_task.S_END_LOC = endLoc.S_CODE;
 
                 using (var trans = db.Ado.UseTran()) {
-                    if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT })
+                    if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC })
                         .ExecuteCommand() > 0) {
                         LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� 
                         trans.CommitTran();
-                        LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.S_SHELF_CODE}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
+                        LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
                     }
                     else {
                         trans.RollbackTran();
 
-                        LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼澶辫触锛岀粓鐐硅揣鏋朵负 {endLoc.S_SHELF_CODE}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
+                        LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼澶辫触锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
                     }
                 }
             }

--
Gitblit v1.9.1