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