| | |
| | | |
| | | return query.ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建销售订单发货 |
| | | /// </summary> |
| | | /// <param name="request">发货请求参数</param> |
| | | /// <returns></returns> |
| | | public int CreateSalesOrderShipping(CreateSalesOrderShippingRequestDto request) |
| | | { |
| | | //验证request.PalletIds是否为空 |
| | | if (request.PalletIds == null || !request.PalletIds.Any()) |
| | | { |
| | | throw new Exception("销售托盘ID列表不能为空"); |
| | | } |
| | | |
| | | //调用GetSalesPalletDetail方法拿到返回值 |
| | | var allDetails = new List<SalesPalletDetailQueryDto>(); |
| | | foreach (var palletId in request.PalletIds) |
| | | { |
| | | var detailQuery = new SalesPalletDetailQueryDto { Mid = palletId }; |
| | | var details = GetSalesPalletDetail(detailQuery); |
| | | allDetails.AddRange(details); |
| | | } |
| | | |
| | | if (!allDetails.Any()) |
| | | { |
| | | throw new Exception("未找到销售托盘明细数据"); |
| | | } |
| | | |
| | | //提取出结果集的Stackcode并去重 |
| | | var stackCodes = allDetails |
| | | .Where(d => !string.IsNullOrEmpty(d.Stackcode)) |
| | | .Select(d => d.Stackcode) |
| | | .Distinct() |
| | | .ToList(); |
| | | |
| | | if (!stackCodes.Any()) |
| | | { |
| | | throw new Exception("未找到有效的栈板码"); |
| | | } |
| | | |
| | | //select * from MES_INV_ITEM_STOCKS where STACKCODE in (Stackcode去重后的结果); |
| | | var stockItems = Db.Queryable<MesInvItemStocks>() |
| | | .Where(s => stackCodes.Contains(s.StackCode) && s.Quantity > 0) |
| | | .ToList(); |
| | | |
| | | if (!stockItems.Any()) |
| | | { |
| | | throw new Exception("未找到对应的库存数据"); |
| | | } |
| | | |
| | | //调用MesInvItemStocksManager.CreateReturnMaterialRequest方法 |
| | | var stockManager = new MesInvItemStocksManager(); |
| | | var itemStockQuery = new ItemStockQueryDto |
| | | { |
| | | UserCode = request.UserCode, |
| | | Station = request.Station, |
| | | ItemBarcodes = stackCodes |
| | | }; |
| | | |
| | | stockManager.CreateReturnMaterialRequest(itemStockQuery); |
| | | |
| | | return stackCodes.Count; |
| | | } |
| | | } |