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