From 4c7f2d26fd6041d32f4e291559bc443671493246 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期四, 19 六月 2025 16:52:45 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/Util/FourWayCarUtil.cs |   87 +++++++++++++++++++++++++++++++++----------
 1 files changed, 66 insertions(+), 21 deletions(-)

diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index c4bc14f..0a8fe55 100644
--- a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
+++ b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
@@ -7,6 +7,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using WCS.Application.Entity;
+using static Elastic.Clients.Elasticsearch.JoinField;
 using static SKIT.FlurlHttpClient.Wechat.Api.Models.CustomServiceKfSessionGetWaitCaseResponse.Types;
 
 namespace WCS.Application.Util;
@@ -25,6 +26,10 @@
     /// <returns></returns>
     public static List<CarModel> GetCarPathUp(List<CarModel> list, int moveType)
     {
+        if (list == null)
+        {
+            return null;
+        }
         for (int i = 0; i < list.Count; i++)
         {
             if (i >= 0 && i < list.Count - 1)
@@ -162,6 +167,15 @@
 
     }
 
+    /// <summary>
+    /// 
+    /// </summary>
+    /// <param name="data">褰撳墠浠诲姟鎬昏矾寰�</param>
+    /// <param name="kXCarList">鎵�鏈夊皬杞�</param>
+    /// <param name="assignCar">褰撳墠鍒嗛厤灏忚溅</param>
+    /// <param name="waitTask">褰撳墠鎬讳换鍔�</param>
+    /// <param name="moveType">0鍘诲彇璐т换鍔�  1鍘绘斁璐�</param>
+    /// <returns></returns>
     public static bool AddCarTask(List<CarModel> data, List<CarInfo> kXCarList, CarInfo assignCar, WcsTask waitTask,int moveType)
     {
         #region 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級
@@ -196,13 +210,13 @@
                         executionPath1 += pathXYZQian + ";";
                     }
                     executionPath2 += pathXYZQian + ";";
-                    //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
-                    if (!preId1.Contains(item + ""))
-                    {
-                        preId1 += item + ";";
-                    }
+                    
                 }
-                
+                //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
+                if (!preId1.Contains(item + ""))
+                {
+                    preId1 += item + ";";
+                }
 
                 isOk = "2";
             }
@@ -277,7 +291,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 +316,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,16 +326,22 @@
             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);
 
-            //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈閱夎垶涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
+            //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈浠诲姟涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
             if (path.Contains(lastPath2))
             {
+                
                 var endLocate = "";
                 var executionPath4 = "";
                 var path4 = "";
@@ -327,7 +349,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 +373,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 +385,7 @@
                     PreId = "",
                     ExecutionPath = executionPath4,
                     Path = path4,
-                    CarNo = item.CarNo,
+                    CarNo = lastTask.CarNo,
                     Status = TaskStatusEnum.Wait
                 };
                 var idLong = _db.Insertable(carTaskYC).ExecuteReturnSnowflakeId();
@@ -391,7 +414,7 @@
             var carTask2 = new WcsCarTasks()
             {
                 TaskNo = waitTask.TaskNo,
-                PreId = preId1,
+                PreId = "",
                 ExecutionPath = executionPath2,
                 Path = path,
                 CarNo = assignCar.CarPlcIp,
@@ -399,19 +422,19 @@
             };
             _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
     }
-
 
 
     /// <summary>
@@ -481,7 +504,7 @@
 
                 if (current.Equals(end))
                 {
-                    Log.Error(ReconstructPath(cameFrom, current).ToString());
+                    Log.Error("灏忚溅璺緞鍒嗛厤锛�" +ReconstructPath(cameFrom, current).ToString());
                     return ReconstructPath(cameFrom, current);
                 }
 
@@ -601,6 +624,28 @@
     }
 
     /// <summary>
+    /// 鑾峰彇鎬讳换鍔¤〃涓嬪彂ID涓婚敭
+    /// </summary>
+    /// <returns></returns>
+    public static int GetTaskId()
+    {
+        var list = _db.Queryable<WcsTask>().ToList();
+        var maxNo = list.Max(m => m.TaskId);
+
+        if (maxNo != null && maxNo > 0)
+        {
+            if (maxNo++ > 99999999)
+            {
+                return 1;
+            }
+
+            return (int)maxNo++;
+        }
+
+        return 1;
+    }
+
+    /// <summary>
     /// 璁$畻鏇煎搱椤胯窛绂�
     /// </summary>
     /// <param name="start">璧峰浣嶇疆</param>

--
Gitblit v1.8.0