From 531c6e89dc07bb6997e6249a6cd9f53a9bd474a5 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 23 三月 2026 10:31:54 +0800
Subject: [PATCH] 出库逻辑变更

---
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index ca7c9b5..b2b9f9c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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>
         /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍏ュ簱绫诲瀷鐨勬柊澧炵殑浠诲姟

--
Gitblit v1.9.3