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

---
 api/ApiHelper.cs |  123 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 107 insertions(+), 16 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index dd1f197..285284f 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -68,6 +68,7 @@
                 var cgDetail = new TN_CG_Detail() {
                     S_ITEM_CODE = cgId,
                     S_CNTR_CODE = cntId,
+                    S_LOC_CODE = startLoc.S_CODE, // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞
                 };
 
                 startLoc.N_CURRENT_NUM = 1;
@@ -189,6 +190,7 @@
                     S_ITEM_CODE = cgId,
                     S_CNTR_CODE = cntId,
                     //S_ITEM_NAME = model.ItemName,
+                    S_LOC_CODE = startLoc.S_CODE, // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞
                 };
 
                 startLoc.N_CURRENT_NUM = 1;
@@ -422,17 +424,25 @@
                 var endLoc = new TN_Location();
                 if (cgDetail.F_QTY > 2000) {
                     // 閲嶉噺瓒呰繃2t锛屾姤閿�-                    if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo {
-                        type_name = "GET_DST",
-                        interaction_info_id = int.Parse(task.S_EQ_TASK_CODE),
-                        info_status = "error",
-                    })) {
-                        LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask");
+                    if (GZRobot.TryGetInteractionInfoId(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");
+                            //return BuildSimpleResult(7, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触");
+                        }
                     }
                     else {
-                        LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask");
+                        //return BuildSimpleResult(7, $"鑾峰彇浠诲姟{task.S_CODE}鐨刟gv interaction_info_id澶辫触锛�);
+                        LogHelper.Info($"AGV锛氳幏鍙栦换鍔task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask");
+                        //return BuildSimpleResult(8, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触");
                     }
-                    
+
                     return BuildSimpleResult(8, $"鐗╂枡閲嶉噺{cgDetail.F_QTY}瓒呰繃2t");
                 }
                 else if (cgDetail.F_QTY > 1500) {
@@ -468,16 +478,23 @@
                 task.S_END_LOC = endLoc.S_CODE;
                 LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� 
-                if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo {
-                    type_name = "GET_DST",
-                    interaction_info_id = int.Parse(task.S_EQ_TASK_CODE),
-                    info_status = "invalid",
-                    return_value = LocationHelper.GetAgvSite(task.S_END_LOC), // 鐩墠浣跨敤agvsite
-                })) {
-                    LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask");
+                if (GZRobot.TryGetInteractionInfoId(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(task.S_END_LOC), // 鐩墠浣跨敤agvsite
+                    })) {
+                        LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask");
+                    }
+                    else {
+                        LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask");
+                        return BuildSimpleResult(7, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触");
+                    }
                 }
                 else {
-                    LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask");
+                    LogHelper.Info($"AGV锛氳幏鍙栦换鍔task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask");
+                    return BuildSimpleResult(8, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触");
                 }
 
                 using (var tran = db.Ado.UseTran()) {
@@ -646,6 +663,80 @@
             }
         }
 
+        /// <summary>
+        /// 浜у搧閮ㄥ垎鍥炲簱锛堜笉鎸囧畾缁堢偣锛屽鐢級
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static SimpleResult PartInboundAuto(PartInboundInfo model) {
+            var taskName = TaskName.浜у搧閮ㄥ垎鍥炲簱;
+            var db = new SqlHelper<object>().GetInstance();
+
+            var startAreas = Settings.Areas[AreaIndex.X鍗歌揣鍖篯;
+            var endAreas = Settings.Areas[AreaIndex.H璐ф灦鍖篯;
+
+            try {
+                // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級
+                var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE));
+                if (startLoc == null) {
+                    return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�);
+                }
+
+                var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc);
+                if (locCntrRel == null) {
+                    return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡");
+                }
+
+                // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+                var endLoc = db.Queryable<TN_Location>().First(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE));
+                if (endLoc == null) {
+                    return BuildSimpleResult(4, $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�);
+                }
+
+                var cntId = locCntrRel.S_CNTR_CODE;
+                var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+                LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+
+                using (var tran = db.Ado.UseTran()) {
+                    if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new {
+                        it.N_LOCK_STATE,
+                        it.S_LOCK_STATE,
+                        it.S_LOCK_OP,
+                        it.T_MODIFY
+                    }).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildSimpleResult(500,
+                            $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}");
+                    }
+
+                    if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new {
+                        it.N_LOCK_STATE,
+                        it.S_LOCK_STATE,
+                        it.S_LOCK_OP,
+                        it.T_MODIFY
+                    }).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildSimpleResult(500,
+                            $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}");
+                    }
+
+                    if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return BuildSimpleResult(500,
+                            $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}");
+                    }
+
+                    tran.CommitTran();
+                    return BuildSimpleResult(0,
+                        $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}");
+                }
+            }
+            catch (Exception ex) {
+                return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}");
+            }
+        }
+
         public static SimpleResult CancelTask(CancelTaskInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var info = "";

--
Gitblit v1.9.1