From 5b529126898f79c90062020389b56702a92bd490 Mon Sep 17 00:00:00 2001 From: yuyou_x <2336760928@qq.com> Date: 星期六, 23 三月 2024 15:01:40 +0800 Subject: [PATCH] Merge branch 'yyk' --- Wms/WMS.BLL/Logic/AllotSku.cs | 109 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 97 insertions(+), 12 deletions(-) diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs index d0af838..e54bfcb 100644 --- a/Wms/WMS.BLL/Logic/AllotSku.cs +++ b/Wms/WMS.BLL/Logic/AllotSku.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Model.ModelDto.DataDto; +using SqlSugar; using WMS.Entity.Context; using WMS.Entity.DataEntity; using WMS.Entity.SysEntity; @@ -14,14 +16,12 @@ /// 鍒嗛厤璐х墿 /// </summary> /// <param name="palletList">搴撳瓨鏄庣粏闆嗗悎</param> - /// <param name="goodCode">鐗╂枡缂栫爜</param> - /// <param name="lotNo">鎵规</param> /// <param name="needQty">闇�瑕佸垎閰嶇殑鏁伴噺</param> /// <param name="fullPalletQty">婊℃墭鏁伴噺</param> /// <param name="fullBoxQty">婊$鏁伴噺</param> /// <param name="stockQtyDic">鎵樺嚭搴撶墿鍝佹暟 key:搴撳瓨鎵樼洏琛ㄧ殑ID銆乿al:鎵樼洏涓婄殑鏁伴噺</param> /// <returns></returns> - public int AllotPallets(List<DataStockDetail> palletList, int needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, int> stockQtyDic) + public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic) { //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級 //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級 @@ -53,11 +53,13 @@ } } #endregion - var qty = 0; //鍒嗛厤鐨勬�绘暟閲� + decimal qty = 0; //鍒嗛厤鐨勬�绘暟閲� var ztNum = needQty / fullPalletQty;//闇�瑕佹暣鎵樻暟 - var zps = palletList.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭 - var sps = palletList.Where(s => s.Qty < fullPalletQty).ToList();//鏁f墭(鏈夊彲鑳芥槸琚攣瀹氫簡鏁伴噺鐨�) + var list = GetDataListOrderByDept(palletList); + + var zps = list.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭 + var sps = list.Where(s => s.Qty < fullPalletQty).ToList();//鏁f墭(鏈夊彲鑳芥槸琚攣瀹氫簡鏁伴噺鐨�) if (allotSet == 0)//浼樺厛闆剁锛堝嚭瀹岄浂绠卞嚭鏁寸锛� { @@ -66,7 +68,7 @@ //鏁f墭 foreach (var s in st) { - var detailQty = int.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); + var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -89,7 +91,7 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -123,7 +125,7 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { break; @@ -144,7 +146,7 @@ foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -167,7 +169,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) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -206,7 +208,7 @@ /// <param name="dic"></param> /// <param name="key"></param> /// <param name="v"></param> - private void SaveDic(Dictionary<int, int> dic, int key, int v) + private void SaveDic(Dictionary<int, decimal> dic, int key, decimal v) { if (dic.ContainsKey(key)) { @@ -220,6 +222,7 @@ //-------------------------------------------------------------------------------------------------------------- + #region MyRegion ///// <summary> ///// 鑾峰緱鑳屽寘鎵块噸w锛岃璐х墿o锛屼粠绗琸浠跺悜鍚庤�冭檻锛屽緱鍒扮殑鏈�澶т环鍊� @@ -262,5 +265,87 @@ // return a > b ? a : b; //} + #endregion + + + private List<StockDetailDto> GetDataListOrderByDept(List<DataStockDetail> palletList) + { + try + { + var Db = DataContext.Db; + var data = new List<StockDetailDto>(); + + var list = palletList.Select(m => new StockDetailDto() + { + Id = m.Id, + LotNo = m.LotNo, + LotText = m.LotText, + SupplierLot = m.SupplierLot, + OwnerNo = m.OwnerNo, + OwnerName = m.OwnerName, + SupplierNo = m.SupplierNo, + SupplierName = m.SupplierName, + SkuNo = m.SkuNo, + SkuName = m.SkuName, + Standard = m.Standard, + Qty = m.Qty, + LockQty = m.LockQty, + FrozenQty = m.FrozenQty, + InspectQty = m.InspectQty, + ASNNo = m.ASNNo, + ASNDetailNo = m.ASNDetailNo, + WareHouseNo = m.WareHouseNo, + RoadwayNo = m.RoadwayNo, + AreaNo = m.AreaNo, + LocatNo = m.LocatNo, + PalletNo = m.PalletNo, + PalletNo2 = m.PalletNo2, + PalletNo3 = m.PalletNo3, + CompleteTime = m.CompleteTime, + ProductionTime = m.ProductionTime, + ExpirationTime = m.ExpirationTime, + Status = m.Status, + InspectMark = m.InspectMark, + BitPalletMark = m.BitPalletMark, + InspectStatus = m.InspectStatus, + InspectTime = m.InspectTime, + PackagNo = m.PackagNo, + IsBale = m.IsBale, + IsBelt = m.IsBelt, + Demo = m.Demo, + + }).ToList(); + //搴撳鎵樼洏 + var detail1 = list.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).ToList(); + //骞冲簱鍐呮墭鐩� + var detail2 = list.Where(m => m.WareHouseNo == "W02").ToList(); + //绔嬪簱鍐呮墭鐩� + var detail3 = list.Where(m => m.WareHouseNo == "W01").ToList(); + + foreach (var item in detail2) + { + var dept = item.LocatNo.Substring(5,2); + + item.Dept = int.Parse(dept); + } + foreach (var item in detail3) + { + var dept = item.LocatNo.Substring(6, 2); + + item.Dept = int.Parse(dept); + } + data.AddRange(detail1); + data.AddRange(detail2.OrderBy(m => m.Dept).ToList()); + data.AddRange(detail3.OrderBy(m => m.Dept).ToList()); + + return data; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + } } -- Gitblit v1.8.0