From e0d89637030791ce1e7dd46ca5fdec9979977960 Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期三, 11 六月 2025 17:28:41 +0800
Subject: [PATCH] 印尼佳通-硫化流程出入库流程开发

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 105 insertions(+), 5 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
index ff5032e..27a5a5f 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
@@ -4,6 +4,7 @@
 using HH.WCS.Mobox3.YNJT_BZP.process;
 using HH.WCS.Mobox3.YNJT_BZP.util;
 using HH.WCS.Mobox3.YNJT_BZP.wms;
+using MySqlX.XDevAPI.Common;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
@@ -27,16 +28,115 @@
         /// </summary>
         public static void AutoEmptyTrayOutStock() 
         {
-            Location endLoc = LocationHelper.GetLoc(Settings.baseTrayOutBufferLoc);  // 姣嶆嫋鍑哄簱鎺ラ┏浣�-            if (endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0) 
+            foreach (var item in Settings.baseTrayBufferLocList)
             {
-                var cst = WCSHelper.GetTaskByStartAndEnd(endLoc.S_CODE);
-                if (cst == null) 
+                Location endLoc = LocationHelper.GetLoc(item.bufferOutLoc);  // 姣嶆嫋鍑哄簱鎺ラ┏浣�+                if (endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0)
                 {
-                    ApiHelper.baseTrayOutStockAgv(endLoc.S_CODE, null);
+                    var cst = WCSHelper.GetTaskByStartAndEnd(endLoc.S_CODE);
+                    if (cst == null)
+                    {
+                        ApiHelper.baseTrayOutStock(endLoc.S_CODE, null, 0);
+                    }
                 }
             }
         }
 
+        /// <summary>
+        /// 缂撳瓨绌烘墭鑷姩鍑哄簱
+        /// </summary>
+        public static void BufferEmptyTrayOutStock()
+        {
+            var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList();
+            foreach (var buffer in emptyTrayBuffers)
+            {
+                var dateTime = DateTime.Now.AddMinutes(-1);
+                if (buffer.T_CREATE < dateTime) 
+                {
+                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(buffer.TRAY_TYPE);
+                    Location middleLoc = null;
+                    string cntrCode = "";
+                    string descCntrCode = "";
+                    if (startLoc != null)
+                    {
+                        // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�+                        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 (buffer.TRAY_TYPE == 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( startLoc.N_ROADWAY, 2);
+                        if (locCodes.Count > 0)
+                        {
+                            middleLoc = LocationHelper.GetLoc(locCodes[0]);
+                        }
+                    }
+
+                    Location endLoc = LocationHelper.GetLoc(buffer.END_LOC);
+
+                    if (startLoc != null && 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 = buffer.TASK_NO,
+                            S_OP_DEF_NAME = "绌烘墭鍑哄簱浠诲姟",
+                            N_PRIORITY = buffer.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);
+
+                                buffer.IS_CREATED = "Y";
+                                WMSHelper.updateEmptyTrayBuffer(buffer);
+                            }
+                        }
+                    }
+                }
+            }
+        }
     }
 }

--
Gitblit v1.9.1