From 8674dabad31db77cba438ab1746235fa41c08716 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期五, 06 六月 2025 17:23:53 +0800
Subject: [PATCH] 合肥佳通问题优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs |  117 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 68 insertions(+), 49 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 7a332f6..ad6a450 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs
@@ -202,6 +202,7 @@
         "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
         "U", "V", "W", "X", "Y", "Z"
     };
+       
         /// <summary>
         /// 鏍规嵁鐗╂枡鎵炬墭鐩�         /// </summary>
@@ -211,47 +212,15 @@
         /// <returns></returns>
         internal static List<Location> GetLocByItemCode(string areaCode, string ItemCode, string lev)
         {
+           
             List<Location> locs;
-            var db = new SqlHelper<object>().GetInstance();
-            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);
-            //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆
-            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},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}");
-            //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡
-            if (string.IsNullOrEmpty(lev))
-            {
-                locs = queryable.Where((a, b, c) => c.S_BS_TYPE == "浣欐枡").ToList();
-            }
-            else
-            {
-                locs = queryable.Where((a, b, c) => c.LEV == lev && c.S_BS_TYPE == "浣欐枡").ToList();
-            }
-            //   LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}");
-
-            //娌℃湁浣欐枡鍒欏鎵惧叏閮ㄧ墿鏂�-            if (locs.Count == 0)
-            {
-                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);
+            
+                var db = new SqlHelper<object>().GetInstance();
+                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);
                 //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆
                 if (ItemCode.Trim().Length == 6)
                 {
@@ -262,20 +231,55 @@
                 {
                     queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode);
                 }
-                //   LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}");
+                //int targetIndex = LevelOrder.IndexOf(lev);
+                //// 鑾峰彇鎵�湁浣庝簬鎴栫瓑浜庣洰鏍囩瓑绾х殑绛夌骇
+                //var validLevels = LevelOrder
+                //.Skip(targetIndex)  // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾�+                //.ToList();
 
-
+                LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}");
+                //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡
                 if (string.IsNullOrEmpty(lev))
                 {
-                    locs = queryable.ToList();
+                    locs = queryable.Where((a, b, c) => c.S_BS_TYPE == "浣欐枡").ToList();
                 }
                 else
                 {
-                    locs = queryable.Where((a, b, c) => c.LEV == lev).ToList();
+                    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)
+                {
+                    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);
+                    //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆
+                    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);
+                    }
+                    LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}");
+
+
+                    if (string.IsNullOrEmpty(lev))
+                    {
+                        locs = queryable.ToList();
+                    }
+                    else
+                    {
+                        locs = queryable.Where((a, b, c) => c.LEV == lev).ToList();
+                    }
+                    LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}");
+                }
+            
             return locs;
         }
 
@@ -284,18 +288,33 @@
         /// </summary>
         /// <param name="areaCode">搴撳尯缂栫爜</param>
         /// <returns></returns>
-        internal static Location GetLocByAreacode(string areaCode)
+        internal static Location GetLocByAreacode(string areaCode,string type)
         {
             Location loc = new Location();
             var db = new SqlHelper<object>().GetInstance();
-            var query = db.Queryable<Location>()
+            string CntrCodeWith = "";
+            if (type == "PM ")
+            {
+                CntrCodeWith = "MA";
+            }
+            else if (type == "PN ")
+            {
+                CntrCodeWith = "NA";
+            }
+            if (CntrCodeWith == "")
+            {
+                LogHelper.Info($"鎵樼洏绫诲瀷{type}涓嶅湪瑙勫畾鑼冨洿");
+            }
+                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 && c.S_ITEM_CODE == null
+                       && b.S_CNTR_CODE != null&&b.S_CNTR_CODE.Contains(CntrCodeWith) && c.S_ITEM_CODE == null
                        );
-            loc = query.First();
+                loc = query.First();
+            
+      
             return loc;
         }
 

--
Gitblit v1.9.1