wangxinhui
2026-03-23 531c6e89dc07bb6997e6249a6cd9f53a9bd474a5
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -701,6 +701,77 @@
            else
                return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.CurrentAddress == currentAddress && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
        }
        private static int OldorNew = 0;
        /// <summary>
        /// åŽŸæ–™åº“ä»»åŠ¡æŸ¥è¯¢
        /// </summary>
        /// <param name="deviceNo">设备编号</param>
        /// <param name="currentAddress">当前地址</param>
        /// <returns>返回任务实体对象,可能为null</returns>
        public Dt_Task QueryStackerYLTask(string deviceNo,TaskTypeGroup? taskTypeGroup= null)
        {
            if (taskTypeGroup == null)
            {
                Dt_Task taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
                if (taskSend == null)
                {
                    OldorNew = 1;
                    List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .ToList();
                    if (specificTasks.Any())
                    {
                        //根据时间筛查严格排序
                        Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .FirstOrDefault();
                        Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                        if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                        {
                            taskSend = taskCheckSend;
                        }
                    }
                }
                else
                {
                    OldorNew = 0;
                }
                return taskSend;
            }
            else
            {
                Dt_Task taskSend = null;
                if (OldorNew == 0)
                {
                    OldorNew = 1;
                    List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .ToList();
                    if (specificTasks.Any())
                    {
                        //根据时间筛查严格排序
                        Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .FirstOrDefault();
                        Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                        if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                        {
                            taskSend = taskCheckSend;
                        }
                    }
                }
                else
                {
                    OldorNew = 0;
                    taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt() && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
                }
                return taskSend;
            }
        }
        /// <summary>
        /// æ ¹æ®è®¾å¤‡ç¼–号、当前地址按照优先级以及创建时间排序查询任务池入库类型的新增的任务