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/core/WCSCore.cs |  158 ++++++++++++++++++++++++++++------------------------
 1 files changed, 86 insertions(+), 72 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
index 895d834..41ea36e 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
@@ -21,6 +21,7 @@
 namespace HH.WCS.Mobox3.YNJT_BZP.core {
     internal class WCSCore {
         public static void OperateAgvTaskStatus(AgvTaskState model) {
+            LogHelper.Info($"AGV浠诲姟鐘舵�鍙嶉锛屽叆鍙傦細{JsonConvert.SerializeObject(model)}", "AGV");
             try
             {
                 if (string.IsNullOrEmpty(model.No))
@@ -100,10 +101,54 @@
                                         break;
                                 }
                             }
-                            else if (model.State == 2001) 
+                            else if (model.State == 1002) 
                             {
-                                //鐢宠鏂扮粓鐐�-                                string endLoc = AGVApplyEndLoc(model.No);
+                                //鏌ヨ褰撳墠缁堢偣鏄瓑寰呭尯锛屽垯鏌ヨ鍏ュ簱agv鎺ラ┏浣�+                                var waitLoc = Settings.getAgvWaitLoc(TN_Task.S_END_LOC);
+                                if (waitLoc != null)
+                                {
+                                    string endLoc = AGVApplyEndLoc(model.No);
+
+
+                                }
+
+                                //濡傛灉涓嶆槸绛夊緟鍖鸿揣浣嶏紝鍒欐煡璇㈢粓鐐硅揣浣嶆槸鍚︽槸鍏ュ簱鎺ラ┏浣�+                                var agvJBLoc = Settings.getAgvJBLoc(TN_Task.S_END_LOC);
+                                if (agvJBLoc != null && agvJBLoc.type == 1 && agvJBLoc.action == 1) 
+                                {
+                                    //鏄垯鏌ヨWCS鐨勪换鍔℃墽琛屾儏鍐�+                                    var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE ,"WCS");
+                                    if (wcsTask != null) 
+                                    {
+                                        bool existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 7);
+                                        if (existAction)
+                                        {
+                                            //濡傛灉WCS鍙嶉7鍙栨秷浠诲姟锛屽垯rfid鏍¢獙澶辫触锛岀敓鎴愭柊浠诲姟鍒板紓甯稿尯锛屽苟鍙樻洿agv浠诲姟鍙枫�璧风偣銆佺粓鐐�+                                            var mst = WMSHelper.GetWmsTask(TN_Task.S_OP_CODE);
+                                            var endLoc = WMSHelper.getErrorBufferAreaLoc();
+                                            if (endLoc != null)
+                                            {
+                                                LocationHelper.UnLockLoc(mst.S_END_LOC);
+                                                mst.S_END_LOC = endLoc.S_CODE;
+                                                mst.S_END_AREA = endLoc.S_AREA_CODE;
+
+                                                WMSHelper.UpdateTaskEnd(mst);
+                                                WCSCore.createLastTask(TN_Task.S_END_LOC, mst, 2);
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info("", "AGV");
+                                            }
+                                        }
+
+                                        existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 3);
+                                        if (existAction) 
+                                        {
+                                            //WCS鍙嶉3宸插彇璐э紝鍒檃gv浠诲姟姝e父缁撴潫
+
+                                        }
+                                    }
+                                }
                             }
                             else
                             {
@@ -213,100 +258,69 @@
         /// <param name="taskNo"></param>
         public static string AGVApplyEndLoc(string taskNo) 
         {
-            LogHelper.Info("銆恆gv鐢宠缁堢偣銆�, "AGV");
-            string endLocCode = null;
+            LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV绛夊緟鍖虹敵璇风粓鐐�, "AGV");
             var cst = WCSHelper.GetTask(taskNo);
-            if (cst != null && cst.N_B_STATE < 3) 
+            if (cst != null && cst.N_B_STATE < 3)
             {
                 var mst = WMSHelper.GetWmsTask(cst.S_OP_CODE);
-                if (mst != null && mst.N_B_STATE < 2 && mst.S_END_LOC == "铏氭嫙璐т綅") 
+                if (mst != null && mst.N_B_STATE < 2 && mst.S_END_LOC == "铏氭嫙璐т綅")
                 {
                     var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE);
-                    if (container != null) 
+                    if (container != null)
                     {
                         var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE);
                         if (endLoc != null)
                         {
                             Location agvLoc = null;
                             var locCodes = Settings.getAgvJBLocList(1, endLoc.N_ROADWAY, 1);
-                            if (locCodes.Count > 0) 
+                            if (locCodes.Count > 0)
                             {
-                                agvLoc = LocationHelper.GetLoc(locCodes[0]);
-                            }
-
-                            if (agvLoc != null && agvLoc.C_ENABLE == "Y") 
-                            {
-                                var wcsTask = WCSHelper.GetTaskByStartAndEnd(agvLoc.S_CODE);
-                                if (wcsTask == null && agvLoc.N_LOCK_STATE == 0)
+                                foreach (var locCode in locCodes)
                                 {
-                                    // 鑳庡湀鍏ュ簱锛屼笅鍙戞瘝鎷栧嚭搴撲换鍔�\ 甯樺竷銆佸唴琛叆搴擄紝涓嬪彂鎵樼洏鍥炲簱浠诲姟
-                                    if (mst.S_TYPE.Contains("鍏ュ簱"))
+                                    agvLoc = LocationHelper.GetLoc(locCode);
+                                    if (agvLoc != null && agvLoc.C_ENABLE == "Y")
                                     {
-                                        if (agvLoc.N_CURRENT_NUM == 1)
-                                        {
-                                            var locCntrRels = LocationHelper.GetLocCntr(agvLoc.S_CODE);
-                                            if (locCntrRels.Count > 0)
-                                            {
-                                                var container1 = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
-                                                if (container1.N_TYPE == 0)
-                                                {
-                                                    if (container.N_TYPE == 4 || container.N_TYPE == 5)
-                                                    {
-                                                        ApiHelper.baseTrayInStockAgv(agvLoc.S_CODE, mst.S_CODE);
-                                                    }
-                                                }
-                                                else 
-                                                {
-                                                    LogHelper.Info($"鎺ラ┏浣�{agvLoc.S_CODE},瀛樺湪闈炴瘝鎷栧鍣�, "AGV");
-                                                }
-                                            }
-                                            else 
-                                            {
-                                                LogHelper.Info($"鎺ラ┏浣�{agvLoc.S_CODE}鐨勫綋鍓嶆暟閲忎笌瀹瑰櫒鏁伴噺涓嶅尮閰�, "AGV");
-                                            }
-                                        }
-                                        else if (agvLoc.N_CURRENT_NUM == 0)
-                                        {
-                                            if (container.N_TYPE == 6)
-                                            {
-                                                ApiHelper.baseTrayOutStockAgv(agvLoc.S_CODE, mst.S_CODE);
-                                            }
-                                        }
-                                        else 
-                                        {
-                                            return endLocCode;
-                                        }
+                                        cst.S_END_LOC = agvLoc.S_CODE;
+                                        cst.S_END_AREA = agvLoc.S_AREA_CODE;
+                                        WCSHelper.UpdateTaskEnd(cst);
+
+                                        mst.S_END_LOC = endLoc.S_CODE;
+                                        mst.S_END_AREA = endLoc.S_AREA_CODE;
+                                        WMSHelper.UpdateTaskEnd(mst);
+                                        LocationHelper.LockLoc(endLoc.S_CODE, 1);
+
+                                        LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV");
+                                        return agvLoc.S_CODE;
                                     }
-                                    cst.S_END_LOC = agvLoc.S_CODE;
-                                    cst.S_END_AREA = agvLoc.S_AREA_CODE;
-                                    WCSHelper.UpdateTaskEnd(cst);
-
-                                    mst.S_END_LOC = endLoc.S_CODE;
-                                    mst.S_END_AREA = endLoc.S_AREA_CODE;
-                                    WMSHelper.UpdateTaskEnd(mst);
-
-                                    LocationHelper.LockLoc(agvLoc.S_CODE, 1);
-                                    LocationHelper.LockLoc(endLoc.S_CODE, 1);
-                                    endLocCode = agvLoc.S_CODE;
                                 }
-                                else 
-                                {
-                                    LogHelper.Info("鎺ラ┏浣嶅綋鍓嶆湁浠诲姟鏈畬鎴愶紝璇风◢绛�, "AGV");
-                                }
+
+                                LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV");
                             }
-                            else
+                            else 
                             {
-                                LogHelper.Info("娌℃湁鍙敤鐨勫叆搴撴帴椹充綅", "AGV");
+                                LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV");
                             }
                         }
-                        else 
+                        else
                         {
-                            LogHelper.Info("娌℃湁绌轰綑鐨勮揣浣�, "AGV");
+                            LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV");
                         }
                     }
+                    else 
+                    {
+                        LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟鐨勫鍣細{cst.S_CNTR_CODE}涓嶅瓨鍦�, "AGV");
+                    }
+                }
+                else 
+                {
+                    LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟宸茬敵璇风粓鐐癸紝璇峰嬁閲嶅鐢宠", "AGV");
                 }
             }
-            return endLocCode;
+            else 
+            {
+                LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟宸插畬鎴愭垨鍙栨秷", "AGV");
+            }
+            return null;
         }
 
     }

--
Gitblit v1.9.1