From 4b403ca5072dc74fbebf36f816df7d0c92241a91 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期一, 19 一月 2026 17:04:58 +0800
Subject: [PATCH] '测试'

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs |  157 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 102 insertions(+), 55 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
index 2f45c56..e0a187f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
@@ -63,6 +63,9 @@
             _timer = new Timer(DoWorkWheel, null, TimeSpan.Zero, TimeSpan.FromSeconds(3));
             return Task.CompletedTask;
         }
+
+        public static List<string> InStationareaList = new List<string>() { "1113", "1114", "1115", "1116", "1117", "1118", "1119", "1120", "1121", "1122" };
+
         private void DoWorkWheel(object state)
         {
             if (!Monitor.TryEnter(_taskProcessLock, TASK_PROCESS_TIMEOUT))
@@ -74,6 +77,7 @@
             {
                 // 瀹氫箟鐘舵�佸父閲忥紝閬垮厤榄旀硶鏁板瓧
                 const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish;
+                const int PLC_IN_InNew = (int)InTaskStatusEnum.InNew;
                 const int OUT_NEW = (int)OutTaskStatusEnum.OutNew;
                 const int SC_OUT_FINISH = (int)OutTaskStatusEnum.SC_OutFinish;
                 const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting;
@@ -96,13 +100,15 @@
                     .Where(x =>
                         (x.TaskStatus == PLC_IN_FINISH ||
                          x.TaskStatus == OUT_NEW ||
-                         x.TaskStatus == SC_OUT_FINISH) &&
+                         x.TaskStatus == SC_OUT_FINISH || (x.TaskStatus == PLC_IN_InNew && InStationareaList.Contains(x.SourceAddress))) &&
                         !excludedRoadways.Contains(x.Roadway))
                     .ToList();
 
                 // 鎸夌姸鎬佸垎缁勫鐞嗭紝鍑忓皯閲嶅鏌ヨ
                 ProcessInAndNewTasks(tasksToProcess, allTasks, excludedRoadways);   //涓嬪彂鍫嗗灈鏈�
                 ProcessOutFinishTasks(tasksToProcess, allTasks);    //涓嬪彂杈撻�佺嚎浠诲姟
+                ProcessInPalltask(tasksToProcess, allTasks);
+
             }
             catch (Exception ex)
             {
@@ -129,45 +135,50 @@
             var inAndNewTasks = tasksToProcess
                 .Where(x => x.TaskStatus == PLC_IN_FINISH || x.TaskStatus == OUT_NEW).OrderBy(x=>x.CreateDate)
                 .ToList();
-
-            foreach (var task in inAndNewTasks)
+            if(inAndNewTasks.Count > 0)
             {
-                // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟
-                bool hasExecutingTask = allTasks.Any(x =>
-                    x.TaskId != task.TaskId &&
-                    x.Roadway == task.Roadway &&
-                    (x.TaskStatus == SC_IN_EXECUTING ||
-                     x.TaskStatus == SC_OUT_EXECUTING ||
-                     x.TaskStatus == RELOCATION_EXECUTING || x.TaskStatus == RELOCCATION_NEW));
-
-                if (hasExecutingTask)
-                    continue;
-
-                if(task.TaskStatus == OUT_NEW)
+                foreach (var task in inAndNewTasks)
                 {
-                    bool SCNewTasks = allTasks.Any(x => x.TaskStatus != OUT_NEW && x.TargetAddress == task.TargetAddress);
-                    if (SCNewTasks)
+                    // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟
+                    bool hasExecutingTask = allTasks.Any(x =>
+                        x.TaskId != task.TaskId &&
+                        x.Roadway == task.Roadway &&
+                        (x.TaskStatus == SC_IN_EXECUTING ||
+                         x.TaskStatus == SC_OUT_EXECUTING ||
+                         x.TaskStatus == RELOCATION_EXECUTING || x.TaskStatus == RELOCCATION_NEW));
+
+                    if (hasExecutingTask)
                         continue;
+
+                    if (task.TaskStatus == OUT_NEW)
+                    {
+                        bool SCNewTasks = allTasks.Any(x => x.TaskStatus != OUT_NEW && x.TargetAddress == task.TargetAddress);
+                        if (SCNewTasks)
+                            continue;
+                    }
+
+                    //鍒ゆ柇鏄惁闇�瑕佺Щ搴�
+                    WebResponseContent webResponse = JudgmentIsRelocations(task);
+                    if (!webResponse.Status) continue;
+
+
+                    // 涓嬪彂鍫嗗灈鏈轰换鍔�
+                    WCSginseng result = _taskService.SC_IssueTasks(
+                        task.TaskId,
+                        int.Parse(task.Roadway),
+                        task.TaskNum,
+                        task.PalletCode,
+                        int.Parse(task.PalletType),
+                        task.CurrentAddress,
+                        task.NextAddress,
+                        task.TargetAddress);
+
+                    UpdateTaskStatus(task, result,
+                        successStatus: task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING, 1);
                 }
-
-                //鍒ゆ柇鏄惁闇�瑕佺Щ搴�
-                WebResponseContent webResponse=JudgmentIsRelocations(task);
-                if (!webResponse.Status) continue;
-
-                // 涓嬪彂鍫嗗灈鏈轰换鍔�
-                WCSginseng result = _taskService.SC_IssueTasks(
-                    task.TaskId,
-                    int.Parse(task.Roadway),
-                    task.TaskNum,
-                    task.PalletCode,
-                    int.Parse(task.PalletType),
-                    task.CurrentAddress,
-                    task.NextAddress,
-                    task.TargetAddress);
-
-                UpdateTaskStatus(task, result,
-                    successStatus: task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING,1);
             }
+
+            
         }
 
         private void ProcessOutFinishTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks)
