From 914d38f0eef4709c10507e403cd57fd22273829b Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期六, 20 七月 2024 16:44:42 +0800
Subject: [PATCH] Merge branch 'wxw'
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 2
Wms/WMS.BLL/Logic/AllotSku.cs | 77 ++++++++++++++++++++++++++++++++------
2 files changed, 66 insertions(+), 13 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index e746979..cddd4ff 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -4380,7 +4380,7 @@
var exAllotList = new List<BllExportAllot>();
var assign = new AllotSku();
- var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛屾棤闇�鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
+ var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛� 鏃犻渶鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
Db.BeginTran();
try
{
diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs
index a995732..50235b8 100644
--- a/Wms/WMS.BLL/Logic/AllotSku.cs
+++ b/Wms/WMS.BLL/Logic/AllotSku.cs
@@ -20,8 +20,10 @@
/// <param name="fullPalletQty">婊℃墭鏁伴噺</param>
/// <param name="fullBoxQty">婊$鏁伴噺</param>
/// <param name="stockQtyDic">鎵樺嚭搴撶墿鍝佹暟 key:搴撳瓨鎵樼洏琛ㄧ殑ID銆乿al:鎵樼洏涓婄殑鏁伴噺</param>
+ /// <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)
+ public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic,string lotNo,string isMixBox)
{
//浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級
//浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級
@@ -84,8 +86,6 @@
{
var ztNum = needQty / fullPalletQty;//闇�瑕佹暣鎵樻暟
-
-
var zps = list.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭
var sps = list.Where(s => s.Qty < fullPalletQty).ToList();//鏁f墭(鏈夊彲鑳芥槸琚攣瀹氫簡鏁伴噺鐨�)
@@ -96,7 +96,14 @@
//鏁f墭
foreach (var s in st)
{
- var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString());
+ decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
+ //涓嶆帴鍙楁嫾绠�
+ if (isMixBox == "0")
+ {
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ otherLotQty = GetMixBoxQty(s.Id, lotNo);
+ }
+ var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty - otherLotQty).ToString());
if (needQty - qty < detailQty)
{
var num = needQty - qty;
@@ -119,7 +126,14 @@
var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
foreach (var ss in zt)
{
- var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+ decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
+ //涓嶆帴鍙楁嫾绠�
+ if (isMixBox == "0")
+ {
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ otherLotQty = GetMixBoxQty(ss.Id, lotNo);
+ }
+ var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
if (needQty - qty < detailQty)
{
var num = needQty - qty;
@@ -135,10 +149,7 @@
break;
}
}
-
-
}
-
}
else if (allotSet == 1)//浼樺厛鏁存墭锛堝垎閰嶅悎閫傜殑鏁存墭鏁伴噺锛�
{
@@ -153,7 +164,14 @@
var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級
foreach (var ss in zt)
{
- var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+ decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
+ //涓嶆帴鍙楁嫾绠�
+ if (isMixBox == "0")
+ {
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ otherLotQty = GetMixBoxQty(ss.Id, lotNo);
+ }
+ var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
if (needQty - qty < detailQty)
{
break;
@@ -174,7 +192,14 @@
foreach (var ss in zt)
{
- var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+ decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
+ //涓嶆帴鍙楁嫾绠�
+ if (isMixBox == "0")
+ {
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ otherLotQty = GetMixBoxQty(ss.Id, lotNo);
+ }
+ var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
if (needQty - qty < detailQty)
{
var num = needQty - qty;
@@ -197,7 +222,14 @@
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 = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString());
+ decimal otherLotQty = 0;//娣风涓叾浠栨壒娆℃暟閲�
+ //涓嶆帴鍙楁嫾绠�
+ if (isMixBox == "0")
+ {
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ otherLotQty = GetMixBoxQty(ss.Id, lotNo);
+ }
+ var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty - otherLotQty).ToString());
if (needQty - qty < detailQty)
{
var num = needQty - qty;
@@ -213,7 +245,6 @@
}
}
}
-
}
}
@@ -230,6 +261,28 @@
}
}
+ /// <summary>
+ /// 鏌ユ壘鍑烘贩绠变腑鍏朵粬鎵规鎬绘暟閲�
+ /// </summary>
+ /// <param name="stockDetailId"></param>
+ /// <param name="lotNo"></param>
+ /// <returns></returns>
+ private decimal GetMixBoxQty(int stockDetailId,string lotNo)
+ {
+ var contextDb = DataContext.Db;
+ //鏌ユ壘鍑烘贩绠遍泦鍚�
+ List<string> mixBoxList = contextDb.Queryable<DataBoxInfo>()
+ .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId)
+ .GroupBy(g => g.LotNo)
+ .Having(h => SqlFunc.AggregateCount(h.LotNo) > 1)
+ .Select(s => s.BoxNo).ToList();
+
+ decimal otherLotQty = contextDb.Queryable<DataBoxInfo>()
+ .Where(w => w.IsDel == "0" && w.StockDetailId == stockDetailId && mixBoxList.Contains(w.BoxNo) && w.LotNo != lotNo)
+ .Sum(s => s.Qty);
+
+ return otherLotQty;
+ }
/// <summary>
/// JC23棰嗘枡鍑哄簱鍒嗛厤璐х墿锛堝垎閰嶆墭鐩樹笂鍏ㄩ儴鐗╂枡锛岄槻姝㈠洓妤间笉鍚屾姇鏂欏彛鍒嗛厤鍚屼竴鎵樼洏鐗╂枡鍐茬獊锛�
--
Gitblit v1.8.0