From cd92df8b7b383a6a3218f50b3b62264db8332899 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期三, 14 五月 2025 17:21:49 +0800
Subject: [PATCH] 引入NETSDKCS,修复版本兼容问题;完成拍照逻辑开发,跑通待调试

---
 Services/AgvService.cs |  147 ++++++++++++++++++++++++++++---------------------
 1 files changed, 84 insertions(+), 63 deletions(-)

diff --git a/Services/AgvService.cs b/Services/AgvService.cs
index 50d342f..2cbf5b8 100644
--- a/Services/AgvService.cs
+++ b/Services/AgvService.cs
@@ -14,6 +14,7 @@
 using static HH.WCS.Mobox3.AnGang.Dtos.Response.AgvResponse;
 using HH.WCS.Mobox3.AnGang.Consts;
 using HH.WCS.Mobox3.AnGang.Dispatch;
+using HH.WCS.Mobox3.AnGang.Devices;
 
 namespace HH.WCS.Mobox3.AnGang.Services {
     public class AgvService {
@@ -22,8 +23,8 @@
             try {
                 switch (model.state) {
                     case 1023:
+                        break;
                     case 1025:
-
                         break;
                     case 1012:
                         break;
@@ -83,10 +84,17 @@
                 case AgvStateCode.鍙栬揣瀹屾垚:
                     WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
 
-                    // TODO 鎷嶇収
+                    var captureTask = Task.Run(() => {
+                        if (TN_Task.S_TYPE == TaskName.璐у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) {
+                            CapturePic(TN_Task);
+                        }
+                    });
 
                     var setEndLocTask = Task.Run(() => {
-                        SetEndLoc(TN_Task);
+                        // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛�+                        if (TN_Task.S_TYPE == "浜у搧鍏ュ簱(PDA)") {
+                            SetEndLoc(TN_Task);
+                        }
                     });
 
                     TaskHelper.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣
@@ -113,80 +121,93 @@
             return true;
         }
 
+        public static void CapturePic(TN_Task model) {
+            var db = DbHelper.GetDbClient();
+
+            var filepath = SnapManager.GetCapturePicturePath();
+            if (string.IsNullOrEmpty(filepath)) {
+                return;
+            }
+
+            if (db.Updateable<TN_CG_Detail>()
+                .SetColumns(d => d.S_IMG_URL == filepath)
+                .Where(d => d.S_CNTR_CODE == model.S_CNTR_CODE).ExecuteCommand() <= 0) {
+
+                LogHelper.Info($"鍥剧墖URL '{filepath}' 鍐欏叆鏁版嵁搴撳け璐�);
+                return;
+            }
+        }
+
         public static void SetEndLoc(TN_Task tn_task) {
-            // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛�-            if (tn_task.S_TYPE == "浜у搧鍏ュ簱(PDA)") {
+            var db = DbHelper.GetDbClient();
+            var endLoc = new TN_Location();
 
-                var db = DbHelper.GetDbClient();
-                var endLoc = new TN_Location();
+            var data = GZRobot.CustomBuf();
+            var weight = float.Parse(data[0].parameter_varchar200_up);
+            tn_task.F_WEIGHT = weight;
 
-                var data = GZRobot.CustomBuf();
-                var weight = float.Parse(data[0].parameter_varchar200_up);
-                tn_task.F_WEIGHT= weight;
+            // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣嶏紝鍚﹀垯浜ょ粰浜哄伐鍐冲畾
+            if (tn_task.S_END_AREA != "") {
+                if (weight > 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_HEIGHT <= 3);
+                }
+                else if (weight > 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);
+                }
+                else {
+                    // 娌℃湁鎺ユ敹鍒伴噸閲忥紝鎴栭噸閲忓嚭閿�+                    endLoc = null;
+                    LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{weight}");
+                    return;
+                }
 
-                // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣嶏紝鍚﹀垯浜ょ粰浜哄伐鍐冲畾
-                if (tn_task.S_END_AREA != "") {
-                    if (weight > 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_HEIGHT <= 3);
-                    }
-                    else if (weight > 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);
-                    }
-                    else {
-                        // 娌℃湁鎺ユ敹鍒伴噸閲忥紝鎴栭噸閲忓嚭閿�-                        endLoc = null;
-                        LogHelper.Info($"閿欒鐨勯噸閲忎俊鎭細{weight}");
-                        return;
-                    }
+                // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾
+                if (endLoc == null) {
+                    tn_task.S_END_AREA = "";
+                    tn_task.S_END_LOC = "";
 
-                    // 濡傛灉娌℃湁绗﹀悎鏉′欢鐨勮揣浣嶏紝缃┖锛岀瓑寰匬DA閲嶆柊纭畾
-                    if (endLoc == null) {
-                        tn_task.S_END_AREA = "";
-                        tn_task.S_END_LOC = "";
+                    // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area
 
-                        // 涓嶉渶瑕佸啀缁橤Z AGV浼犵┖鍊硷紝涓�紑濮嬪氨娌$粰鍏蜂綋璐т綅锛屽彧缁欎簡Area
+                    //var request = new UpdateInteractInfo {
+                    //    interaction_info_id = 3, // 鏇存敼缁堢偣淇℃伅
+                    //    info_status = "active",
+                    //    return_value = "",
+                    //};
 
-                        //var request = new UpdateInteractInfo {
-                        //    interaction_info_id = 3, // 鏇存敼缁堢偣淇℃伅
-                        //    info_status = "active",
-                        //    return_value = "",
-                        //};
+                    //GZRobot.UpdateInteractInfo(request);
 
-                        //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 })
+                            .ExecuteCommand() > 0) {
+                            //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� 
-                        using (var trans = db.Ado.UseTran()) {
-                            if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT })
-                                .ExecuteCommand() > 0) {
-                                //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�-
-                                trans.CommitTran();
-                                LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
-                            }
-                            else {
-                                trans.RollbackTran();
-                                LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
-                            }
+                            trans.CommitTran();
+                            LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
+                        }
+                        else {
+                            trans.RollbackTran();
+                            LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣鏋跺拰璐т綅涓虹┖");
                         }
                     }
-                    else {
-                        // 鎵惧埌鍚堥�鐨勮揣浣嶏紝鎺ㄩ�
-                        tn_task.S_END_LOC = endLoc.S_CODE;
+                }
+                else {
+                    // 鎵惧埌鍚堥�鐨勮揣浣嶏紝鎺ㄩ�
+                    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})
-                                .ExecuteCommand() > 0) {
-                                LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+                    using (var trans = db.Ado.UseTran()) {
+                        if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC, it.F_WEIGHT })
+                            .ExecuteCommand() > 0) {
+                            LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� 
-                                trans.CommitTran();
-                                LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.S_SHELF_CODE}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
-                            }
-                            else {
-                                trans.RollbackTran();
+                            trans.CommitTran();
+                            LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.S_SHELF_CODE}锛屼慨鏀圭粓鐐逛綅缃负 {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.S_SHELF_CODE}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}");
                         }
                     }
                 }

--
Gitblit v1.9.1