From d10c23015080b541e810abd2dcae1b6084e71449 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期四, 11 十二月 2025 10:09:21 +0800
Subject: [PATCH] 修改给AGV下发空托盘收集任务逻辑

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |   43 ++++++++++++++++++++++++++++++++++---------
 1 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 3047ac3..1bf1fa8 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -8,6 +8,7 @@
 using Elastic.Clients.Elasticsearch.Snapshot;
 using Furion.Logging;
 using IoTClient;
+using MessagePack;
 using NewLife.Reflection;
 using Newtonsoft.Json;
 using Org.BouncyCastle.Ocsp;
@@ -192,6 +193,30 @@
                             } 
                             if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
                             {
+                                //鏌ユ壘璇ヤ换鍔$殑涓婁竴鏉″瓙浠诲姟瀹屾垚鏃堕棿鍜屽綋鍓嶆椂闂撮棿闅旓紝濡傛灉闂撮殧鏃堕棿澶煭璇存槑鏈夐棶棰橈紝绛�3绉掑悗鍐嶆墽琛�
+                                var carTaskAfter = _db.Queryable<WcsCarTasks>().First(m => m.IsDelete == false && m.CarTaskNo == valueTaskStr - 1
+                                && m.CarNo == modDevice.PlcIdIP && m.TaskNo == carTask.TaskNo);
+                                if (carTaskAfter != null)
+                                {
+                                    if (carTaskAfter.Status != TaskStatusEnum.Complete || carTaskAfter.UpdateTime == null)
+                                    {
+                                        Log.Error($"鍥涘悜杞︾浜屾潯瀛愪换鍔″弽棣堝畬鎴愭椂闂村紓甯�:{carTaskAfter.TaskNo}");
+                                        Thread.Sleep(3000);
+                                        break;
+                                    }
+                                    else
+                                    {
+                                        TimeSpan difference = DateTime.Now - Convert.ToDateTime(carTaskAfter.UpdateTime);
+                                        double seconds = difference.TotalSeconds;
+                                        if (seconds < 3)
+                                        {
+                                            Log.Error($"鍥涘悜杞︾浜屾潯瀛愪换鍔″弽棣堝畬鎴愭椂闂村紓甯�:{carTaskAfter.TaskNo}");
+                                            Thread.Sleep(3000);
+                                            break;
+                                        }
+                                    }                                        
+                                }
+
                                 carTask.Status = TaskStatusEnum.Complete;
                                 carTask.UpdateTime = DateTime.Now;
                                 _db.Updateable(carTask).ExecuteCommand();
@@ -209,18 +234,18 @@
                                 HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
                             }
                             //鑾峰彇璺緞2鐨勪换鍔� 涓嬪彂
-                            //carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
-                            carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing && m.CarTaskNo != valueTaskStr).OrderBy(m => m.CreateTime).First();
+                            carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
+                            //carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing && m.CarTaskNo != valueTaskStr).OrderBy(m => m.CreateTime).First();
                             if (carTaskNext != null)
                             {
-                                if (carTaskNext.CarTaskNo < valueTaskStr)
+                                if (carTaskNext.CarTaskNo != null && carTaskNext.CarTaskNo < valueTaskStr)
                                 {
                                     carTaskNext.Status = TaskStatusEnum.Complete;
                                     carTaskNext.UpdateTime = DateTime.Now;
                                     _db.Updateable(carTaskNext).ExecuteCommand();
-
-                                    carTaskNext = null;
+                                    
                                     Log.Error($"鍥涘悜杞︾涓�鏉″瓙浠诲姟娌¤嚜鍔ㄥ畬鎴�:{carTaskNext.TaskNo}");
+                                    carTaskNext = null;
                                 }
                             }
                             //鎬讳换鍔′笅娌℃湁鍏朵粬鏈墽琛屽皬杞︾殑浠诲姟 鍙樻洿鎬讳换鍔′俊鎭�
@@ -1425,11 +1450,11 @@
         {
             return;
         }
-        
-         
-        if (_db.Queryable<WcsTask>().Any(s => s.EndLocate == modTask.EndLocate && s.IsDelete == false && s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV ))
+
+        var conveyList1 = new List<string>() { "B100101", "B030101" };//绌烘墭鏀堕泦鍖哄偍浣�
+        if (_db.Queryable<WcsTask>().Any(s => s.EndLocate == modTask.EndLocate && s.IsDelete == false && s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV && !conveyList1.Contains(s.EndLocate)))
         {
-            return; // 鏈夌洰鐨勪綅缃竴鑷翠笖姝e湪鎵ц鐨勪换鍔�
+            return; // 鏈夌洰鐨勪綅缃竴鑷翠笖姝e湪鎵ц鐨勪换鍔�(涓嶅寘鍚┖鎵樻敹闆�)
         }
 
         //涓嬪彂AGV浠诲姟 

--
Gitblit v1.8.0