@@ -178,30 +189,61 @@
             var outFinishTasks = tasksToProcess
                 .Where(x => x.TaskStatus == SC_OUT_FINISH)
                 .ToList();
-
-            foreach (var task in outFinishTasks)
+            if(outFinishTasks.Count > 0)
             {
-                // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夊叾浠栧凡瀹屾垚鐨勪换鍔�
-                bool hasOtherFinishTask = allTasks.Any(x =>
-                    x.Roadway == task.Roadway &&
-                    x.TaskStatus == SC_OUT_FINISH &&
-                    x.TaskId != task.TaskId);
+                foreach (var task in outFinishTasks)
+                {
+                    // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夊叾浠栧凡瀹屾垚鐨勪换鍔�
+                    bool hasOtherFinishTask = allTasks.Any(x =>
+                        x.Roadway == task.Roadway &&
+                        x.TaskStatus == SC_OUT_FINISH &&
+                        x.TaskId != task.TaskId);
 
-                if (hasOtherFinishTask)
-                    continue;
+                    if (hasOtherFinishTask)
+                        continue;
 
-                // 涓嬪彂PLC浠诲姟
-                WCSginseng result = _taskService.PLC_IssueTasks(
-                    task.TaskId,
-                    int.Parse(task.Roadway),
-                    task.TaskNum,
-                    task.PalletCode,
-                    int.Parse(task.PalletType),
-                    task.CurrentAddress,
-                    task.NextAddress,
-                    "");
+                    // 涓嬪彂PLC浠诲姟
+                    WCSginseng result = _taskService.PLC_IssueTasks(
+                        task.TaskId,
+                        int.Parse(task.Roadway),
+                        task.TaskNum,
+                        task.PalletCode,
+                        int.Parse(task.PalletType),
+                        task.CurrentAddress,
+                        task.NextAddress,
+                        "");
 
-                UpdateTaskStatus(task, result, PLC_OUT_EXECUTING,2);
+                    UpdateTaskStatus(task, result, PLC_OUT_EXECUTING, 2);
+                }
+            }
+
+            
+        }
+
+        private void ProcessInPalltask(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks)
+        {
+            const int PLC_IN_InNew = (int)InTaskStatusEnum.InNew;
+            const int PLC_PLC_INEXECUTING = (int)InTaskStatusEnum.PLC_InExecuting;
+            var outFinishTasks = tasksToProcess
+                .Where(x => x.TaskStatus == PLC_IN_InNew && InStationareaList.Contains(x.SourceAddress))
+                .ToList();
+            if(outFinishTasks.Count > 0)
+            {
+                foreach (var task in outFinishTasks)
+                {
+                    // 涓嬪彂PLC浠诲姟
+                    WCSginseng result = _taskService.PLC_IssueTasks(
+                        task.TaskId,
+                        int.Parse(task.Roadway),
+                        task.TaskNum,
+                        task.PalletCode,
+                        int.Parse(task.PalletType),
+                        task.CurrentAddress,
+                        task.NextAddress,
+                        "");
+
+                    UpdateTaskStatus(task, result, PLC_PLC_INEXECUTING, 2);
+                }
             }
         }
 
@@ -216,6 +258,11 @@
                     string Result = MesOutTaskStatusEnum.鍑哄簱寮�濮�.GetDescription();
                     //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
                     _taskService.OutStoreDocCallback(task.TaskNum,Result, "鎿嶄綔鎴愬姛");
+                }else if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting)
+                {
+                    string Result = MesInTaskStatusEnum.鍏ュ簱寮�濮�.GetDescription();
+                    //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
+                    _taskService.InStoreDocCallback(task.TaskNum, Result, "鎿嶄綔鎴愬姛",task.PalletCode,"");
                 }
             }
             else

--
Gitblit v1.9.3