From 3aedad63dd01f1fc5154cb520af32edab967d6e0 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周一, 12 5月 2025 09:15:26 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo --- HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs | 108 +++++++++++++++++++++++++++++------------------------- 1 files changed, 58 insertions(+), 50 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs index 1c95d67..0bb41f5 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs @@ -25,8 +25,8 @@ private readonly IWmsTaskRepository _wmsTaskRepository; private readonly IWmsInOutStockOrderRepository _wmsInOutStockOrderRepository; private readonly IServiceProvider _serviceProvider; - public WmsOutStockAppService(IWmsMaterialStockRepository wmsMaterialStockRepository, - IWmsCommonAppService wmsCommonAppService, IWmsTaskRepository wmsTaskRepository, + public WmsOutStockAppService(IWmsMaterialStockRepository wmsMaterialStockRepository, + IWmsCommonAppService wmsCommonAppService, IWmsTaskRepository wmsTaskRepository, IWmsInOutStockOrderRepository wmsInOutStockOrderRepository, IServiceProvider serviceProvider ) { @@ -37,65 +37,73 @@ _serviceProvider = serviceProvider; } - public async Task CallMaterial(CallMaterialInput input) + public async Task CallMaterialAsync(List<CallMaterialInput> input) { using var scope = _serviceProvider.CreateScope(); var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); using var uow = unitOfWorkManager.Begin(requiresNew: true); - var order = await _wmsInOutStockOrderRepository.FindByNameAsync(input.OrderNo); - if(order == null) + var distinctModels = input.Select(x => x.MaterialModel).Distinct().ToList(); + if (distinctModels.Count > 1) { - throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�"); + throw new UserFriendlyException("涓�娆″彨鏂欏彧鑳介拡瀵瑰悓涓�鍨嬪彿鐨勭墿鏂欙紒"); } - if(input.MaterialNumber <=0) + foreach (var inputItem in input) { - throw new UserFriendlyException("鍙枡鏁伴噺蹇呴』澶т簬0"); - } - if(order.MaterialNumber< input.MaterialNumber) - { - throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺"); - } - order.OrderStatus = OrderStatusEnum.Executing; - order.DistributeNumber = input.MaterialNumber; - - await _wmsInOutStockOrderRepository.UpdateAsync(order); - - var stockresult = await _wmsCommonAppService.FindStockAsync(input.MaterialModel, input.MaterialNumber); - if(stockresult == null) - { - throw new UserFriendlyException("褰撳墠鏃犲簱瀛�"); - } - var taskList = new List<WmsTask>(); - foreach (var kvp in stockresult) - { - var stock = kvp.Key; // WmsPlace瀵硅薄 - var quantity = kvp.Value; // 鍒嗛厤鏁伴噺 - - for (int i = 0; i < quantity; i++) + var order = await _wmsInOutStockOrderRepository.FindByNameAsync(inputItem.OrderNo); + if (order == null) { - var task = new WmsTask - { - TaskNo = $"CK_{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid().ToString("N").Substring(0, 6)}", - ContainerNo = stock.ContainerNo, - SourcePlace = stock.PlaceNo, - ToPlace = "201",// place.PlaceNo, - TaskType = TaskTypeEnum.CHUKU, - SonTaskType = input.OrderType == OrderTypeEnum.PRODUCTCALL ? SonTaskTypeEnum.ZDCHUKU : SonTaskTypeEnum.RGRUKU, - TaskStatus = WmsTaskStatus.WEIZHIXING, - TaskLevel = 999, - Aisle = 1, - DodeviceId = 0, - TaskDodeviceStatus = TaskDodeviceStatus.SrmNoStart, - IsNextTask = (int)YesNoEnum.Y, - IsRead = true, - SourceOrderNo = input.OrderNo, - MutableParam1 = input.MaterialModel, - }; - taskList.Add(task); + throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�"); } + if (inputItem.MaterialNumber <= 0) + { + throw new UserFriendlyException("鍙枡鏁伴噺蹇呴』澶т簬0"); + } + if (order.MaterialNumber < inputItem.MaterialNumber) + { + throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺"); + } + order.OrderStatus = OrderStatusEnum.Executing; + order.DistributeNumber = inputItem.MaterialNumber; + + await _wmsInOutStockOrderRepository.UpdateAsync(order); + + var stockresult = await _wmsCommonAppService.FindStockAsync(inputItem.MaterialModel, inputItem.MaterialNumber); + if (stockresult == null) + { + throw new UserFriendlyException("褰撳墠鏃犲簱瀛�"); + } + var taskList = new List<WmsTask>(); + foreach (var kvp in stockresult) + { + var stock = kvp.Key; // WmsPlace瀵硅薄 + var quantity = kvp.Value; // 鍒嗛厤鏁伴噺 + + for (int i = 0; i < quantity; i++) + { + var task = new WmsTask + { + TaskNo = $"CK_{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid().ToString("N").Substring(0, 6)}", + ContainerNo = stock.ContainerNo, + SourcePlace = stock.PlaceNo, + ToPlace = "201",// place.PlaceNo, + TaskType = TaskTypeEnum.CHUKU, + SonTaskType = inputItem.OrderType == OrderTypeEnum.PRODUCTCALL ? SonTaskTypeEnum.ZDCHUKU : SonTaskTypeEnum.RGRUKU, + TaskStatus = WmsTaskStatus.WEIZHIXING, + TaskLevel = order.Priority, + Aisle = 1, + DodeviceId = 0, + TaskDodeviceStatus = TaskDodeviceStatus.SrmNoStart, + IsNextTask = (int)YesNoEnum.Y, + IsRead = true, + SourceOrderNo = inputItem.OrderNo, + MutableParam1 = inputItem.MaterialModel, + }; + taskList.Add(task); + } + } + await _wmsTaskRepository.InsertManyAsync(taskList); } - await _wmsTaskRepository.InsertManyAsync(taskList); await uow.SaveChangesAsync(); await uow.CompleteAsync(); -- Gitblit v1.9.3