1
heshaofeng
2026-03-19 c866c43016f12a9db80095d9e5fd7bbc3dcaeb66
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -146,24 +146,24 @@
                            BarcodeQty = item.OrderQuantity,
                            BarcodeUnit = item.Unit,
                        };
                        var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                        outboundOrderDetail.Unit = issueoStockResult.Unit;
                        outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                        var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
                        outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
                        var unitConvertResult = await ConvertUnitAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty, item.BarcodeMoveQty);
                        outboundOrderDetail.Unit = unitConvertResult.Unit;
                        outboundOrderDetail.OrderQuantity = unitConvertResult.OrderQuantity;
                        outboundOrderDetail.MoveQty = unitConvertResult.MoveQty;
                        outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
                        outboundOrderDetails.Add(outboundOrderDetail);
                    }
                    else
                    {
                        var unitConvertResult = await ConvertUnitAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty, item.BarcodeMoveQty);
                        #region é”å®šçŠ¶æ€ä¸‹éžæ•°é‡å­—æ®µä¸€è‡´æ€§æ ¡éªŒ
                        if (outboundOrderDetail.LockQuantity != 0)
                        {
                            var isFieldChanged = !string.Equals(outboundOrderDetail.MaterielCode, item.MaterielCode)
                                || !string.Equals(outboundOrderDetail.SupplyCode, item.SupplyCode)
                                || !string.Equals(outboundOrderDetail.BatchNo, item.BatchNo)
                                || !string.Equals(outboundOrderDetail.Unit, item.Unit)
                                || !string.Equals(outboundOrderDetail.Unit, unitConvertResult.Unit)
                                || !string.Equals(outboundOrderDetail.WarehouseCode, item.WarehouseCode)
                                || !string.Equals(outboundOrderDetail.lineNo, item.lineNo)
                                ;
@@ -203,12 +203,9 @@
                            outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
                            outboundOrderDetail.BarcodeQty = item.OrderQuantity;
                            outboundOrderDetail.BarcodeUnit = item.Unit;
                            var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
                            outboundOrderDetail.Unit = issueoStockResult.Unit;
                            outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
                            var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
                            outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
                            outboundOrderDetail.Unit = unitConvertResult.Unit;
                            outboundOrderDetail.OrderQuantity = unitConvertResult.OrderQuantity;
                            outboundOrderDetail.MoveQty = unitConvertResult.MoveQty;
                        }
                        else
                        {
@@ -510,5 +507,26 @@
            return new PageGridData<Dt_OutboundOrder>(totalCount, data);
        }
        private async Task<UnitConvertResult> ConvertUnitAsync(string materielCode, string barcodeUnit, decimal barcodeQty, decimal barcodeMoveQty)
        {
            var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(materielCode, barcodeUnit, barcodeQty);
            var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(materielCode, barcodeUnit, barcodeMoveQty);
            return new UnitConvertResult
            {
                Unit = issueoStockResult.Unit,
                OrderQuantity = issueoStockResult.Quantity,
                MoveQty = moveissueoStockResult.Quantity
            };
        }
        private class UnitConvertResult
        {
            public string Unit { get; set; }
            public decimal OrderQuantity { get; set; }
            public decimal MoveQty { get; set; }
        }
    }
}