647556386
2026-03-31 6f0ffcf4a6e75ac3a76c6cfd75e02de3a17d46e3
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
@@ -330,7 +330,19 @@
                    foreach (var detail in materielCalc.Details)
                    {
                        if (remainingToLock <= 0) break;
                        decimal maxLockableQty = detail.OrderQuantity - detail.OverOutQuantity-detail.LockQuantity;
                        decimal maxLockableQty = 0;
                        if (detail.LockQuantity > detail.OverOutQuantity && detail.OverOutQuantity > 0)
                        {
                             maxLockableQty = detail.OrderQuantity - detail.LockQuantity;
                        }
                        else if(detail.OverOutQuantity > 0)
                        {
                            maxLockableQty = detail.OrderQuantity - detail.OverOutQuantity;
                        }
                        else
                        {
                            maxLockableQty = detail.OrderQuantity - detail.OverOutQuantity - detail.LockQuantity;
                        }
                        if (maxLockableQty <= 0) continue;
                        decimal currentLockQty = Math.Min(remainingToLock, maxLockableQty);
                        detail.LockQuantity += currentLockQty;
@@ -1364,9 +1376,13 @@
                        Func<Dt_OutStockLockInfo, bool> wareWhere = x => string.IsNullOrEmpty(outboundOrderDetails.First().WarehouseCode) ? true : x.WarehouseCode == outboundOrderDetails.First().WarehouseCode;
                        List<Dt_OutStockLockInfo> stockLockInfos = _outboundLockInfoRepository.QueryData(x =>
                                x.OrderNo == request.OrderNo &&
                                x.MaterielCode == stockInfoDetail.MaterielCode).Where(supWhere).Where(wareWhere).ToList();
                        var stockLockInfos = _outboundLockInfoRepository.QueryData(x =>
                            x.OrderDetailIds == lockInfo.OrderDetailIds &&
                            x.OrderNo == request.OrderNo &&
                            x.MaterielCode == stockInfoDetail.MaterielCode)
                            .Where(supWhere)
                            .Where(wareWhere)
                            .ToList();
                        if (stockLockInfos != null && stockLockInfos.Any())
                        {
                            _outboundLockInfoRepository.DeleteAndMoveIntoHty(stockLockInfos, WIDESEA_Core.Enums.OperateTypeEnum.自动删除);
@@ -1792,9 +1808,13 @@
                        Func<Dt_OutStockLockInfo, bool> wareWhere = x => string.IsNullOrEmpty(outboundOrderDetails.First().WarehouseCode) ? true : x.WarehouseCode == outboundOrderDetails.First().WarehouseCode;
                        List<Dt_OutStockLockInfo> stockLockInfos = _outboundLockInfoRepository.QueryData(x =>
                                x.OrderNo == request.OrderNo &&
                                x.MaterielCode == stockDetail.MaterielCode).Where(supWhere).Where(wareWhere).ToList();
                        var stockLockInfos = _outboundLockInfoRepository.QueryData(x =>
                            x.OrderDetailIds == lockInfo.OrderDetailIds &&
                            x.OrderNo == request.OrderNo &&
                            x.MaterielCode == stockDetail.MaterielCode)
                            .Where(supWhere)
                            .Where(wareWhere)
                            .ToList();
                        if (stockLockInfos != null && stockLockInfos.Any())
                        {
                            _outboundLockInfoRepository.DeleteAndMoveIntoHty(stockLockInfos, WIDESEA_Core.Enums.OperateTypeEnum.自动删除);
@@ -2495,6 +2515,10 @@
                        return WebResponseContent.Instance.Error($"条码{request.Barcode}已无法撤销");
                    }
                }
                else
                {
                    return WebResponseContent.Instance.Error($"条码{request.Barcode}已无法撤销");
                }
                Dt_OutStockLockInfo lockInfo = _outboundLockInfoRepository.QueryFirst(x =>
                    x.OrderNo == request.OrderNo &&
@@ -2502,13 +2526,13 @@
                    x.MaterielCode == historyDetail.MaterielCode &&
                    x.PalletCode == stockInfo.PalletCode);
                if (lockInfo == null)
                {
                    return WebResponseContent.Instance.Error("该托盘已全部拣选完,不允许撤销");
                }
                _unitOfWorkManage.BeginTran();
                try
                {
                    if(lockInfo == null)
                    {
                        return WebResponseContent.Instance.Error("该托盘已全部拣选完,不允许撤销");
                    }
                    bool isUnpack = historyDetail.OperateType == "拆包-原始记录";
                    if (isUnpack)
                    {