From 695571c6009ecbc12e7d4a4fb147df7967a1260e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:21:19 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs | 137 ++++++++++++++++++++++++++++++---------------
1 files changed, 92 insertions(+), 45 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
index 23494f2..3db069b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
@@ -4,6 +4,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
@@ -51,16 +52,22 @@
{
return content.Error($"鏈壘鍒皗item?.BagNo}搴撳瓨");
}
+
//鍒ゆ柇鏄庣粏鏄惁鍏ㄩ儴鎵嚭
if (proStockInfoDetail.StockPcsQty==item.StockPcsQty)
{
delProStockDetails.Add(proStockInfoDetail);
proStockInfo.proStockInfoDetails.Remove(proStockInfoDetail);
+ item.OutDetailId = proStockInfoDetail.OutDetailId;
+ item.OutDetailSaleNo = proStockInfoDetail.OutDetailSaleNo;
}
else
{
proStockInfoDetail.StockPcsQty -= item.StockPcsQty;
proStockInfoDetail.SETQty -= item.SETQty;
+ proStockInfoDetail.OutboundQuantity = 0;
+ item.OutDetailId = 0;
+ item.OutDetailSaleNo = "";
upProStockDetails.Add(proStockInfoDetail);
}
@@ -81,7 +88,7 @@
{
_stockRepository.ProStockInfoDetailRepository.UpdateData(upProStockDetails);
}
- content.OK();
+ content.OK("鎴愬姛", proStockInfoDetails);
}
catch (Exception ex)
{
@@ -101,7 +108,9 @@
/// <returns></returns>
public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder)
{
- List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(mesRworkOutboundOrder.WarehouseId);
+ //杞崲鎴� 鎴愬搧浠撲粨搴撲俊鎭幏鍙栧熬鏁板睘鎬х殑璐т綅
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString());
+ List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId);
return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes);
}
/// <summary>
@@ -112,6 +121,8 @@
List<Dt_ProStockInfo> assignOutStocks =new List<Dt_ProStockInfo>();
float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
//stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
+ bool isCanLot = string.IsNullOrEmpty(outOrderDetail.PLot);
+ bool isCanDate = string.IsNullOrEmpty(outOrderDetail.DateCode);
if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
{
int index = 0;
@@ -119,28 +130,40 @@
{
Dt_ProStockInfo stockInfo = stockInfos[index];
float useableStockQuantity = stockInfo.proStockInfoDetails
- .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode==outOrderDetail.PCode && x.ProductVersion==outOrderDetail.PVer)
+ .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0,1))
+ && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+ && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
.Sum(x => x.StockPcsQty - x.OutboundQuantity);
- if (useableStockQuantity < needQuantity)
+ if (useableStockQuantity < needQuantity && useableStockQuantity >0)
{
- stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
+ stockInfo.proStockInfoDetails.Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1))
+ && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+ && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty);
needQuantity -= useableStockQuantity;
}
else
{
stockInfo.proStockInfoDetails.ForEach(x =>
{
- if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
+ //婊¤冻鏉′欢杩涜鍒嗛厤
+ if ((x.StockPcsQty > x.OutboundQuantity)
+ && x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1))
+ && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+ && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
{
if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
{
x.OutboundQuantity += needQuantity;
needQuantity = 0;
+ x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+ x.OutDetailId = outOrderDetail.Id;
}
else
{
needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
x.OutboundQuantity = x.StockPcsQty;
+ x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+ x.OutDetailId = outOrderDetail.Id;
}
}
});
@@ -149,41 +172,52 @@
index++;
}
}
- else
- {
- for (int i = 0; i < stockInfos.Count; i++)
- {
- Dt_ProStockInfo stockInfo = stockInfos[i];
- float useableStockQuantity = stockInfo.proStockInfoDetails
- .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
- .Sum(x => x.StockPcsQty - x.OutboundQuantity);
- if (useableStockQuantity < needQuantity)
- {
- stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
- needQuantity -= useableStockQuantity;
- }
- else
- {
- stockInfo.proStockInfoDetails.ForEach(x =>
- {
- if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
- {
- if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
- {
- x.OutboundQuantity += needQuantity;
- needQuantity = 0;
- }
- else
- {
- needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
- x.OutboundQuantity = x.StockPcsQty;
- }
- }
- });
- }
- assignOutStocks.Add(stockInfo);
- }
- }
+ #region 鎴愬搧鍙敤搴撳瓨涓嶈冻涓嶈繘琛屽垎閰�
+ //else
+ //{
+ // for (int i = 0; i < stockInfos.Count; i++)
+ // {
+ // Dt_ProStockInfo stockInfo = stockInfos[i];
+ // float useableStockQuantity = stockInfo.proStockInfoDetails
+ // .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+ // && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+ // && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
+ // .Sum(x => x.StockPcsQty - x.OutboundQuantity);
+ // if (useableStockQuantity < needQuantity)
+ // {
+ // stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
+ // needQuantity -= useableStockQuantity;
+ // }
+ // else
+ // {
+ // stockInfo.proStockInfoDetails.ForEach(x =>
+ // {
+ // if (x.StockPcsQty > x.OutboundQuantity && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+ // && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+ // && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
+ // {
+ // if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
+ // {
+ // x.OutboundQuantity += needQuantity;
+ // needQuantity = 0;
+ // }
+ // else
+ // {
+ // needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
+ // x.OutboundQuantity = x.StockPcsQty;
+ // }
+ // }
+ // });
+ // }
+ // stockInfo.proStockInfoDetails.ForEach(x =>
+ // {
+ // x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+ // x.OutDetailId = outOrderDetail.Id;
+ // });
+ // assignOutStocks.Add(stockInfo);
+ // }
+ //}
+ #endregion
residueQuantity = needQuantity;
return assignOutStocks;
}
@@ -195,6 +229,7 @@
List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>();
float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
//stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
+ bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode);
if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
{
int index = 0;
@@ -202,7 +237,10 @@
{
Dt_ProStockInfo stockInfo = stockInfos[index];
float useableStockQuantity = stockInfo.proStockInfoDetails
- .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+ .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder
+ && x.ProductCode == mesRworkOutboundOrder.ProductCode
+ && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+ && (isCanDate? isCanDate: x.DateCode == mesRworkOutboundOrder.DateCode))
.Sum(x => x.StockPcsQty - x.OutboundQuantity);
if (useableStockQuantity < needQuantity)
{
@@ -213,7 +251,10 @@
{
stockInfo.proStockInfoDetails.ForEach(x =>
{
- if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+ if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder
+ && x.ProductCode == mesRworkOutboundOrder.ProductCode
+ && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+ && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
{
if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
{
@@ -238,7 +279,10 @@
{
Dt_ProStockInfo stockInfo = stockInfos[i];
float useableStockQuantity = stockInfo.proStockInfoDetails
- .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+ .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder
+ && x.ProductCode == mesRworkOutboundOrder.ProductCode
+ && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+ && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
.Sum(x => x.StockPcsQty - x.OutboundQuantity);
if (useableStockQuantity < needQuantity)
{
@@ -249,7 +293,10 @@
{
stockInfo.proStockInfoDetails.ForEach(x =>
{
- if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+ if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder
+ && x.ProductCode == mesRworkOutboundOrder.ProductCode
+ && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+ && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
{
if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
{
--
Gitblit v1.9.3