1
yangpeixing
2026-01-19 fd5a43c2e677740482b8d25195120ffa75c5ac77
WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs
@@ -213,6 +213,7 @@
                        Wlstatus = (int)InventoryMaterialStatus.合格,
                        Mgeneratetime = DateTime.Now,
                        WarehouseId = warehouse.WarehouseId,
                        System = inboundOrder.System,
                        Details = new List<Dt_StockInfoDetail>()
                    };
                }
@@ -348,7 +349,7 @@
        }
        //药水,低温仓组盘
        public WebResponseContent NEWMaterielGroup(SaveModel saveModel)
        public WebResponseContent NewMaterielGroup(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
@@ -442,7 +443,7 @@
                {
                    stockInfo = new Dt_StockInfo()
                    {
                        BatchNo = inboundOrderDet.BatchNo,
                        BatchNo ="",
                        PalletCode = palletCode,
                        PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode)
                        IsFull = true,
@@ -454,48 +455,14 @@
                        Wlstatus = (int)InventoryMaterialStatus.合格,
                        Mgeneratetime = DateTime.Now,
                        WarehouseId = warehouse.WarehouseId,
                        System = inboundOrder.System,
                        Details = new List<Dt_StockInfoDetail>()
                    };
                }
                else
                {
                    //if (stockInfo.StockStatus != StockStatusEmun.组盘暂存.ObjToInt())
                    //{
                    return WebResponseContent.Instance.Error($"托盘号重复,该托盘已组过物料");
                    //}
                    //beforeQuantity = stockInfo.Details.Sum(x => x.StockQuantity);
                }
                if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString())
                {
                    stockInfo.Remark = Initiallife.ToString();
                    string batchNo = models.FirstOrDefault()?.LotNo ?? "";
                    //Dt_StockInfoDetail existDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == batchNo);
                    //if (existDetail != null)
                    //{
                    //    return WebResponseContent.Instance.Error($"{batchNo}测试架已存在");
                    //}
                    if (models.Count >= 2)
                    {
                        return WebResponseContent.Instance.Error($"组盘明细不唯一");
                    }
                    //if (palletCode.Substring(0, 1) == "6")
                    //{
                    //    stockInfo.PalletType = PalletTypeEnum.MediumPallet.ObjToInt();
                    //}
                    //else
                    //{
                    //    stockInfo.PalletType = PalletTypeEnum.LargestPallet.ObjToInt();
                    //}
                }
                else if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString())
                {
                    if (models.Count >= 2)
                    {
                        return WebResponseContent.Instance.Error($"组盘明细不唯一");
                    }
                }
                List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                foreach (var model in models)
                {
@@ -515,7 +482,7 @@
                        OrderNo = inboundOrder.OrderNo,
                        BatchNo = notGroupDetail.BatchNo,
                        LinId = notGroupDetail.LinId,
                        StockQuantity = (quantitys.FirstOrDefault()),
                        StockQuantity = model.Quantity,
                        Status = (int)StockStatusEmun.组盘暂存,
                        Creater = "WMS",
                        CreateDate = DateTime.Now,
@@ -535,9 +502,9 @@
                    stockInfoDetails.Add(stockInfoDetail);
                    decimal decimalReceiptQuantity = Convert.ToDecimal(notGroupDetail.ReceiptQuantity);
                    decimal decimalModelQuantity = Convert.ToDecimal((quantitys.FirstOrDefault()));
                    decimal decimalModelQuantity = Convert.ToDecimal(notGroupDetail.OrderQuantity);
                    decimal decimalOrderQuantity = Convert.ToDecimal(notGroupDetail.OrderQuantity);
                    decimalReceiptQuantity += decimalModelQuantity;
                    decimalReceiptQuantity += model.Quantity;
                    // 检查是否超出订单数量
                    if (decimalReceiptQuantity > decimalOrderQuantity)
                    {
@@ -757,6 +724,7 @@
                        Wlstatus = (int)InventoryMaterialStatus.合格,
                        Mgeneratetime = DateTime.Now,
                        WarehouseId = warehouse.WarehouseId,
                        System = inboundOrder.System,
                        Details = new List<Dt_StockInfoDetail>()
                    };
                }
@@ -904,10 +872,46 @@
                {
                    throw new Exception("库存未找到托盘号");
                }
                var sameItems = from sourceItem in stockInfo.Details
                                join targetItem in targetstockInfo.Details
                                on new
                                {
                                    sourceItem.BatchNo,
                                    sourceItem.MaterielName,
                                    sourceItem.MaterielCode
                                }
                                equals new
                                {
                                    targetItem.BatchNo,
                                    targetItem.MaterielName,
                                    targetItem.MaterielCode
                                }
                                select new
                                {
                                    SourceItem = sourceItem,
                                    TargetItem = targetItem,
                                    BatchNo = sourceItem.BatchNo,
                                    MaterialCode = sourceItem.MaterielCode,
                                    MaterialType = sourceItem.MaterielName
                                };
                var matchedSourceItemIds = sameItems.Select(x => x.SourceItem.Id).ToList();
                foreach (var item in stockInfo.Details)
                {
                    item.StockId = targetstockInfo.Id;
                    if (!matchedSourceItemIds.Contains(item.Id))
                    {
                        item.StockId = targetstockInfo.Id;
                    }
                }
                var differentItems = stockInfo.Details
      .Where(x => !matchedSourceItemIds.Contains(x.Id))
      .ToList();
                targetstockInfo.Details = targetstockInfo.Details
      .Where(x => !matchedSourceItemIds.Contains(x.Id))
      .Concat(differentItems)
      .ToList();
                if (warehouse.WarehouseCode == "SC02_CP")
                {
                    warehouse.WarehouseCode = "SC01_CP";
@@ -940,21 +944,6 @@
                        }).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)
@@ -975,10 +964,15 @@
                }
                _unitOfWorkManage.BeginTran();
                targetstockInfo.Details.AddRange(stockInfo.Details);
                foreach (var sameItem in sameItems)
                {
                    sameItem.TargetItem.StockQuantity += sameItem.SourceItem.StockQuantity;
                    _stockRepository.StockInfoDetailRepository.UpdateData(sameItem.TargetItem);
                    _stockRepository.StockInfoDetailRepository.DeleteData(sameItem.SourceItem);
                }
                _stockRepository.StockInfoRepository.UpdateData(targetstockInfo);
                _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
                _stockRepository.StockInfoRepository.DeleteData(stockInfo);
                _unitOfWorkManage.CommitTran();
                webResponseContent = WebResponseContent.Instance.OK("合托成功");
            }
@@ -1282,6 +1276,7 @@
                            if (inboundOrderDetailOld != null)
                            {
                                inboundOrderDetailOld.OrderQuantity += item.OrderQuantity;
                                inboundOrderDetailOld.OrderDetailStatus = OrderDetailStatusEnum.Inbounding.ObjToInt();
                                _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetailOld);
                            }
                            else