wankeda
2026-01-15 e755a1c79f29b42f9344e6ab87475e9a4d6c7dc6
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -37,6 +37,8 @@
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Inbound;
using static WIDESEA_Common.HouseInventoryIn;
using static WIDESEA_Common.HouseSyncretism;
using static WIDESEA_Common.InventoryAllocate;
using Parameter = WIDESEA_Common.Parameter;
namespace WIDESEA_InboundService
@@ -453,6 +455,11 @@
                    .Where(x => orderDetailIds.Contains(x.Id))
                    .ToList();
                if (inboundOrderDetails.Sum(x => x.OrderQuantity) <= inboundOrderDetails.Sum(x => x.ReceiptQuantity))
                {
                    return WebResponseContent.Instance.Error($"此单据已全部组盘完成");
                }
                // 按订单明细ID分组,检查每个明细的所有箱号是否都扫描了
                var detailsByOrderDetailId = CPinboundOrderDetails
                    .GroupBy(x => x.OrderDetailId)
@@ -486,7 +493,7 @@
                    // 标记该明细为已完成组盘
                    orderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt();
                    var recqty = orderDetail.ReceiptQuantity;
                    float totalQty = cpDetails.FirstOrDefault().QtyOfpcs;
                    float totalQty = cpDetails.Sum(item => item.QtyOfpcs);
                    orderDetail.ReceiptQuantity = (decimal)totalQty + recqty; // 收货数量等于订单数量
                    detailsToUpdate.Add(orderDetail);
@@ -498,7 +505,6 @@
                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db
                    .Queryable<Dt_StockInfo>()
                    .Where(x => x.PalletCode == palletCode)
                    .Includes(x => x.Details)
                    .First();
                if (stockInfo == null)
@@ -570,7 +576,7 @@
                        BatchNo = orderDetail.BatchNo,
                        SupplierBatch = orderDetail.SupplierBatch,
                        LinId = orderDetail.LinId,
                        StockQuantity = (decimal)cPInboundOrderDetail.FirstOrDefault().QtyOfpcs,
                        StockQuantity = (decimal)cPInboundOrderDetail.Sum(item => item.QtyOfpcs),
                        Status = (int)StockStatusEmun.组盘暂存,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
@@ -645,7 +651,7 @@
        }
        public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"];
        /// <summary>
        /// 合托
        /// 组盘合托
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
@@ -659,32 +665,64 @@
                var targetAddress = saveModel.MainData["targetAddress"];
                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == soussAddress).First();
                Dt_StockInfo stockInfo1 = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == targetAddress).First();
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == stockInfo1.WarehouseId);
                if (stockInfo == null || stockInfo1 == null)
                Dt_StockInfo targetstockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == targetAddress).First();
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == targetstockInfo.WarehouseId);
                if (stockInfo == null || targetstockInfo == null)
                {
                    throw new Exception("库存未找到托盘号");
                }
                foreach (var item in stockInfo.Details)
                {
                    item.StockId = stockInfo1.Id;
                    item.StockId = targetstockInfo.Id;
                }
                if (warehouse.WarehouseCode == "SC02_CP")
                {
                    warehouse.WarehouseCode = "SC01_CP";
                }
                if (warehouse.WarehouseCode == "SC02_BC")
                {
                    warehouse.WarehouseCode = "SC01_BC";
                }
                var houseSyncretism = new HouseSyncretism
                {
                    ApiType = "AsnController",
                    Method = "AsrsGroudingAsn",
                    Parameters = new List<HouseSyncretism.data>
                    ApiType = "InventoryMoveController",
                    Method = "AsrsSubmitMoveDatas",
                    Parameters = new List<HouseSyncretism.Parame>
                    {
                        new HouseSyncretism.data
                        new HouseSyncretism.Parame {
                            Value =  stockInfo.Details.Select(g => new Parame.Syncretism
                        {
                            Lpn=stockInfo.PalletCode,
                            MoveType=0,
                            WareHouseCode=warehouse.WarehouseCode,
                            Lpn = stockInfo.PalletCode,
                            MoveType = 0,
                            WareHouseCode = warehouse.WarehouseCode,
                            ItemCode = g.MaterielCode,
                            MoveNumber = g.StockQuantity,
                            LotNo = g.BatchNo,
                            WipBatch = g.BatchNo,
                            LocationName = stockInfo.LocationCode,
                            TargetLocName = targetstockInfo.LocationCode,
                            TargetLpn = targetstockInfo.PalletCode,
                        }
                        }).ToList()
                            }
                    }
                };
                    //    Parameters = stockInfo.Details.Select(g => new HouseSyncretism.data
                    //    {
                    //        Lpn = stockInfo.PalletCode,
                    //        MoveType = 0,
                    //        WareHouseCode = warehouse.WarehouseCode,
                    //        ItemCode = g.MaterielCode,
                    //        MoveNumber = g.StockQuantity,
                    //        //LotNo = g.,
                    //        WipBatch = g.BatchNo,
                    //        LocationName = stockInfo.PalletCode,
                    //        TargetLocName = targetstockInfo.PalletCode,
                    //        TargetLpn = targetstockInfo.PalletCode,
                    //    }).ToList()
                    //};
                };
                var authResult = AuthenticateWithWMS();
                if (authResult.IsSuccess)
                {
@@ -704,10 +742,10 @@
                }
                _unitOfWorkManage.BeginTran();
                stockInfo1.Details.AddRange(stockInfo.Details);
                _stockRepository.StockInfoRepository.UpdateData(stockInfo1);
                stockInfo.Details.Clear();
                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                targetstockInfo.Details.AddRange(stockInfo.Details);
                _stockRepository.StockInfoRepository.UpdateData(targetstockInfo);
                _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                _stockRepository.StockInfoRepository.DeleteData(stockInfo);
                _unitOfWorkManage.CommitTran();
                webResponseContent = WebResponseContent.Instance.OK("合托成功");
            }