From d42ad8b01195def2a9309930e14f90ff13ad47b1 Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期四, 19 六月 2025 17:24:28 +0800
Subject: [PATCH] 印尼佳通出入库策略优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs |  191 +++++++++++++++++++++++++++++------------------
 1 files changed, 118 insertions(+), 73 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..5aaec1e 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,8 @@
 using System.Linq;
 using System.Reflection;
 using System.Security.Cryptography;
+using static HH.WCS.Mobox3.YNJT_BZP.util.Settings;
+using static HH.WCS.Mobox3.YNJT_BZP.dispatch.WCSDispatch;
 
 namespace HH.WCS.Mobox3.YNJT_BZP.process {
     internal class TaskProcess {
@@ -41,7 +43,6 @@
         internal static void CacheBitCancelUpdate(WCSTask mst) {
             //浠诲姟鍙栨秷锛屽彇璐у畬鎴愬墠鐨勶紝璧风偣鐨刲oadingCount鍜岀粓鐐箄nLoadingCount閮芥竻闄わ紝鍙栬揣瀹屾垚鐨勫彧澶勭悊缁堢偣
             if (WCSHelper.CheckActionRecordExist(mst.S_CODE, 4) ) {
-                //鏍规嵁瀹㈡埛鐜板満瑕佹眰锛屽鏋滃彇璐у畬鎴愪换鍔″け璐ヤ汉宸ユ媺鍒扮粓鐐癸紝鎴戜滑灏卞綋鍗歌揣瀹屾垚澶勭悊锛涘鏋滄槸浜哄伐鎷夎蛋鍒板叾瀹冨尯鍩燂紝鎴戜滑灏辫В閿佺粓鐐癸紝鍒犻櫎鎵樼洏銆�                 //缁堢偣缁戝畾
                 if (!WCSHelper.CheckActionRecordExist(mst.S_CODE, 5)) {
                     CacheBitUpdate(mst, false);
@@ -52,9 +53,6 @@
                 //璧风偣缁堢偣瑙i攣
                 LocationHelper.UnLockLoc(mst.S_START_LOC);
                 LocationHelper.UnLockLoc(mst.S_END_LOC);
-                //璐т綅瀹瑰櫒瑙g粦
-                LocationHelper.UnBindingLoc(mst.S_START_LOC, new List<string> { mst.S_CNTR_CODE });
-
             }
 
         }
@@ -67,88 +65,116 @@
         /// <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, 6, "1");*/
+                }
+            }
+            else
+            {
+                LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state},灏忚溅鍙凤細{forkliftNo}", "AGV");
+                bool result = false;
+                if (state == 1101)
+                {
+                    LogHelper.Info("鍚慦CS鍙戦�鍙栬揣鐢宠淇″彿", "AGV");
+                    /*result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "1");  //鍙栬揣鐢宠锛�/
+                    result = true;
+                }
+                if (state == 1102)
+                {
+                    LogHelper.Info("鍚慦CS鍙戦�鍙栬揣瀹屾垚瀹夊叏閫�嚭淇″彿", "AGV");
+                    var locCntrRels = LocationHelper.GetLocCntr(cst.S_START_LOC);
+                    if (locCntrRels.Count == 1) 
                     {
-                        //鏍规嵁缁堢偣鍒ゆ柇锛屾槸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);
-                    }
-                    else
-                    {
-                        var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE);
-                        if (container != null && container.N_TYPE == 6)
+                        var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
+                        if (container != null && container.N_TYPE == 0) 
                         {
-                            isCan = false;
-                            var locCntrs = LocationHelper.GetLocCntr(endLoc.S_CODE);
-                            if (endLoc.N_CURRENT_NUM == 1 && locCntrs.Count > 0)
+                            LogHelper.Info("鍙栬揣瀹屾垚鍚庯紝璧风偣璐т綅瀛樺湪姣嶆嫋锛屼笅鍙戞瘝鎷栧叆搴撲换鍔�, "AGV");
+                            ApiHelper.baseTrayInStock(cst.S_START_LOC, mst.S_CODE);
+                        }
+                    }
+                    /*result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "2");  //鍙栬揣瀹屾垚瀹夊叏閫�嚭*/
+                    result = true;
+                }
+                if (state == 1103)   //鍗歌揣鐢宠锛�+                {
+                    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 container1 = ContainerHelper.GetCntr(locCntrs[0].S_CNTR_CODE);
-                                if (container1.N_TYPE == 0)
+                                var locCntrRels = LocationHelper.GetLocCntr(endLoc.S_CODE);
+                                if (locCntrRels != null && locCntrRels.Count > 0)
                                 {
-                                    isCan = true;
+                                    var container1 = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
+                                    if (container1.N_TYPE == 0)
+                                    {
+                                        LogHelper.Info("闈炶儙鍦堝叆搴擄紝鎺ラ┏浣嶅瓨鍦ㄦ瘝鎷栵紝涓嬪彂姣嶆嫋鍏ュ簱浠诲姟", "AGV");
+                                        ApiHelper.autoBaseTrayInStock(endLoc.S_CODE, mst.S_CODE);
+                                    }
                                 }
                             }
