From cd78554c3da306ed8c866d971bee94457665f80c Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 30 八月 2025 17:35:51 +0800
Subject: [PATCH] ERP一期接口

---
 项目代码/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