杨前锦
昨天 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
@@ -28,15 +28,16 @@
        /// </summary>
        public static void AutoEmptyTrayOutStock() 
        {
            foreach (var item in Settings.baseTrayBufferLocList)
            var jbLocStatusList = WMSHelper.getAgvJBLocListByBusTypeAndWorkPattern(1, 1);
            foreach (var item in jbLocStatusList)
            {
                Location endLoc = LocationHelper.GetLoc(item.bufferOutLoc);  // 母拖出库接驳位
                Location endLoc = LocationHelper.GetLoc(item.S_LOC_CODE);  // 母拖出库接驳位
                if (endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0)
                {
                    var cst = WCSHelper.GetTaskByStartAndEnd(endLoc.S_CODE);
                    if (cst == null)
                    {
                        ApiHelper.baseTrayOutStock(endLoc.S_CODE, null, 0);
                        ApiHelper.baseTrayOutStock(endLoc.S_CODE, null);
                    }
                }
            }
@@ -50,7 +51,8 @@
            var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList();
            foreach (var buffer in emptyTrayBuffers)
            {
                if (buffer.T_CREATE.AddMinutes(1) > DateTime.Now)
                var dateTime = DateTime.Now.AddMinutes(-1);
                if (buffer.T_CREATE < dateTime)
                {
                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(buffer.TRAY_TYPE);
                    Location middleLoc = null;
@@ -74,65 +76,83 @@
                            cntrCode = cntrCode.Substring(1, cntrCode.Length - 1);
                        }
                        var locCodes = Settings.getAgvJBLocList( startLoc.N_ROADWAY, 2);
                        if (locCodes.Count > 0)
                        var descContainer = ContainerHelper.GetCntr(descCntrCode);
                        if (descContainer != null)
                        {
                            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()
                            int isExistBaseTray = 2;
                            if (descContainer.N_TYPE == 4)
                            {
                                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))
                                isExistBaseTray = 1;
                            }
                            middleLoc = WMSHelper.getAgvJBLoc(startLoc.N_ROADWAY, 2, isExistBaseTray, 1);
                            Location endLoc = LocationHelper.GetLoc(buffer.END_LOC);
                            if (middleLoc != null)
                            {
                                // 起点、接驳点、终点加锁
                                LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
                                LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
                                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 = buffer.TASK_NO,
                                        S_OP_DEF_NAME = "空托出库任务",
                                        N_PRIORITY = buffer.PRIORITY,
                                        T_START_TIME = DateTime.Now,
                                    };
                                // 更新作业任务状态
                                wmsTask.N_B_STATE = 1;
                                WMSHelper.UpdateTaskState(wmsTask);
                                    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);
                                        }
                                    }
                                }
                                else
                                {
                                    LogHelper.Info($"【缓存空托自动出库】上游任务号:{buffer.TASK_NO},终点货位不存在", "WMS");
                                }
                            }
                            else
                            {
                                LogHelper.Info($"【缓存空托自动出库】上游任务号:{buffer.TASK_NO},未查询到接驳位", "WMS");
                            }
                        }
                    }
                }
            }
        }
    }
}