-                            if (!isCan)
+                            else
                             {
-                                LogHelper.Info("鑳庡湀璇锋眰鏀捐揣澶辫触锛屾瘝鎷栨病鏈夊埌浣�, "AGV");
+                                result = true;
+                            }
+                        }
+                        else 
+                        { 
+                            // 鑳庡湀鍏ュ簱
+                            if (endLoc.N_CURRENT_NUM == 0) 
+                            {
+                                LogHelper.Info("鑳庡湀鍏ュ簱锛屾帴椹充綅缂哄皯姣嶆嫋锛屼笅鍙戞瘝鎷栧嚭搴撲换鍔�, "AGV");
+                                ApiHelper.autoBaseTrayOutStock(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;
+                                    }
+                                }
                             }
                         }
                     }
 
-                    // 2.鏌ヨ杈撻�绾�鏄惁鍏佽鏀捐揣
-
-                }
-
-                if (isCan)
-                {
-                    //鏍规嵁缁堢偣鍒ゆ柇锛屾槸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);
-                    //鏀瑰畬鍙傛暟杞﹀瓙灏变細鑷繁鍗歌揣
-                }
-            }
-            if (state == 1103) 
-            {
-                // 鍙栬揣瀹屾垚璇锋眰绂诲紑
-                // 瀹夊叏閫�嚭
-                // 鑳庡湀鍑哄簱锛屼笅鍙戞瘝鎷栧洖搴撲换鍔�-                var locCntrRels = LocationHelper.GetLocCntrRel(cst.S_START_LOC);
-                if (locCntrRels.Count > 0) 
-                {
-                    var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
-                    if (container != null && container.N_TYPE == 0) 
+                    // 璇锋眰WCS鏄惁鍏佽鏀捐揣
+                    if (result) 
                     {
-                        ApiHelper.baseTrayInStockAgv(cst.S_START_LOC, cst.S_OP_CODE);
+                        LogHelper.Info("鍚慦CS鍙戦�璇锋眰鏀捐揣淇″彿", "AGV");
+                        /*result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "3"); // 璇锋眰鏀捐揣*/
+                        result = true;
                     }
                 }
-            }
-            if (state == 1104)
-            {
-                // 鏀捐揣瀹屾垚璇锋眰绂诲紑
+               
+                if (state == 1104)
+                {
+                    LogHelper.Info("鍚慦CS鍙戦�鍗歌揣瀹屾垚瀹夊叏閫�嚭淇″彿", "AGV");
+                    /*result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "4");  //鍗歌揣瀹屾垚瀹夊叏閫�嚭*/
+                    result = true;
+                }
 
+                // 瀹夊叏璇锋眰鍙戦�鎴愬姛锛屾坊鍔犱换鍔″姩浣滆褰�+                if (result)
+                {
+                    LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰鎴愬姛", "AGV");
+                }
             }
         }
 
@@ -197,7 +223,6 @@
             if (mst.N_B_STATE == 0) {
                 var startLoc = LocationHelper.GetLocation(mst.S_START_LOC);
                 var endLoc = LocationHelper.GetLocation(mst.S_END_LOC);
-
                 if (mst.S_SCHEDULE_TYPE == "AGV") 
                 {
                     AddOrderNewModel model = new AddOrderNewModel() 
@@ -208,9 +233,19 @@
                     };
                     List<Param> paramList = new List<Param>();
                     var dic = new Dictionary<string, string>();
+                    dic.Add("IKey", mst.S_CODE);
                     dic.Add("From", startLoc.S_CODE);
                     dic.Add("To", endLoc.S_CODE);
-
+                    dic.Add("FUNC", "0");
+                    if (mst.S_TYPE.Contains("鍏ュ簱"))
+                    {
+                        dic.Add("DATA", "300");
+                    }
+                    else 
+                    {
+                        dic.Add("DATA", "0");
+                    }
+                    dic.Add("Ctype", "0");
                     foreach (var item in dic)
                     {
                         Param param = new Param
@@ -220,7 +255,8 @@
                         };
                         paramList.Add(param);
                     }
-                    model.paramList = paramList;
+                    model.param = paramList;
+                    LogHelper.Info($"鍚慉GV涓嬪彂浠诲姟锛屼换鍔″弬鏁帮細{model}", "WMS");
                     var res = NDCApi.AddOrderNew(model);
                     if (res != null && res.err_code == 0 || true)
                     {
@@ -232,8 +268,17 @@
                 }
                 else if (mst.S_SCHEDULE_TYPE == "WCS") 
                 {
-
-                    if (true)
+                    SendTaskModel sendTask = new SendTaskModel()
+                    {
+                        taskNo = mst.S_CODE,
+                        taskType = mst.S_TYPE.Contains("鍏ュ簱") ? "1" : "2",
+                        from = mst.S_START_LOC,
+                        to = mst.S_END_LOC,
+                        cntrNo = mst.S_CNTR_CODE,
+                    };
+                    LogHelper.Info($"鍚慦CS涓嬪彂浠诲姟锛屼换鍔″弬鏁帮細{sendTask}", "WMS");
+                    var bo = WCSDispatch.sendTask(sendTask);
+                    if (true || bo)
                     {
                         //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇
                         mst.N_B_STATE = 1;

--
Gitblit v1.9.1