Demo
2024-03-16 7f4b5fb7a89052f1fbd2e00b34e60e1b55f73ab3
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;
@@ -54,8 +56,10 @@
                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();//散托(有可能是被锁定了数量的)
                var list = GetDataListOrderByDept(palletList);
                var zps = list.Where(s => s.Qty >= fullPalletQty).ToList();//整托
                var sps = list.Where(s => s.Qty < fullPalletQty).ToList();//散托(有可能是被锁定了数量的)
                if (allotSet == 0)//优先零箱(出完零箱出整箱)
                {
@@ -218,6 +222,7 @@
        //--------------------------------------------------------------------------------------------------------------
        #region MyRegion
        ///// <summary>
        ///// 获得背包承重w,装货物o,从第k件向后考虑,得到的最大价值
@@ -260,5 +265,50 @@
        //    return a > b ? a : b;
        //}
        #endregion
        private List<StockDetailDto> GetDataListOrderByDept(List<DataStockDetail> palletList)
        {
            try
            {
                var Db = DataContext.Db;
                var data = new List<StockDetailDto>();
                //库外托盘
                var detail1 = palletList.Where(m => string.IsNullOrWhiteSpace(m.LocatNo)).ToList();
                //平库内托盘
                var detail2 = palletList.Where(m => m.WareHouseNo == "W02").ToList();
                //立库内托盘
                var detail3 = palletList.Where(m => m.WareHouseNo == "W01").ToList();
                var data1 = detail1.Select(m => new StockDetailDto()).ToList();
                var data2 = detail2.Select(m => new StockDetailDto()).ToList();
                var data3 = detail3.Select(m => new StockDetailDto()).ToList();
                foreach (var item in data2)
                {
                    var dept = item.LocatNo.Substring(5,2);
                    item.Dept = int.Parse(dept);
                }
                foreach (var item in data3)
                {
                    var dept = item.LocatNo.Substring(6, 2);
                    item.Dept = int.Parse(dept);
                }
                data.AddRange(data1);
                data.AddRange(data2.OrderBy(m => m.Dept).ToList());
                data.AddRange(data3.OrderBy(m => m.Dept).ToList());
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
    }
}