From 58d554da79279ba67334a7751d7b4579765b2632 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期五, 13 六月 2025 19:05:40 +0800
Subject: [PATCH] 1

---
 wms/LocationHelper.cs |   90 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 77 insertions(+), 13 deletions(-)

diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 85bafbe..5514dde 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -10,6 +10,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using Top.Api;
+using WebSocketSharp.Frame;
 using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 using static HH.WCS.ZhongCeJinTan.util.Settings;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
@@ -23,15 +24,15 @@
 
         static LocationHelper() {
             //鍒濆鍖杔ocation鍔犲叆鍒板瓧鍏哥紦瀛�-            locations = new Dictionary<string, Location>();
-            var list = GetAllLocList();
-            if (list.Count > 0) {
-                list.ForEach(a => {
-                    if (!locations.ContainsKey(a.S_CODE)) {
-                        locations.Add(a.S_CODE, a);
-                    }
-                });
-            }
+            //locations = new Dictionary<string, Location>();
+            //var list = GetAllLocList();
+            //if (list.Count > 0) {
+            //    list.ForEach(a => {
+            //        if (!locations.ContainsKey(a.S_CODE)) {
+            //            locations.Add(a.S_CODE, a);
+            //        }
+            //    });
+            //}
             //鍒濆鍖杔ocationExt鍔犲叆鍒伴泦鍚堢紦瀛�             //locationExts = new Dictionary<string, LocationExt>();
             //var exts = GetAllLocExtList();
@@ -111,7 +112,7 @@
             foreach (var item in locList)
             {
                 var ConnectionList = 0;
-                ConnectionList = db.Queryable<WMSTask>().Where(a => (a.S_END_LOC.Contains(item) || a.S_START_LOC.Contains(item)) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "閿欒").ToList().Count();
+                ConnectionList = db.Queryable<WMSTask>().Where(a => (a.S_END_LOC.Contains(item) || a.S_START_LOC.Contains(item)) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "澶辫触" && a.S_B_STATE != "宸插畬鎴� &&  a.S_B_STATE != "鏈墽琛�).ToList().Count();
                 var re = new connectionBalance();
                 var con = LocationHelper.GetLoc(item);
                 re.loc = con;
@@ -122,7 +123,7 @@
         }
 
 
-        
+     
 
         /// <summary>
         /// 鎵剧粓鐐瑰贩閬撳彲鐢ㄧ┖璐т綅
@@ -300,9 +301,9 @@
                     }
                 }
 
+                var balanceLocList = RoadWayBalance(locations);
 
-
-                foreach (var item in locations)
+                foreach (var item in balanceLocList)
                 {
                     if (item.S_LOCK_STATE=="鏃� && item.N_CURRENT_NUM==0)
                     {
@@ -319,6 +320,40 @@
             }
 
         }
+
+
+        /// <summary>
+        /// 宸烽亾鍧囪 绛栫暐
+        /// </summary>
+        /// <param name="lstTrueLocation">鍙敤鐨勮揣浣嶄俊鎭暟鎹�/param>
+        /// <returns>璁$畻鍚庤繑鍥炵殑瀹炰綋</returns>
+        public static List<Location> RoadWayBalance(List<Location> lstTrueLocation)
+        {
+            //鎸囧畾璁$畻鍚庤繑鍥炵殑瀹炰綋
+            List<Location> location_roadray = new List<Location>();
+
+            //鎸夌収宸烽亾鍒嗙粍   骞惰幏寰楀贩閬撲腑鍙敤璐т綅鐨勬暟鎹�+            //涔嬪悗杩涜鍊掑彊   鎵惧埌鍙敤璐т綅鏈�鐨勫贩閬�+            var v = lstTrueLocation.GroupBy(x => x.N_ROADWAY).Select(g => (new
+            {
+                roadWay = g.Key,
+                qty = g.Count(p => p.S_LOCK_STATE=="鏃�)
+            })).OrderByDescending(o => o.qty);
+
+            //鍊掑彊鎺掑垪鍚庣殑宸烽亾  寰幆
+            foreach (var item in v)
+            {
+                //鍙栧緱宸烽亾鍒楄〃涓彲鐢ㄨ揣浣嶆渶澶氱殑宸烽亾  骞惰幏鍙栧贩閬撲腑鎵�湁璐т綅
+                location_roadray = lstTrueLocation.Where(o => o.N_ROADWAY == item.roadWay).ToList();
+
+                if (location_roadray != null && location_roadray.Count > 0)
+                {
+                    break;
+                }
+            }
+            return location_roadray;
+        }
+
 
         /// <summary>
         /// 鎵剧粓鐐瑰彲鐢ㄧ┖璐т綅鎺掗櫎涓嶅彲鐢ㄥ贩閬�@@ -1506,5 +1541,34 @@
             }
             return res;
         }
+
+        /// <summary>
+        /// 鑾峰彇閫昏緫搴撳尯璐т綅
+        /// </summary>
+        /// <param name="zoneCode"></param>
+        /// <returns></returns>
+        public static List<Location> GetZoneLoc(string zoneCode) {
+            var db = new SqlHelper<object>().GetInstance();
+            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘閫昏緫搴撳尯鍙傛暟{zoneCode}", "Mes浠诲姟涓嬪彂");
+            var zones = db.Queryable<Zone>().Where(a => a.S_ZONE_CLS_CODE == zoneCode).ToList();
+            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘閫昏緫搴撳尯淇℃伅" +JsonConvert.SerializeObject(zones), "Mes浠诲姟涓嬪彂");
+            var locList = new List<Location>();
+
+            foreach (var item in zones)
+            {
+                var locations = db.Queryable<ZoneLoc>().Includes(t => t.Loc).Where(a => a.S_ZONE_CODE == item.S_CODE).ToList();
+             
+                foreach (var item1 in locations)
+                {
+                    locList.Add(item1.Loc);
+                }
+            }
+
+            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘閫昏緫璐т綅鏁伴噺淇℃伅{locList.Count}", "Mes浠诲姟涓嬪彂");
+
+            return locList.OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).ToList(); ;
+        }
+
+        
     }
 }

--
Gitblit v1.9.1