From e561870f9644a5e80925346485fe623da678177f Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期二, 14 十月 2025 10:20:57 +0800
Subject: [PATCH] 调整WMS出库逻辑,原辅料可选择成品库出库;
---
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..b4be3d2 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>
+ public 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 = detail2.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