From 01cc5773457f68274ef1b2d9d9daca8983761828 Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期四, 05 六月 2025 17:33:03 +0800
Subject: [PATCH] 佳通bug优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs |  310 +++++++++++++++++++++++----------------------------
 1 files changed, 140 insertions(+), 170 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
index 3f325f8..27e6ed6 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -194,96 +194,14 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                Location startLoc = WMSHelper.GetEmptyTrayStartLoc(model.trayType);
-                Location middleLoc = null;
-                string cntrCode = "";
-                string descCntrCode = "";
-                if (startLoc != null) 
+                EmptyTrayBuffer buffer = new EmptyTrayBuffer() 
                 {
-                    // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�-                    var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE);
-                    if (locCntrRels.Count > 0)
-                    {
-                        foreach (var item in locCntrRels)
-                        {
-                            var container = ContainerHelper.GetCntr(item.S_CNTR_CODE);
-                            if (model.trayType == container.N_TYPE) 
-                            {
-                                descCntrCode = item.S_CNTR_CODE;
-                            }
-                            cntrCode = cntrCode + "," + item.S_CNTR_CODE;
-                        }
-                        cntrCode = cntrCode.Substring(1, cntrCode.Length - 1);
-                    }
-
-                    var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2);
-                    if (locCodes.Count > 0) 
-                    {
-                        middleLoc = LocationHelper.GetLoc(locCodes[0]); 
-                    }
-                }
-                
-                Location endLoc = LocationHelper.GetLoc(model.endLoc);
-                if (endLoc == null) 
-                {
-                    result.ResultCode = 1;
-                    result.ResultMsg = "WMS绯荤粺娌℃湁璇ヨ揣浣嶏紝璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�;
-                    return result;
-                }
-
-                if (startLoc != null)
-                {
-                    var wmsTask = new WMSTask()
-                    {
-                        S_CNTR_CODE = descCntrCode,
-                        S_CODE = WMSHelper.GenerateTaskNo(),
-                        S_START_LOC = startLoc.S_CODE,
-                        S_START_AREA = startLoc.S_AREA_CODE,
-                        S_END_LOC = endLoc.S_CODE,
-                        S_END_AREA = endLoc.S_AREA_CODE,
-                        S_TYPE = "绌烘墭鍑哄簱浠诲姟",
-                        S_OP_DEF_CODE = model.taskNo,
-                        S_OP_DEF_NAME = "绌烘墭鍑哄簱浠诲姟",
-                        N_PRIORITY = model.priority,
-                        T_START_TIME = DateTime.Now,
-                    };
-
-                    if (WMSHelper.CreateWmsTask(wmsTask))
-                    {
-                        // 鍒涘缓涓�鍑哄簱浠诲姟
-                        WCSTask wcsTask = new WCSTask()
-                        {
-                            S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                            S_OP_CODE = wmsTask.S_CODE,
-                            S_CODE = WCSHelper.GenerateTaskNo(),
-                            S_CNTR_CODE = cntrCode,
-                            S_TYPE = wmsTask.S_TYPE + "-1",
-                            S_START_LOC = startLoc.S_CODE,
-                            S_START_AREA = startLoc.S_AREA_CODE,
-                            S_END_LOC = middleLoc.S_CODE,
-                            S_END_AREA = middleLoc.S_AREA_CODE,
-                            S_SCHEDULE_TYPE = "WCS",
-                            N_PRIORITY = 1,
-                            T_START_TIME = DateTime.Now,
-                        };
-
-                        if (WCSHelper.CreateTask(wcsTask) )
-                        {
-                            // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�-                            LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                            LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-
-                            // 鏇存柊浣滀笟浠诲姟鐘舵�
-                            wmsTask.N_B_STATE = 1;
-                            WMSHelper.UpdateTaskState(wmsTask);
-                        }
-                    }
-                }
-                else
-                {
-                    result.ResultCode = 1;
-                    result.ResultMsg = "搴撳唴娌℃湁鏌ュ埌绌烘墭鐩�;
-                }
+                    TASK_NO = model.taskNo,
+                    TRAY_TYPE = model.trayType,
+                    END_LOC = model.endLoc,
+                    PRIORITY = model.priority,
+                };
+                WMSHelper.addEmptyTrayBuffer(buffer);
             }
             catch (Exception ex)
             {
@@ -304,90 +222,109 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode);
-                Location middleLoc = null;
-                string descCntrCode = "";
-                string cntrCode = "";
-                if (startLoc != null)
+                Location endLoc = LocationHelper.GetLoc(model.endLoc);
+                if (endLoc.N_CURRENT_NUM == 0)
                 {
-                    // 鏌ヨ鎺ラ┏浣�-                    var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2);
-                    if (locCodes.Count > 0)
+                    int taskNum = 0;
+                    for (int i = 0; i < endLoc.N_CAPACITY; i++)
                     {
-                        middleLoc = LocationHelper.GetLoc(locCodes[0]);
+                        Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode);
+                        Location middleLoc = null;
+                        string descCntrCode = "";
+                        string cntrCode = "";
+                        if (startLoc != null)
+                        {
+                            // 鏌ヨ鎺ラ┏浣�+                            var locCodes = Settings.getAgvJBLocList(startLoc.N_ROADWAY, 2);
+                            if (locCodes.Count > 0)
+                            {
+                                middleLoc = LocationHelper.GetLoc(locCodes[0]);
+                            }
+
+                            // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�+                            var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE);
+                            if (locCntrRels.Count > 0)
+                            {
+                                foreach (var item in locCntrRels)
+                                {
+                                    var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE);
+                                    if (cntrItemRels.Count > 0)
+                                    {
+                                        descCntrCode = cntrItemRels[0].S_CNTR_CODE;
+                                    }
+                                    cntrCode = cntrCode + "," + item.S_CNTR_CODE;
+                                }
+                                cntrCode = cntrCode.Substring(1, cntrCode.Length - 1);
+                            }
+                        }
+                        else
+                        {
+                            LogHelper.Info($"搴撳唴娌℃湁鐗╂枡:{model.itemCode}", "WMS");
+                            break;
+                        }
+
+
+                        if (endLoc != null)
+                        {
+                            var wmsTask = new WMSTask()
+                            {
+                                S_CNTR_CODE = descCntrCode,
+                                S_CODE = WMSHelper.GenerateTaskNo(),
+                                S_START_LOC = startLoc.S_CODE,
+                                S_START_AREA = startLoc.S_AREA_CODE,
+                                S_END_LOC = endLoc.S_CODE,
+                                S_END_AREA = endLoc.S_AREA_CODE,
+                                S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
+                                S_OP_DEF_CODE = model.taskNo,
+                                S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
+                                N_PRIORITY = model.priority,
+                                T_START_TIME = DateTime.Now,
+                            };
+
+                            if (WMSHelper.CreateWmsTask(wmsTask))
+                            {
+                                // 鍒涘缓涓�鍑哄簱浠诲姟
+                                WCSTask wcsTask = new WCSTask()
+                                {
+                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                    S_OP_CODE = wmsTask.S_CODE,
+                                    S_CODE = WCSHelper.GenerateTaskNo(),
+                                    S_CNTR_CODE = cntrCode,
+                                    S_TYPE = wmsTask.S_TYPE + "-1",
+                                    S_START_LOC = startLoc.S_CODE,
+                                    S_START_AREA = startLoc.S_AREA_CODE,
+                                    S_END_LOC = middleLoc.S_CODE,
+                                    S_END_AREA = middleLoc.S_AREA_CODE,
+                                    S_SCHEDULE_TYPE = "WCS",
+                                    N_PRIORITY = 1,
+                                    T_START_TIME = DateTime.Now,
+                                };
+
+                                if (WCSHelper.CreateTask(wcsTask))
+                                {
+                                    // 璧风偣銆佹帴椹崇偣鍔犻攣
+                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
+                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+
+                                    // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                    wmsTask.N_B_STATE = 1;
+                                    WMSHelper.UpdateTaskState(wmsTask);
+                                    taskNum++;
+                                }
+                            }
+                        }
                     }
 
