From cb58fdbdc4391136e7176210e3f1969606f11903 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期四, 29 五月 2025 16:52:21 +0800
Subject: [PATCH] 合肥佳通

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs |   51 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 43 insertions(+), 8 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 4c08b0a..4a10355 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
@@ -193,6 +193,13 @@
             return result;
 
         }
+        // 瀹氫箟绛夌骇椤哄簭锛堜粠楂樺埌浣庯級
+        private static readonly List<string> LevelOrder = new List<string>
+    {
+        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
+        "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+        "U", "V", "W", "X", "Y", "Z"
+    };
         /// <summary>
         /// 鏍规嵁鐗╂枡鎵炬墭鐩�         /// </summary>
@@ -207,20 +214,24 @@
             var queryable = db.Queryable<Location>()
       .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE)
       .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE)
-      .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode );
+      .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode);
             //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆
-            if (ItemCode.Count() == 6)
+            if (ItemCode.Trim().Length == 6)
             {
                 queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE.StartsWith(ItemCode));
-          
+
             }
             else
             {
                 queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode);
             }
+            //int targetIndex = LevelOrder.IndexOf(lev);
+            //// 鑾峰彇鎵�湁浣庝簬鎴栫瓑浜庣洰鏍囩瓑绾х殑绛夌骇
+            //var validLevels = LevelOrder
+            //.Skip(targetIndex)  // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾�+            //.ToList();
 
-
-            // LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾э紝鐗╂枡绛夌骇璁$畻鍑烘湁鎵樼洏璐т綅{JsonConvert.SerializeObject(queryable.ToList())}");
+            LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}");
             //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡
             if (string.IsNullOrEmpty(lev))
             {
@@ -230,7 +241,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)
@@ -240,7 +251,7 @@
                     .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE)
                     .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode);
                 //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆
-                if (ItemCode.Count() == 6)
+                if (ItemCode.Trim().Length == 6)
                 {
                     queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE.StartsWith(ItemCode));
 
@@ -249,7 +260,10 @@
                 {
                     queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode);
                 }
+                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();
@@ -258,12 +272,33 @@
                 {
                     locs = queryable.Where((a, b, c) => c.LEV == lev).ToList();
                 }
-                // LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}");
+                LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}");
             }
 
             return locs;
         }
 
+        /// <summary>
+        /// 鏍规嵁搴撳尯鑾峰彇绌烘墭
+        /// </summary>
+        /// <param name="areaCode">搴撳尯缂栫爜</param>
+        /// <param name="lev">鐗╂枡绛夌骇</param>
+        /// <param name="ItemCode">鐗╂枡缂栫爜</param>
+        /// <returns></returns>
+        internal static Location GetLocByAreacode(string areaCode)
+        {
+            Location loc = new Location();
+            var db = new SqlHelper<object>().GetInstance();
+            var query = db.Queryable<Location>()
+       .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE)
+       .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
+                       );
+            loc = query.First();
+            return loc;
+        }
 
         /// <summary>
         /// 鏍规嵁鐗╂枡缂栫爜锛屼粨搴撶紪鐮佽幏鍙栨墭鐩樻暟閲�
--
Gitblit v1.9.1