From e1a97fc8b29f063e96e3ebbae2f07ee95b276069 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期四, 05 六月 2025 17:25:31 +0800
Subject: [PATCH] 合肥佳通优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs |   57 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
index 4a10355..7a332f6 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
@@ -3,9 +3,11 @@
 using NLog.Fluent;
 using SqlSugar;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using static HH.WCS.JiaTong.dispatch.NDC;
 
@@ -231,7 +233,7 @@
             //.Skip(targetIndex)  // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾�             //.ToList();
 
-            LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}");
+            // LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}");
             //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡
             if (string.IsNullOrEmpty(lev))
             {
@@ -241,7 +243,7 @@
             {
                 locs = queryable.Where((a, b, c) => c.LEV == lev && c.S_BS_TYPE == "浣欐枡").ToList();
             }
-            LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}");
+            //   LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}");
 
             //娌℃湁浣欐枡鍒欏鎵惧叏閮ㄧ墿鏂�             if (locs.Count == 0)
@@ -260,10 +262,9 @@
                 {
                     queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode);
                 }
-                LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}");
+                //   LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}");
 
-                //鍒ゆ柇绛夌骇
-                locs = queryable.Where((a, b, c) => char.ToUpper(lev) >= c.LEV).ToList();
+
                 if (string.IsNullOrEmpty(lev))
                 {
                     locs = queryable.ToList();
@@ -272,7 +273,7 @@
                 {
                     locs = queryable.Where((a, b, c) => c.LEV == lev).ToList();
                 }
-                LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}");
+                //  LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}");
             }
 
             return locs;
@@ -282,8 +283,6 @@
         /// 鏍规嵁搴撳尯鑾峰彇绌烘墭
         /// </summary>
         /// <param name="areaCode">搴撳尯缂栫爜</param>
-        /// <param name="lev">鐗╂枡绛夌骇</param>
-        /// <param name="ItemCode">鐗╂枡缂栫爜</param>
         /// <returns></returns>
         internal static Location GetLocByAreacode(string areaCode)
         {
@@ -294,12 +293,40 @@
        .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE)
        .Where((a, b, c) => a.S_AREA_CODE == areaCode && a.N_CURRENT_NUM == 1
                        && a.N_LOCK_STATE == 0
-                       && b.S_CNTR_CODE != null
+                       && b.S_CNTR_CODE != null && c.S_ITEM_CODE == null
                        );
             loc = query.First();
             return loc;
         }
 
+        /// <summary>
+        /// 鍒嗛厤鐢垫璐т綅
+        /// </summary>
+        /// <returns></returns>
+        internal static Location GetElevatorLoc()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            Location location = new Location();
+            //鏌ユ壘鍏ㄩ儴鐢垫锛屽垎閰嶄换鍔℃渶灏戠殑鐢垫
+            var devices = Settings.deviceInfos.Where(a => a.deviceType == 2 && a.enable == 1).ToList();
+            string[] state = new string[] { "鎵ц涓�, "寮�鍙栬揣", "鍙栬揣瀹屾垚" };
+            Dictionary<int, string> dics = new Dictionary<int, string>();
+            foreach (var deviceInfo in devices)
+            {
+                int mst = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鐢垫") && state.Contains(a.S_B_STATE)).Count();
+                dics.Add(mst, deviceInfo.TN_Location);
+            }
+            if (dics.Count > 0)
+            {
+                var dic = dics.OrderBy(a => a.Key).First();
+                location = db.Queryable<Location>().Where(a => a.S_CODE == dic.Value).First();
+                if (location == null)
+                {
+                    LogHelper.Info($"鏍规嵁璐т綅缂栫爜:{dic.Value},鏈壘鍒板搴旇揣浣�);
+                }
+            }
+            return location;
+        }
         /// <summary>
         /// 鏍规嵁鐗╂枡缂栫爜锛屼粨搴撶紪鐮佽幏鍙栨墭鐩樻暟閲�         /// </summary>
@@ -479,15 +506,15 @@
         }
 
         /// <summary>
-        /// 鏍规嵁璐т綅闆嗗悎鑾峰彇 娌℃湁瀹瑰櫒 娌℃湁閿佺殑璐т綅
+        /// 鏍规嵁璐т綅鑾峰彇璐т綅淇℃伅
         /// </summary>
         /// <param name="loc"></param>
         /// <returns></returns>
-        internal static List<Location> GetLocListEmptyFree(List<string> loc)
+        internal static Location GetLocByLoc(string loc)
         {
             //1.0 鏌ヨ揣浣嶅鍣ㄨ〃
             var db = new SqlHelper<object>().GetInstance();
-            var list = db.Queryable<Location>().Where(a => loc.Contains(a.S_CODE) && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE.Trim() == "鏃�).ToList();
+            var list = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
             return list;
 
         }
@@ -518,7 +545,11 @@
                 }
                 else
                 {
-                    LogHelper.Info($"閿佸畾璐т綅{loc}鎴愬姛");
+                    LogHelper.Info($"閿佸畾璐т綅{loc}澶辫触,閲嶆柊閿�);
+                    Task.Run(() =>
+                    {
+                        LockLoc(loc, lockState);
+                    });
                 }
                 return res;
             }

--
Gitblit v1.9.1