From d0a265713fd18162f3a82bdcd22e267df7298c7b Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期一, 26 五月 2025 08:59:52 +0800
Subject: [PATCH] 印尼佳通-半制品代码逻辑优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs |  153 +++++++++++++++++++++++++++++---------------------
 1 files changed, 89 insertions(+), 64 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
index d3584ad..1afcf5a 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
@@ -11,6 +11,7 @@
 using System.Linq;
 using System.Reflection;
 using System.Security.Cryptography;
+using static HH.WCS.Mobox3.YNJT_BZP.util.Settings;
 
 namespace HH.WCS.Mobox3.YNJT_BZP.process {
     internal class TaskProcess {
@@ -67,22 +68,86 @@
         /// <param name="forkliftNo"></param>
         /// <param name="extData"></param>
         internal static void OperateReq(string no, int state, string forkliftNo, string extData) {
+            LogHelper.Info($"寮�瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state},灏忚溅鍙凤細{forkliftNo}", "AGV");
             var cst = WCSHelper.GetTask(no);
+            var mst = WMSHelper.GetWmsTask(cst.S_OP_CODE);
             var endLoc = LocationHelper.GetLoc(cst.S_END_LOC);
-            if (state == 1101) {
-                //璇锋眰鍙栬揣锛�-
-            }
-            if (state == 1102) {
-                //璇锋眰鍗歌揣锛�-                bool isCan = false;
-
-               
-                if (endLoc != null) 
+            var taskAction = WCSHelper.getActionRecord(no, state);
+            if (taskAction != null)
+            {
+                LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛屾煡璇㈣澶囨槸鍚﹀弽棣�, "AGV");
+                if (taskAction.N_S_STATUS == 1)
                 {
-                    // 1.鏌ョ湅缁堢偣璐т綅鏀捐揣鏉′欢鏄惁婊¤冻
-                    var waitLoc = Settings.getAgvWaitLoc(endLoc.S_CODE);
-                    if (waitLoc != null) 
+                    LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛岃澶囧凡鍙嶉", "AGV");
+                    NDCApi.ChangeOrderParam(no, 8, "1");
+                }
+            }
+            else
+            {
+                LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state},灏忚溅鍙凤細{forkliftNo}", "AGV");
+                bool result = false;
+                if (state == 1101)
+                {
+                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "1");  //璇锋眰鍙栬揣锛�+                }
+                if (state == 1102)
+                {
+                    //璇锋眰鍗歌揣锛�+                    var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE);
+                    // 鑳庡湀鍏ュ簱锛屼笅鍙戞瘝鎷栧嚭搴撲换鍔�\ 甯樺竷銆佸唴琛叆搴擄紝涓嬪彂鎵樼洏鍥炲簱浠诲姟
+                    if (cst.S_TYPE.Contains("鍏ュ簱") && endLoc.N_LOCK_STATE == 0)
+                    {
+                        if (container.N_TYPE != 6 )
+                        {
+                            if (endLoc.N_CURRENT_NUM == 1) 
+                            {
+                                var locCntrRels = LocationHelper.GetLocCntr(endLoc.S_CODE);
+                                if (locCntrRels != null && locCntrRels.Count > 0)
+                                {
+                                    var container1 = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
+                                    if (container1.N_TYPE == 0)
+                                    {
+                                        LogHelper.Info("闈炶儙鍦堝叆搴擄紝鎺ラ┏浣嶅瓨鍦ㄦ瘝鎷栵紝涓嬪彂姣嶆嫋鍏ュ簱浠诲姟", "AGV");
+                                        ApiHelper.baseTrayInStockAgv(endLoc.S_CODE, mst.S_CODE);
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                result = true;
+                            }
+                        }
+
+                        // 鑳庡湀鍏ュ簱
+                        if (container.N_TYPE == 6 )
+                        {
+                            if (endLoc.N_CURRENT_NUM == 0) 
+                            {
+                                LogHelper.Info("鑳庡湀鍏ュ簱锛屾帴椹充綅缂哄皯姣嶆嫋锛屼笅鍙戞瘝鎷栧嚭搴撲换鍔�, "AGV");
+                                ApiHelper.baseTrayOutStockAgv(endLoc.S_CODE, mst.S_CODE);
+                            }
+                            else if (endLoc.N_CURRENT_NUM == 1) 
+                            {
+                                var locCntrRels = LocationHelper.GetLocCntr(endLoc.S_CODE);
+                                if (locCntrRels != null && locCntrRels.Count > 0)
+                                {
+                                    var container1 = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
+                                    if (container1.N_TYPE == 0)
+                                    {
+                                        result = true;
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                    // 璇锋眰WCS鏄惁鍏佽鏀捐揣
+                    if (result) 
+                    {
+                        result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "2"); // 璇锋眰鏀捐揣
+                    }
+
+                    if (result)
                     {
                         //鏍规嵁缁堢偣鍒ゆ柇锛屾槸cb02鐨勫叆鍙o紝鍒ゆ柇鍐呭瓨涓姸鎬侊紙瑕佺姸鎬佹椂闂达級锛屽厑璁稿嵏璐э紝閫氱煡agv鏀瑰弬鏁�                         var dic = new Dictionary<string, string>();
@@ -91,64 +156,24 @@
                         dic.Add("ParamNo", "8");
                         dic.Add("Param1", "1");
                         NDC.ChangeOrder(dic);
+                        //鏀瑰畬鍙傛暟杞﹀瓙灏变細鑷繁鍗歌揣
                     }
-                    else
-                    {
-                        var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE);
-                        if (container != null && container.N_TYPE == 6)
-                        {
-                            isCan = false;
-                            var locCntrs = LocationHelper.GetLocCntr(endLoc.S_CODE);
-                            if (endLoc.N_CURRENT_NUM == 1 && locCntrs.Count > 0)
-                            {
-                                var container1 = ContainerHelper.GetCntr(locCntrs[0].S_CNTR_CODE);
-                                if (container1.N_TYPE == 0)
-                                {
-                                    isCan = true;
-                                }
-                            }
-                            if (!isCan)
-                            {
-                                LogHelper.Info("鑳庡湀璇锋眰鏀捐揣澶辫触锛屾瘝鎷栨病鏈夊埌浣�, "AGV");
-                            }
-                        }
-                    }
-
-                    // 2.鏌ヨ杈撻�绾�鏄惁鍏佽鏀捐揣
-
                 }
-
-                if (isCan)
+                if (state == 1103)
                 {
-                    //鏍规嵁缁堢偣鍒ゆ柇锛屾槸cb02鐨勫叆鍙o紝鍒ゆ柇鍐呭瓨涓姸鎬侊紙瑕佺姸鎬佹椂闂达級锛屽厑璁稿嵏璐э紝閫氱煡agv鏀瑰弬鏁�-                    var dic = new Dictionary<string, string>();
-                    //< Req >< Order No = 'TN2302020002' ParamNo = '18' Param1 = '12' /></ Req >
-                    dic.Add("No", no);
-                    dic.Add("ParamNo", "8");
-                    dic.Add("Param1", "1");
-                    NDC.ChangeOrder(dic);
-                    //鏀瑰畬鍙傛暟杞﹀瓙灏变細鑷繁鍗歌揣
+                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "3");  //鍙栬揣瀹屾垚鍏佽绂诲紑
                 }
-            }
-            if (state == 1103) 
-            {
-                // 鍙栬揣瀹屾垚璇锋眰绂诲紑
-                // 瀹夊叏閫�嚭
-                // 鑳庡湀鍑哄簱锛屼笅鍙戞瘝鎷栧洖搴撲换鍔�-                var locCntrRels = LocationHelper.GetLocCntrRel(cst.S_START_LOC);
-                if (locCntrRels.Count > 0) 
+                if (state == 1104)
                 {
-                    var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
-                    if (container != null && container.N_TYPE == 0) 
-                    {
-                        ApiHelper.baseTrayInStockAgv(cst.S_START_LOC, cst.S_OP_CODE);
-                    }
+                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "4");  //鏀捐揣瀹屾垚鍏佽绂诲紑
                 }
-            }
-            if (state == 1104)
-            {
-                // 鏀捐揣瀹屾垚璇锋眰绂诲紑
 
+                // 瀹夊叏璇锋眰鍙戦�鎴愬姛锛屾坊鍔犱换鍔″姩浣滆褰�+                if (result)
+                {
+                    WCSHelper.AddActionRecord(no, state, forkliftNo, extData);
+                    LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰鎴愬姛", "AGV");
+                }
             }
         }
 

--
Gitblit v1.9.1