-                    // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�-                    var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE);
-                    if (locCntrRels.Count > 0)
+                    if (taskNum < endLoc.N_CAPACITY) 
                     {
-                        foreach (var item in locCntrRels)
-                        {
-                            var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE);
-                            if (cntrItemRels.Count > 0)
-                            {
-                                descCntrCode = cntrItemRels[0].S_CNTR_CODE;
-                            }
-                            cntrCode = cntrCode + "," + item.S_CNTR_CODE;
-                        }
-                        cntrCode = cntrCode.Substring(1, cntrCode.Length - 1);
+                        result.ResultCode = 1;
+                        result.ResultMsg = $"搴撳唴鐗╂枡涓嶈冻锛屽凡鐢熸垚鍑哄簱浠诲姟鏁�{taskNum}";
                     }
                 }
                 else 
                 {
                     result.ResultCode = 1;
-                    result.ResultMsg = "搴撳唴娌℃湁婊¤冻鏉′欢鐨勭墿鏂�;
-                    return result;
-                }
-
-                Location endLoc = LocationHelper.GetLoc(model.endLoc);
-                if (endLoc != null) 
-                {
-                    var wmsTask = new WMSTask()
-                    {
-                        S_CNTR_CODE = descCntrCode,
-                        S_CODE = WMSHelper.GenerateTaskNo(),
-                        S_START_LOC = startLoc.S_CODE,
-                        S_START_AREA = startLoc.S_AREA_CODE,
-                        S_END_LOC = endLoc.S_CODE,
-                        S_END_AREA = endLoc.S_AREA_CODE,
-                        S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
-                        S_OP_DEF_CODE = model.taskNo,
-                        S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
-                        N_PRIORITY = model.priority,
-                        T_START_TIME = DateTime.Now,
-                    };
-
-                    if (WMSHelper.CreateWmsTask(wmsTask))
-                    {
-                        // 鍒涘缓涓�鍑哄簱浠诲姟
-                        WCSTask wcsTask = new WCSTask()
-                        {
-                            S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                            S_OP_CODE = wmsTask.S_CODE,
-                            S_CODE = WCSHelper.GenerateTaskNo(),
-                            S_CNTR_CODE = cntrCode,
-                            S_TYPE = wmsTask.S_TYPE + "-1",
-                            S_START_LOC = startLoc.S_CODE,
-                            S_START_AREA = startLoc.S_AREA_CODE,
-                            S_END_LOC = middleLoc.S_CODE,
-                            S_END_AREA = middleLoc.S_AREA_CODE,
-                            S_SCHEDULE_TYPE = "WCS",
-                            N_PRIORITY = 1,
-                            T_START_TIME = DateTime.Now,
-                        };
-
-                        if (WCSHelper.CreateTask(wcsTask))
-                        {
-                            // 璧风偣銆佹帴椹崇偣鍔犻攣
-                            LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                            LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-
-                            // 鏇存柊浣滀笟浠诲姟鐘舵�
-                            wmsTask.N_B_STATE = 1;
-                            WMSHelper.UpdateTaskState(wmsTask);
-                        }
-                    }
+                    result.ResultMsg = "缁堢偣璐т綅褰撳墠瀹归噺涓嶄负0锛屾棤娉曞彨鏂�;
                 }
             }
             catch (Exception ex)
