From 5c272c606bdf2da3577dbaa5f48d0ee163f1e7d2 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 26 三月 2026 10:35:24 +0800
Subject: [PATCH] 纸张淋膜半成品入库逻辑优化

---
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs |  110 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 61 insertions(+), 49 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 b2b9f9c..0afff24 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"
@@ -231,7 +231,7 @@
                             return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃俊鎭�");
                         }
                         //鑾峰彇璺敱淇℃伅
-                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi) && x.Depth==1);
+                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi || stationManger.StationDeviceCode==x.StartPosi) && x.Depth==1);
                         router = routers.FirstOrDefault();
                         if (router == null)
                         {
@@ -251,7 +251,7 @@
                                 }
                                 else
                                 {
-                                    task.CurrentAddress = router.StartPosi;
+                                    task.CurrentAddress = router.StartPosi == "AGV" ? item.SourceAddress : router.StartPosi;
                                     task.NextAddress = router.NextPosi;
                                     task.DeviceCode = router.ChildPosiDeviceCode;
                                 }
@@ -701,7 +701,15 @@
             else
                 return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.CurrentAddress == currentAddress && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
         }
-        private static int OldorNew = 0;
+        private static Dictionary<string, int> dict = new Dictionary<string, int>
+        {
+            { "SC01_YL", 0 },
+            { "SC02_YL", 0 },
+            { "SC03_YLDual", 0 },
+            { "SC04_YLDual", 0 },
+            { "SC05_YLDual", 0 }
+        };
+        private readonly static object lockerOldorNew = new object();
         /// <summary>
         /// 鍘熸枡搴撲换鍔℃煡璇�
         /// </summary>
@@ -710,66 +718,70 @@
         /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
         public Dt_Task QueryStackerYLTask(string deviceNo,TaskTypeGroup? taskTypeGroup= null)
         {
-            if (taskTypeGroup == null)
+            lock (lockerOldorNew)
             {
-                Dt_Task taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
-                if (taskSend == null)
+                int OldorNew = dict[deviceNo];
+                if (taskTypeGroup == 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 taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
+                    if (taskSend == null || OldorNew == 0)
                     {
-                        //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
-                        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)
+                        dict[deviceNo] = 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())
                         {
-                            taskSend = taskCheckSend;
+                            //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
+                            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
+                    {
+                        dict[deviceNo] = 0;
+                    }
+                    return taskSend;
                 }
                 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 taskSend = null;
+                    if (OldorNew == 0)
                     {
-                        //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
-                        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)
+                        dict[deviceNo] = 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())
                         {
-                            taskSend = taskCheckSend;
+                            //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
+                            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
+                    {
+                        dict[deviceNo] = 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;
                 }
-                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;
             }
         }
 

--
Gitblit v1.9.3