From e3a4181b4e107c8d2dc13f489ec62af28451bf3a Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期一, 28 四月 2025 17:18:12 +0800
Subject: [PATCH] 修改分配任务问题

---
 Admin.NET/WCS.Application/Util/FourWayCarUtil.cs |   46 ++++++++++++++++++++++++++++------------------
 1 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index c4bc14f..596b8d0 100644
--- a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
+++ b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
@@ -196,13 +196,13 @@
                         executionPath1 += pathXYZQian + ";";
                     }
                     executionPath2 += pathXYZQian + ";";
-                    //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
-                    if (!preId1.Contains(item + ""))
-                    {
-                        preId1 += item + ";";
-                    }
+                    
                 }
-                
+                //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
+                if (!preId1.Contains(item + ""))
+                {
+                    preId1 += item + ";";
+                }
 
                 isOk = "2";
             }
@@ -277,7 +277,8 @@
                     PalletNo = "",
                     Status = TaskStatusEnum.Wait,
                     Levels = 999,
-                    Origin = "WCS"
+                    Origin = "WCS",
+                    CarIp = item.CarPlcIp
                 };
                 _db.Insertable(modTask).ExecuteCommand();
                 HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -301,7 +302,8 @@
         #region 鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 4
 
         //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
-        var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo!=assignCar.CarPlcIp).ToList();
+        var taskListTask4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo!=assignCar.CarPlcIp).GroupBy(m=>m.TaskNo).Select(m=>m.TaskNo).ToList();
+        var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo != assignCar.CarPlcIp).ToList();
         var preId4 = "";//鍓嶇疆浠诲姟Id
         var str4 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
 
@@ -310,9 +312,14 @@
             str4 += item.Path;
         }
         //鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 
-        foreach (var item in taskList4)
+        foreach (var item in taskListTask4)
         {
-            var lastPathList = item.ExecutionPath.Split(';');
+            var lastTask = taskList4.Where(m =>  m.TaskNo == item ).OrderBy(m=>m.CreateTime).LastOrDefault();
+            if (lastTask == null)
+            {
+                continue;
+            }
+            var lastPathList = lastTask.ExecutionPath.Split(';');
             //  a;b;c; 鏈�鍚庝竴涓綅鏄�溾�濓紝鎵�浠astPathList.Length - 2
             var lastPath = lastPathList[lastPathList.Length - 2];
             var lastPath2 = lastPath.Substring(0,6);
@@ -320,6 +327,7 @@
             //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈閱夎垶涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
             if (path.Contains(lastPath2))
             {
+                
                 var endLocate = "";
                 var executionPath4 = "";
                 var path4 = "";
@@ -327,7 +335,7 @@
                 //鏌ユ壘鐩爣浣嶇疆
                 while (endLocate == "" || datas4.Count == 0 || datas4 == null)
                 {
-                    endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4);
+                    endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4+path);
                     var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate);
                     datas4 = FourWayCarUtil.GetCarPathUp(data4, 0);
                 }
@@ -351,7 +359,8 @@
                     PalletNo = "",
                     Status = TaskStatusEnum.Wait,
                     Levels = 999,
-                    Origin = "WCS"
+                    Origin = "WCS",
+                    CarIp = lastTask.CarNo
                 };
                 _db.Insertable(modTask).ExecuteCommand();
                 HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -362,7 +371,7 @@
                     PreId = "",
                     ExecutionPath = executionPath4,
                     Path = path4,
-                    CarNo = item.CarNo,
+                    CarNo = lastTask.CarNo,
                     Status = TaskStatusEnum.Wait
                 };
                 var idLong = _db.Insertable(carTaskYC).ExecuteReturnSnowflakeId();
@@ -391,7 +400,7 @@
             var carTask2 = new WcsCarTasks()
             {
                 TaskNo = waitTask.TaskNo,
-                PreId = preId1,
+                PreId = "",
                 ExecutionPath = executionPath2,
                 Path = path,
                 CarNo = assignCar.CarPlcIp,
@@ -399,15 +408,16 @@
             };
             _db.Insertable(carTask2).ExecuteCommand();
         }
+        waitTask.CarIp = assignCar.CarPlcIp;
         if (moveType == 1)
         {
             // 鏀瑰彉鎬讳换鍔¤〃鐘舵��
             waitTask.Status = TaskStatusEnum.Doing;
-            waitTask.UpdateTime = DateTime.Now;
-            _db.Updateable(waitTask).ExecuteCommand();
-            HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
+            waitTask.UpdateTime = DateTime.Now; 
         }
-        
+        _db.Updateable(waitTask).ExecuteCommand();
+        HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
+
         return true;
         #endregion
     }

--
Gitblit v1.8.0