pan
2025-11-28 8f45f14bda4601c6d65ce33d7052c9b2682306fd
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs
@@ -99,7 +99,7 @@
            {
                if (businessType == BusinessTypeEnum.外部仓库调智仓)
                {
                    allocateOrder.OrderType = InOrderTypeEnum.Allocat.ObjToInt();
                    allocateOrder.OrderType = InOrderTypeEnum.AllocatInbound.ObjToInt();
                    var inboundOrders = ConvertToInboundOrders(allocateOrder);
                    await _inboundService.InbounOrderService.ReceiveInboundOrder(inboundOrders, 1);
                }
@@ -107,7 +107,7 @@
                {
                    if (businessType == BusinessTypeEnum.智仓调外部仓库)
                    {
                        allocateOrder.OrderType = InOrderTypeEnum.Allocat.ObjToInt();
                        allocateOrder.OrderType = InOrderTypeEnum.AllocatOutbound.ObjToInt();
                    }
                    else if (businessType == BusinessTypeEnum.智仓调智仓)
                    {
@@ -279,6 +279,11 @@
        public List<Dt_InboundOrder> ConvertToInboundOrders(Dt_AllocateOrder allocateOrder)
        {
            var distinctDetails = allocateOrder.Details
                .GroupBy(d => d.Barcode)
                .Select(g => g.First())
                .ToList();
            return new List<Dt_InboundOrder>()
            {
                new Dt_InboundOrder(){
@@ -293,9 +298,9 @@
                   IsBatch=allocateOrder.IsBatch,
                   FactoryArea=allocateOrder.FactoryArea,
                   Remark=allocateOrder.Remark,
                   Details=allocateOrder.Details.Select(detail=>new Dt_InboundOrderDetail
                   Details=distinctDetails.Select(detail=>new Dt_InboundOrderDetail
                   {
                       OrderId= detail.OrderId,
                       OrderId= 0,
                       MaterielCode=detail.MaterielCode,
                       MaterielName="",
                       BatchNo=detail.BatchNo,
@@ -305,6 +310,7 @@
                       OrderDetailStatus=detail.OrderDetailStatus,
                       Unit=detail.Unit,
                       RowNo=0,
                       lineNo=detail.LineNo,
                       SupplyCode=detail.SupplyCode,
                       WarehouseCode=detail.WarehouseCode,
                       Barcode=detail.Barcode,
@@ -318,6 +324,18 @@
        public Dt_OutboundOrder ConvertToOutboundOrders(Dt_AllocateOrder allocateOrder)
        {
            var distinctDetails = allocateOrder.Details
    .GroupBy(d => string.IsNullOrEmpty(d.Barcode)
        ? $"{d.MaterielCode}_{d.BatchNo}_{d.SupplyCode}_{d.WarehouseCode}"
        : d.Barcode)
    .Select(g => new
    {
        Detail = g.First(),
        //汇总分组内的数量
        Qty = g.Sum(x => x.BarcodeQty ?? x.OrderQuantity)
    }).ToList();
            return new Dt_OutboundOrder()
            {
                WarehouseId = allocateOrder.WarehouseId,
@@ -332,20 +350,23 @@
                Remark = allocateOrder.Remark,
                DepartmentCode = "",
                DepartmentName = "",
                Details = allocateOrder.Details.Select(detail => new Dt_OutboundOrderDetail
                Details = distinctDetails.Select(item => new Dt_OutboundOrderDetail
                {
                    OrderId = detail.OrderId,
                    MaterielCode = detail.MaterielCode,
                    OrderId = 0,
                    MaterielCode = item.Detail.MaterielCode,
                    MaterielName = "",
                    BatchNo = detail.BatchNo,
                    OrderQuantity = detail.OrderQuantity,
                    BatchNo = item.Detail.BatchNo,
                    OrderQuantity = item.Detail.OrderQuantity,
                    BarcodeQty = (decimal)item.Detail.BarcodeQty,
                    BarcodeUnit = item.Detail.BarcodeUnit,
                    LockQuantity = 0,
                    lineNo = item.Detail.LineNo,
                    OverOutQuantity = 0,
                    OrderDetailStatus = detail.OrderDetailStatus,
                    Unit = detail.Unit,
                    OrderDetailStatus = item.Detail.OrderDetailStatus,
                    Unit = item.Detail.Unit,
                    RowNo = 0,
                    SupplyCode = detail.SupplyCode,
                    WarehouseCode = detail.WarehouseCode,
                    SupplyCode = item.Detail.SupplyCode,
                    WarehouseCode = item.Detail.WarehouseCode,
                }).ToList()
            };