@@ -716,7 +653,7 @@
         /// <param name="loc"></param>
         /// <param name="wmsTaskNo"></param>
         /// <returns></returns>
-        public static ReturnResult baseTrayInStockAgv(string loc, string wmsTaskNo)
+        public static ReturnResult autoBaseTrayInStock(string loc, string wmsTaskNo)
         {
             ReturnResult result = new ReturnResult();
             try
@@ -725,8 +662,13 @@
                 if (cst == null) 
                 {
                     Location startLoc = LocationHelper.GetLoc(loc);
-                    Location endLoc = LocationHelper.GetLoc(Settings.baseTrayInBufferLoc);
-                    if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0))
+                    Location endLoc = null;
+                    var baseTrayBufferLoc = Settings.baseTrayBufferLocList.Where(a => a.bufferOutLoc == loc).FirstOrDefault();
+                    if (baseTrayBufferLoc != null) 
+                    {
+                        endLoc = LocationHelper.GetLoc(baseTrayBufferLoc.bufferInLoc);
+                    }
+                    if (endLoc == null || endLoc.N_CURRENT_NUM > 0)
                     {
                         endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2);
                     }
@@ -886,7 +828,7 @@
         /// <param name="loc"></param>
         /// <param name="wmsTaskNo"></param>
         /// <returns></returns>
-        public static ReturnResult baseTrayOutStockAgv(string loc, string wmsTaskNo)
+        public static ReturnResult autoBaseTrayOutStock(string loc, string wmsTaskNo)
         {
             ReturnResult result = new ReturnResult();
             try
@@ -992,10 +934,9 @@
                                 TaskProcess.OperateStatus(cst, 6);
                                 break;
                             case 7:
-                                WCSHelper.UpdateStatus(cst, "寮傚父鍙栨秷");
+                                WCSHelper.Cancel(cst);
+                                WCSHelper.UpdateStatus(cst, "鍙栨秷");
                                 TaskProcess.OperateStatus(cst, 7);
-                                mst.N_B_STATE = 3;
-                                WMSHelper.UpdateTaskState(mst);
                                 break;
                             case 8:
                                 WCSHelper.UpdateStatus(cst, "寮哄埗瀹屾垚");
@@ -1026,6 +967,35 @@
         }
 
         /// <summary>
+        /// 璐т綅鐘舵�鍙嶉
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public static bool locStateFeedBack(LocStateFeedBackModel model)
+        {
+            bool result = false;
+            var task = WCSHelper.GetTask(model.req_no);
+            if (task != null)
+            {
+                TaskAction taskAction = null;
+                if (model.type == "1")
+                {
+                    taskAction = WCSHelper.getActionRecord(task.S_CODE, 1101);
+                }
+                if (model.type == "2")
+                {
+                    taskAction = WCSHelper.getActionRecord(task.S_CODE, 1103);
+                }
+                if (taskAction != null)
+                {
+                    taskAction.N_S_STATUS = 1;
+                    result = WCSHelper.updateActionRecord(taskAction);
+                }
+            }
+            return result;
+        }
+
+        /// <summary>
         /// 璇荤爜鍙嶉
         /// </summary>
         /// <param name="model"></param>

--
Gitblit v1.9.1