From 02abdb2a7821e1eacc2b8ddc91e398cd9906c8cf Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期四, 13 三月 2025 18:36:54 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/Logic/AllotSku.cs |  111 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 69 insertions(+), 42 deletions(-)

diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs
index 03ae06d..4a44dff 100644
--- a/Wms/WMS.BLL/Logic/AllotSku.cs
+++ b/Wms/WMS.BLL/Logic/AllotSku.cs
@@ -23,7 +23,7 @@
         /// <param name="lotNo">鎵规</param>
         /// <param name="isMixBox">鏄惁鎺ュ彈鎷肩 0锛氬惁  1锛氭槸</param>
         /// <returns></returns>
-        public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string lotNo,string isMixBox)
+        public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string house)
         {
             //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級
             //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級
@@ -55,8 +55,13 @@
                     }
                 }
                 #endregion
+                var list = palletList;
                 decimal qty = 0; //鍒嗛厤鐨勬�绘暟閲�
-                var list = GetDataListOrderByDept(palletList);
+
+                if (house == "W01") //浠撳簱鏄瘑闆嗗簱鍏堣繘琛屾帓搴�
+                {
+                    list = GetDataListOrder(palletList);
+                }
 
                 if (fullPalletQty == 0)//鏃犲寘瑁呯墿鏂欏垎閰�
                 {
@@ -96,14 +101,7 @@
                                                                                                                           //鏁f墭
                         foreach (var s in st)
                         {
-                            decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                            //涓嶆帴鍙楁嫾绠�
-                            if (isMixBox == "0")
-                            {
-                                //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                otherLotQty = GetMixBoxQty(s.Id, lotNo);
-                            }
-                            var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty - otherLotQty).ToString());
+                            var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString());
                             if (needQty - qty < detailQty)
                             {
                                 var num = needQty - qty;
@@ -126,14 +124,7 @@
                             var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -164,14 +155,7 @@
                             var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     break;
@@ -192,14 +176,7 @@
 
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -222,14 +199,7 @@
                             var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//鎵�鏈夋湭浣跨敤锛堟湭琚垎閰嶇殑锛�
                             foreach (var ss in zt)
                             {
-                                decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
-                                //涓嶆帴鍙楁嫾绠�
-                                if (isMixBox == "0")
-                                {
-                                    //鏌ユ壘鍑烘贩绠遍泦鍚�
-                                    otherLotQty = GetMixBoxQty(ss.Id, lotNo);
-                                }
-                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
+                                var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
                                 if (needQty - qty < detailQty)
                                 {
                                     var num = needQty - qty;
@@ -261,6 +231,63 @@
             }
 
         }
+
+        /// <summary>
+        /// 鏍规嵁鍌ㄤ綅娣卞害鑾峰彇鍒嗛厤鐨勪紭鍏堢骇鍒俊鎭�(瀵嗛泦搴�)
+        /// </summary>
+        /// <param name="palletList"></param>
+        /// <returns></returns>
+        private List<DataStockDetail> GetDataListOrder(List<DataStockDetail> palletList)
+        {
+            try
+            {
+                var Db = DataContext.Db;
+                var data = new List<DataStockDetail>();
+                var locateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W01").ToList(); 
+                var list = palletList;
+                //搴撳鎵樼洏
+                var detail1 = list.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).OrderByDescending(a => a.PalletTags).ToList();
+                // 搴撳
+                data.AddRange(detail1);             
+                //瀵嗛泦搴撳唴鎵樼洏
+                var detail2 = list.Where(m => m.WareHouseNo == "W01").ToList();
+
+                var detail3 = list.GroupBy(m=>m.RoadwayNo).OrderBy(m=>m.Key).ToList();
+
+                foreach (var item in detail3)
+                {
+                    var locates = locateList.Where(m => m.RoadwayNo == item.Key).FirstOrDefault();
+                    if (locates == null)
+                    {
+                        throw new Exception("鏈煡璇㈠埌宸烽亾鍐呯殑鍌ㄤ綅淇℃伅");
+                    }
+                    //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱  ABC  BCE
+                    //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+                    //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+                    var bol = String.CompareOrdinal(locates.LocatNo, locates.AisleOne);
+
+                    //鍌ㄤ綅灏忎簬閫氶亾鍙�   鍊掑簭
+                    //鍌ㄤ綅澶т簬閫氶亾鍙�   姝e簭
+                    if (bol < 0)
+                    {
+                        //var s = item.OrderByDescending(m => m.LocatNo).ToList();
+                        data.AddRange(item.OrderByDescending(m => m.LocatNo));
+                    }
+                    if (bol > 0)
+                    {
+                        data.AddRange(item.OrderBy(m => m.LocatNo));
+                    }
+
+                }
+                
+                return data;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
         /// <summary>
         /// 鏌ユ壘鍑烘贩绠变腑鍏朵粬鎵规鎬绘暟閲�
         /// </summary>

--
Gitblit v1.8.0