pan
2025-11-24 0f354b1feb21d6812e054a0531d0978ebbdca479
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs
@@ -190,9 +190,7 @@
                //  æ‰§è¡Œåˆ†æ‹£é€»è¾‘
                var pickingResult = await ExecutePickingLogic(lockInfo, orderDetail, stockDetail, orderNo, palletCode, barcode, actualQty);
                // æ›´æ–°ç›¸å…³æ•°æ®
                await UpdateOrderRelatedData(orderDetail.Id, pickingResult.ActualPickedQty, orderNo);
                // è®°å½•操作历史
                await RecordPickingHistory(pickingResult, orderNo, palletCode);
@@ -549,9 +547,11 @@
            return ValidationResult<bool>.Success(true);
        }
        private async Task<PickingResult> ExecutePickingLogic(
            Dt_OutStockLockInfo lockInfo, Dt_OutboundOrderDetail orderDetail, Dt_StockInfoDetail stockDetail,
            string orderNo, string palletCode, string barcode, decimal actualQty)
    Dt_OutStockLockInfo lockInfo, Dt_OutboundOrderDetail orderDetail, Dt_StockInfoDetail stockDetail,
    string orderNo, string palletCode, string barcode, decimal actualQty)
        {
            decimal stockQuantity = stockDetail.StockQuantity;
            var result = new PickingResult
@@ -562,18 +562,29 @@
                ActualPickedQty = actualQty
            };
            decimal finalPickedQty = actualQty;
            if (actualQty < stockQuantity)
            {
                // æ‹†åŒ…场景
                await HandleSplitPacking(lockInfo, stockDetail, actualQty, stockQuantity, result);
                finalPickedQty = actualQty;
            }
            else if (actualQty == stockQuantity)
            {
                // æ•´åŒ…拣选
                await HandleFullPicking(lockInfo, stockDetail, actualQty, result);
                finalPickedQty = actualQty;
            }
            else
            {
                // éƒ¨åˆ†æ‹£é€‰ï¼ˆåº“存不足)
                await HandlePartialPicking(lockInfo, stockDetail, actualQty, stockQuantity, result);
                finalPickedQty = result.ActualPickedQty; // å¯èƒ½è¢«è°ƒæ•´
            }
            // ç»Ÿä¸€æ›´æ–°è®¢å•数据(所有分支都从这里更新)
            await UpdateOrderRelatedData(lockInfo.OrderDetailId, finalPickedQty, orderNo);
            return result;
        }
@@ -608,8 +619,7 @@
            result.FinalBarcode = newBarcode;
            result.SplitResults.AddRange(CreateSplitResults(lockInfo, actualQty, remainingStockQty, newBarcode, stockDetail.Barcode));
            await UpdateOrderRelatedData(lockInfo.OrderDetailId, actualQty, lockInfo.OrderNo);
            _logger.LogInformation($"拆包分拣更新订单明细 - OrderDetailId: {lockInfo.OrderDetailId}, åˆ†æ‹£æ•°é‡: {actualQty}");
        }