From 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期四, 24 七月 2025 17:21:40 +0800
Subject: [PATCH] 印尼佳通-GT服务开发

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
index 9999732..7b2db7c 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
@@ -781,12 +781,12 @@
         {
             var db = new SqlHelper<object>().GetInstance();
             var childResult = db.Queryable<OutStockListChild>().Where(a => a.S_ORDER_NO == orderNo && a.COMPLETED_FLAG.Trim() == "N").Count() == 0;
-            
+
             // 1.鏌ヨ闆嗚揣鍖烘槸鍚︽湁绌鸿揣浣嶏紝娌℃湁鍒欏嚭搴撳崟瀹屾垚
             string areaCode = null;
             bool isEmptyLoc = false;
             var areaList = LocationHelper.GetAreaByCode(Settings.WHCode, 7);
-            if (areaList.Count > 0) 
+            if (areaList.Count > 0)
             {
                 areaCode = areaList[0].S_CODE;
                 var rows = db.Queryable<Location>()
@@ -802,7 +802,7 @@
                     {
                         // 鏈夊叾浠栭攣鐨勬帓锛屾帓闄�                         var count = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaCode && a.N_LOCK_STATE == 3 && a.N_ROW == item).Count();
-                        if (count > 0) 
+                        if (count > 0)
                         {
                             continue;
                         }
@@ -819,7 +819,7 @@
             }
             LogHelper.Info("isEmptyLoc:" + isEmptyLoc, "WMS");
             LogHelper.Info("childResult:" + childResult, "WMS");
-            if (childResult || isEmptyLoc) 
+            if (childResult || isEmptyLoc)
             {
                 return true;
             }
@@ -829,7 +829,7 @@
         /// <summary>
         /// 瀹屾垚鍑哄簱浠诲姟
         /// </summary>
-        /// <param name="task"></param>
+        /// <param name="cst"></param>
         /// <param name="orderNo"></param>
         /// <returns></returns>
         internal static bool completedOutstockTask(WCSTask cst, string orderNo)
@@ -1235,7 +1235,7 @@
             }
             if (priorityAsnNo != null)
             {
-                query = query.Where((a, b, c) => c.S_ASN_NO == priorityAsnNo);
+                query = query.OrderByDescending((a, b, c) => c.S_ASN_NO == priorityAsnNo ? 1 : 0);
             }
 
             var locList = query.OrderByDescending((a, b, c) => a.N_COL)
@@ -1360,12 +1360,22 @@
                 }
 
                 // 鏌ヨ鍚屾壒娆″叆搴撻攣鏁伴噺锛屽鏋滈攣鏁伴噺 >= 2 ,鍒欎笉鍐嶄粠銆愮┖鎺掋�鍏ュ簱
-                int lockNum = db.Queryable<Location>().Where(a => a.N_LOCK_STATE == 1 && a.S_LOCK_OP.Trim() == asnNo).Count();
-                LogHelper.Info("鍚屾壒娆″叆搴撻攣鏁伴噺锛� + lockNum, "Mobox");
-                if (end == null && rowNum < 2 && lockNum < 2 )
+                var lockRow = db.Queryable<Location>().Where(a => a.N_LOCK_STATE == 1 && a.S_LOCK_OP.Trim() == asnNo).Take(1).PartitionBy(l => new { l.S_AREA_CODE, l.N_ROW }).ToList();
+                LogHelper.Info("鍚屾壒娆″叆搴撻攣鏁伴噺锛� + lockRow.Count, "Mobox");
+                if (end == null && rowNum < 2 && lockRow.Count < 2 )
                 {
                     string fullerCode = null;
-                    if (rowNum == 1) 
+                    if (lockRow.Count > 0) 
+                    {
+                        var maxLoc = lockRow[0];
+                        var fuller = db.Queryable<TN_Fuller>().Where(a => a.S_AREA_CODE == maxLoc.S_AREA_CODE && a.N_ROW == maxLoc.N_ROW).First();
+                        if (fuller != null)
+                        {
+                            fullerCode = fuller.FULLER_CODE;
+                        }
+                    }
+
+                    if (fullerCode == null && rowNum > 0 ) 
                     {
                         var maxLoc = listMaxCol[0];
                         var fuller = db.Queryable<TN_Fuller>().Where(a => a.S_AREA_CODE == maxLoc.S_AREA_CODE && a.N_ROW == maxLoc.N_ROW).First();

--
Gitblit v1.9.1