From 9ae0890dd74771ba9edd44d4830e0de37f8d9938 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 26 九月 2025 16:55:03 +0800
Subject: [PATCH] MES接口优化,老厂排程优化等
---
项目代码/WMS/WMSServices/WIDESEA_StockService/ProStockInfoService.cs | 311 ---------------------------------------------------
1 files changed, 0 insertions(+), 311 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 99a9bb7..aff2f8f 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,316 +26,5 @@
_stockRepository = stockRepository;
_basicRepository = basicRepository;
}
- /// <summary>
- /// 鏍规嵁澶栧寘淇℃伅瑙g粦鍐呭寘淇℃伅
- /// </summary>
- public WebResponseContent UnBindStock(List<Dt_ProStockInfoDetail> proStockInfoDetails)
- {
- WebResponseContent content = new WebResponseContent();
- //鏍规嵁鍐呭寘鍙疯繘琛屽簱瀛樻墸闄�
- try
- {
- //鑾峰彇搴撳瓨
- 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)
- {
- 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)
- {
- 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);
- }
-
- if (proStockInfo.proStockInfoDetails.Count==0)
- {
- delProStockInfos.Add(proStockInfo);
- }
- }
- 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;
- }
- //鏌ユ壘鍙敤搴撳瓨
- public List<Dt_ProStockInfo> GetUseableStocks(int warehoseId,Dt_ProOutOrderDetail proOutOrderDetail)
- {
- List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
- return BaseDal.GetProStocks(proOutOrderDetail,locationCodes);
- }
- /// <summary>
- /// MES鎻愬簱鍙敤搴撳瓨
- /// </summary>
- /// <returns></returns>
- public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder)
- {
- //杞崲鎴� 鎴愬搧浠撲粨搴撲俊鎭幏鍙栧熬鏁板睘鎬х殑璐т綅
- 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>
- /// 鑾峰彇鍑哄簱搴撳瓨
- /// </summary>
- public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ProOutOrderDetail outOrderDetail, float needQuantity, out float residueQuantity)
- {
- 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;
- while (needQuantity > 0)
- {
- Dt_ProStockInfo stockInfo = stockInfos[index];
- float useableStockQuantity = 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))
- .Sum(x => x.StockPcsQty - x.OutboundQuantity);
- if (useableStockQuantity < needQuantity)
- {
- 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.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;
- }
- }
- });
- }
- assignOutStocks.Add(stockInfo);
- index++;
- }
- }
- #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;
- }
- /// <summary>
- /// 鑾峰彇MES鎻愬簱搴撳瓨
- /// </summary>
- public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_MesRworkOutboundOrder mesRworkOutboundOrder, float needQuantity, out float residueQuantity)
- {
- 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;
- while (needQuantity > 0)
- {
- Dt_ProStockInfo stockInfo = stockInfos[index];
- float useableStockQuantity = stockInfo.proStockInfoDetails
- .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)
- {
- stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
- needQuantity -= useableStockQuantity;
- }
- else
- {
- stockInfo.proStockInfoDetails.ForEach(x =>
- {
- 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)
- {
- x.OutboundQuantity += needQuantity;
- needQuantity = 0;
- }
- else
- {
- needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
- x.OutboundQuantity = x.StockPcsQty;
- }
- }
- });
- }
- assignOutStocks.Add(stockInfo);
- index++;
- }
- }
- else
- {
- for (int i = 0; i < stockInfos.Count; i++)
- {
- Dt_ProStockInfo stockInfo = stockInfos[i];
- float useableStockQuantity = stockInfo.proStockInfoDetails
- .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)
- {
- stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
- needQuantity -= useableStockQuantity;
- }
- else
- {
- stockInfo.proStockInfoDetails.ForEach(x =>
- {
- 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)
- {
- x.OutboundQuantity += needQuantity;
- needQuantity = 0;
- }
- else
- {
- needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
- x.OutboundQuantity = x.StockPcsQty;
- }
- }
- });
- }
- assignOutStocks.Add(stockInfo);
- }
- }
- residueQuantity = needQuantity;
- return assignOutStocks;
- }
- ////澶勭悊鍑哄簱搴撳瓨
- //public (List<Dt_ProStockInfoDetail>?, List<Dt_ProStockInfoDetail>?) HandleOutProStock(Dt_ProStockInfo proStockInfo)
- //{
- // List<Dt_ProStockInfoDetail>? deleteStockDetails = null;
- // List<Dt_ProStockInfoDetail>? updateStockDetails = null;
- // foreach (var item in proStockInfo.proStockInfoDetails)
- // {
- // if (item.StockPcsQty==item.OutboundQuantity)
- // {
- // item.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
- // deleteStockDetails.Add(item);
- // }
- // else if(item.StockPcsQty> item.OutboundQuantity && item.OutboundQuantity>0)
- // {
- // item.StockPcsQty-=item.OutboundQuantity;
- // updateStockDetails.Add(item);
- // }
- // }
- // return (deleteStockDetails, updateStockDetails);
- //}
}
}
--
Gitblit v1.9.3