From 70b7d36733cd77434567e564888561ffb4c87c5e Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期三, 05 三月 2025 17:09:47 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs | 175 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 88 insertions(+), 87 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" index 423d52c..31d97cd 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" @@ -34,109 +34,110 @@ _recordService = recordService; } - public (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesPPOutboundOrder) - { - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + //public (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesPPOutboundOrder) + //{ + // List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; + // float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; - float needQuantity = originalNeedQuantity; + // float needQuantity = originalNeedQuantity; - List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "",mesPPOutboundOrder.WarehouseId); - if (!stockInfos.Any()) - { - throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - } - List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); - mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; - outStocks.AddRange(autoAssignStocks); - float assignQuantity = needQuantity - residueQuantity; + // List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "",mesPPOutboundOrder.WarehouseId); + // if (!stockInfos.Any()) + // { + // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + // } + // List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); + // mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; + // outStocks.AddRange(autoAssignStocks); + // float assignQuantity = needQuantity - residueQuantity; - float orderQuantity = mesPPOutboundOrder.OrderQuantity; - for (int j = 0; j < autoAssignStocks.Count; j++) - { - float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + // float orderQuantity = mesPPOutboundOrder.OrderQuantity; + // for (int j = 0; j < autoAssignStocks.Count; j++) + // { + // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - { - float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; - if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - { - mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - outStockLockInfos.Add(outStockLockInfo); - } - else - { - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); - outStockLockInfos.Add(outStockLockInfo); - mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; - break; - } - } - } - locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + // { + // float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; + // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + // { + // mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // } + // else + // { + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; + // break; + // } + // } + // } + // locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); - } + // return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); + //} - public (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail) - { - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + //public (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail) + //{ + // List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - //Dt_MesPPCutOutboundOrder outboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x=>x.Id==mesPPOutboundOrder.OrderId).First(); - float originalNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + // //Dt_MesPPCutOutboundOrder outboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x=>x.Id==mesPPOutboundOrder.OrderId).First(); + // float originalNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - float needQuantity = originalNeedQuantity; + // float needQuantity = originalNeedQuantity; - List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPCutOutboundOrderDetail.MaterielCode, "", mesPPOutboundOrder.WarehouseId); - if (!stockInfos.Any()) - { - throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - } - List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPCutOutboundOrderDetail.MaterielCode, needQuantity, out float residueQuantity); - mesPPCutOutboundOrderDetail.LockQuantity += needQuantity - residueQuantity; - outStocks.AddRange(autoAssignStocks); - float assignQuantity = needQuantity - residueQuantity; + // List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPCutOutboundOrderDetail.MaterielCode, "", mesPPOutboundOrder.WarehouseId); + // if (!stockInfos.Any()) + // { + // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + // } + // List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPCutOutboundOrderDetail.MaterielCode, needQuantity, out float residueQuantity); + // mesPPCutOutboundOrderDetail.LockQuantity += needQuantity - residueQuantity; + // outStocks.AddRange(autoAssignStocks); + // float assignQuantity = needQuantity - residueQuantity; - float orderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - for (int j = 0; j < autoAssignStocks.Count; j++) - { - float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + // float orderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // for (int j = 0; j < autoAssignStocks.Count; j++) + // { + // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - { - float orderDetailNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity - detailAssignQuantity; - if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - { - mesPPCutOutboundOrderDetail.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - outStockLockInfos.Add(outStockLockInfo); - } - else - { - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], mesPPCutOutboundOrderDetail.OrderQuantity - mesPPCutOutboundOrderDetail.LockQuantity); - outStockLockInfos.Add(outStockLockInfo); - mesPPCutOutboundOrderDetail.LockQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - break; - } - } - } - locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + // { + // float orderDetailNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity - detailAssignQuantity; + // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + // { + // mesPPCutOutboundOrderDetail.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // } + // else + // { + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], mesPPCutOutboundOrderDetail.OrderQuantity - mesPPCutOutboundOrderDetail.LockQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // mesPPCutOutboundOrderDetail.LockQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // break; + // } + // } + // } + // locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - return (outStocks, mesPPCutOutboundOrderDetail, outStockLockInfos, locationInfos); - } + // return (outStocks, mesPPCutOutboundOrderDetail, outStockLockInfos, locationInfos); + //} + } } -- Gitblit v1.9.3