pan
2025-11-20 667d8bdefa2d674443b56baf30591202718b631f
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -188,7 +188,8 @@
                    _unitOfWorkManage.BeginTran();
                    foreach (var item in deletePurchaseOrderDetails)
                    {
                        _inboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.自动删除);
                        _inboundOrderDetailRepository.DeleteData(item);
                        //_inboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.自动删除);
                    }
                    _inboundOrderDetailRepository.UpdateData(updateInboundOrderDetails);
@@ -630,5 +631,42 @@
            }
        }
        public WebResponseContent UndoPalletGroup(string palletCode)
        {
            if (string.IsNullOrWhiteSpace(palletCode))
            {
                return WebResponseContent.Instance.Error("托盘号不能为空");
            }
           var stock= _stockRepository.Db.Queryable<Dt_StockInfo>().Includes(o=>o.Details).First(x => x.PalletCode == palletCode && x.StockStatus==3);
            if (stock == null)
            {
                return WebResponseContent.Instance.Error($"未找到托盘号{palletCode}对应的库存记录");
            }
            //  èŽ·å–åº“å­˜è¯¦æƒ…å…³è”çš„æ‰€æœ‰å…¥åº“å•å·
            var relatedOrderNos = stock.Details.Select(d => d.OrderNo).First();
            //  æŸ¥è¯¢æ‰€æœ‰å…³è”的入库单(含详情)
            var inboundOrders = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>()
                .Includes(x => x.Details)
                .Where(x => relatedOrderNos==x.InboundOrderNo)
                .First();
            var barcodes = stock.Details.Select(d => d.Barcode).ToList();
                // åŒ¹é…åº“存条码对应的入库单明细
                var matchedInboundDetails = inboundOrders.Details
                    ?.Where(d => barcodes.Contains(d.Barcode))
                    .ToList();
            foreach (var detail in matchedInboundDetails)
            {
                detail.ReceiptQuantity = 0;
                detail.OrderDetailStatus = 0;
                _inboundOrderDetailRepository.UpdateData(detail);
            }
            _stockDetailRepository.DeleteData(stock.Details);
            _stockRepository.DeleteData(stock);
            return WebResponseContent.Instance.OK();
        }
    }
}