From fe256a7afaa132910875d3dc73783d9ab2d7ace5 Mon Sep 17 00:00:00 2001
From: liulijun <liulijun@hnkhzn.com>
Date: 星期四, 12 三月 2026 18:57:44 +0800
Subject: [PATCH] 老厂排程单页面增加用纸顺序号和是否缺料
---
项目代码/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs | 95 ++++++++++++++++++-----------------------------
1 files changed, 36 insertions(+), 59 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs"
index b15fe63..b584466 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs"
@@ -26,75 +26,52 @@
_stockRepository = stockRepository;
_basicRepository = basicRepository;
}
- /// <summary>
- /// 鏍规嵁澶栧寘淇℃伅瑙g粦鍐呭寘淇℃伅
- /// </summary>
- public WebResponseContent UnBindStock(List<Dt_ProStockInfoDetail> proStockInfoDetails)
+ public List<Dt_ProStockInfo> GetUseableStocks(string materielCode, int warehoseId)
{
- WebResponseContent content = new WebResponseContent();
- //鏍规嵁鍐呭寘鍙疯繘琛屽簱瀛樻墸闄�
- try
+ List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
+
+ return BaseDal.GetStockInfos(materielCode, locationCodes);
+ }
+ public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, decimal needQuantity)
+ {
+ List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>();
+
+ decimal stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockQty-v.OutboundQuantity)).Sum(x => x);
+
+ if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
{
- //鑾峰彇搴撳瓨
- List<string> BagNos = proStockInfoDetails.Select(x => x.BagNo).Distinct().ToList();
- List<Dt_ProStockInfo> proStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>()
- .Where(x => x.StockStatus == StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt())
- .Includes(x => x.proStockInfoDetails)
- .Where(x => x.proStockInfoDetails.Any(v => BagNos.Contains(v.BagNo))).Distinct().ToList();
- List<Dt_ProStockInfoDetail> delProStockDetails=new List<Dt_ProStockInfoDetail>();
- List<Dt_ProStockInfoDetail> upProStockDetails = new List<Dt_ProStockInfoDetail>();
- List<Dt_ProStockInfo> delProStockInfos = new List<Dt_ProStockInfo>();
- foreach (var item in proStockInfoDetails)
+ int index = 0;
+ while (needQuantity > 0)
{
- Dt_ProStockInfo? proStockInfo = proStockInfos.Where(x => x.proStockInfoDetails.Any(v => v.BagNo == item?.BagNo)).FirstOrDefault();
- Dt_ProStockInfoDetail? proStockInfoDetail = proStockInfo?.proStockInfoDetails.Where(x => x.BagNo == item?.BagNo).FirstOrDefault();
- if (proStockInfo==null || proStockInfoDetail == null)
+ Dt_ProStockInfo stockInfo = stockInfos[index];
+ decimal useableStockQuantity = stockInfo.proStockInfoDetails
+ .Sum(x => x.StockQty - x.OutboundQuantity);
+ if (useableStockQuantity < needQuantity && useableStockQuantity > 0)
{
- 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;
+ stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockQty);
+ needQuantity -= useableStockQuantity;
}
else
{
- proStockInfoDetail.StockPcsQty -= item.StockPcsQty;
- proStockInfoDetail.SETQty -= item.SETQty;
- proStockInfoDetail.OutboundQuantity = 0;
- item.OutDetailId = 0;
- item.OutDetailSaleNo = "";
- upProStockDetails.Add(proStockInfoDetail);
+ stockInfo.proStockInfoDetails.ForEach(x =>
+ {
+ if (x.StockQty - x.OutboundQuantity >= needQuantity)
+ {
+ x.OutboundQuantity += needQuantity;
+ needQuantity = 0;
+ }
+ else
+ {
+ needQuantity -= (x.StockQty - x.OutboundQuantity);
+ x.OutboundQuantity = x.StockQty;
+ }
+ });
}
-
- if (proStockInfo.proStockInfoDetails.Count==0)
- {
- delProStockInfos.Add(proStockInfo);
- }
+ assignOutStocks.Add(stockInfo);
+ index++;
}
- if (delProStockInfos.Count>0)
- {
- BaseDal.DeleteAndMoveIntoHty(delProStockInfos, OperateTypeEnum.鑷姩鍒犻櫎);
- }
- if (delProStockDetails.Count > 0)
- {
- _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delProStockDetails, OperateTypeEnum.鑷姩鍒犻櫎);
- }
- if (upProStockDetails.Count > 0)
- {
- _stockRepository.ProStockInfoDetailRepository.UpdateData(upProStockDetails);
- }
- content.OK("鎴愬姛", proStockInfoDetails);
}
- catch (Exception ex)
- {
- content.Error(ex.Message);
- }
- return content;
+ return assignOutStocks;
}
}
}
--
Gitblit v1.9.3