From 94a1a7574f7ce3c61148742cb6f8e6c60a4ed3aa Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期一, 28 四月 2025 17:19:53 +0800
Subject: [PATCH] 解决冲突

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

diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index 596b8d0..b8aa592 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;
@@ -611,6 +612,181 @@
     }
 
     /// <summary>
+    /// 鑾峰彇灏忚溅绉诲姩鐨勭洰鏍囦綅缃�
+    /// </summary>
+    /// <param name="startLocation">璧峰浣嶇疆</param>
+    /// <param name="noPathStr">涓嶈兘瀛樻斁鐨勫偍浣嶅瓧绗︿覆</param>
+    /// <returns></returns>
+    public static string GetCarEndLocation(string startLocation,string noPathStr)
+    {
+        if (string.IsNullOrEmpty(startLocation))
+        {
+            return null;
+        }
+
+        // 璧峰浣嶇疆
+        CarModel start = new CarModel()
+        {
+            X = int.Parse(startLocation.Substring(0, 2)),
+            Y = int.Parse(startLocation.Substring(2, 2)),
+            Z = int.Parse(startLocation.Substring(4, 2)),
+            NodeCom = 0
+        };
+
+        // 鑾峰彇鍌ㄤ綅琛ㄤ俊鎭瓨鍌ㄥ埌闆嗗悎閲�
+        var layer = int.Parse(startLocation.Substring(4, 2));
+
+        //  鑾峰彇褰撳墠灞傚偍浣嶄俊鎭�
+        var locationModels = _db.Queryable<WcsStorageLocat>()
+            .Where(m => m.WareHouseNo == "W01" && m.Layer == layer && m.IsDelete == false)
+        .ToList();
+
+        #region MyRegion
+
+        var list = locationModels.Where(m => !noPathStr.Contains(m.LocatNo)).OrderBy(m=> Math.Abs(start.X - m.Row) + Math.Abs(start.Y - m.Column)).ToList();
+        var locateStr = "";
+        foreach (var item in list)
+        {
+            // 鍌ㄤ綅鐘舵�佷负鎹熷潖涓嶅彲閫氳 鍌ㄤ綅鐘舵�佷负灞忚斀涓哄彲閫氳涓嶅彲瀛樺偍鎵樼洏
+            if (item.Flag == "2")
+            {
+                continue;
+            }
+            locateStr = item.LocatNo;
+            break;
+        }
+        return locateStr;
+        #endregion
+
+        #region 浣跨敤绠楁硶璁$畻灏忚溅鍙Щ鍔ㄧ殑鐩爣璺緞
+        //try
+        //{
+
+        //    // 瀹氫箟鍏抽棴鑺傜偣瀛楀吀
+        //    var closeSet = new Dictionary<CarModel, CarModel>();
+
+        //    // 瀛樺偍灏忚溅鍙繍琛岀殑鏂瑰悜
+        //    var validDirections = new List<CarModel>();
+        //    var currentLocation = locationModels.FirstOrDefault(m => m.Row == start.X && m.Column == start.Y);
+        //    if (currentLocation.Make == "0")
+        //    {
+        //        // 涓婚�氶亾
+        //        validDirections.Add(new CarModel() { X = 1, Y = 0 }); // 鍙�
+        //        validDirections.Add(new CarModel() { X = -1, Y = 0 }); // 宸�
+        //        validDirections.Add(new CarModel() { X = 0, Y = 1 }); // 涓�
+        //        validDirections.Add(new CarModel() { X = 0, Y = -1 }); // 涓�
+        //    }
+
+        //    if (currentLocation.Make == "1")
+        //    {
+        //        // 瀛愰�氶亾
+        //        // 鍏堟媶鍒嗗嚭鍙�
+        //        var outNode = currentLocation.AisleOne;
+        //        if (string.IsNullOrEmpty(outNode))
+        //        {
+        //            throw new Exception("褰撳墠浣嶇疆娌℃湁缁存姢鍑哄彛锛�");
+        //        }
+        //        int outX = int.Parse(outNode.Substring(0, 2));
+        //        int outY = int.Parse(outNode.Substring(2, 2));
+        //        if (start.X == outX)
+        //        {
+        //            validDirections.Add(new CarModel() { X = 0, Y = 1 }); // 涓�
+        //            validDirections.Add(new CarModel() { X = 0, Y = -1 }); // 涓�
+
+        //        }
+        //        else
+        //        {
+        //            validDirections.Add(new CarModel() { X = 1, Y = 0 }); // 鍙�
+        //            validDirections.Add(new CarModel() { X = -1, Y = 0 }); // 宸�
+        //        }
+        //    }
+
+        //    foreach (var dir in validDirections)
+        //    {
+        //        CarModel neighbor = new CarModel() { X = start.X + dir.X, Y = start.Y + dir.Y, Z = layer };
+
+        //        // 楠岃瘉涓嬩竴鑺傜偣浣嶇疆鏄惁鍙�氳骞朵笖鍒ゆ柇鏄惁琚叾浠栧皬杞﹀崰鐢�
+
+
+        //        // 鍒ゆ柇涓嬩竴鑺傜偣鏄惁鍏抽棴
+        //        if (closeSet.ContainsKey(neighbor))
+        //        {
+        //            closeSet[neighbor] = neighbor;
+        //        }
+
+        //        // 褰撳墠鑺傜偣
+        //        var currentModel = locationModels.FirstOrDefault(it => it.Row == start.X && it.Column == start.Y);
+        //        // 涓嬩竴鑺傜偣
+        //        var locationModel = locationModels.FirstOrDefault(it => it.Row == neighbor.X && it.Column == neighbor.Y);
+
+        //        // 涓嶅瓨鍦ㄦ浣嶇疆淇℃伅
+        //        if (locationModel == null)
+        //        {
+        //            closeSet[neighbor] = neighbor;
+        //            continue;
+        //        }
+        //        // 鍌ㄤ綅鐘舵�佷负鎹熷潖涓嶅彲閫氳 鍌ㄤ綅鐘舵�佷负灞忚斀涓哄彲閫氳涓嶅彲瀛樺偍鎵樼洏
+        //        if (locationModel.Flag == "2")
+        //        {
+        //            closeSet[neighbor] = neighbor;
+        //            continue;
+        //        }
+
+        //    }
+
+
+
+        //}
+        //catch (Exception)
+        //{
+        //    throw;
+        //}
+
+        //return null;
+        #endregion
+    }
+
+    public static int GetTaskNo()
+    {
+        var list = _db.Queryable<WcsCarTasks>().ToList();
+        var maxNo = list.Max(m => m.CarTaskNo);
+        
+        if (maxNo!=null && maxNo > 0)
+        {
+            if (maxNo++ > 65535)
+            {
+                return 1;
+            }
+             
+            return (int)maxNo++;
+        }
+        return 1;
+          
+    }
+
+    /// <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