From 98ea0648f9373679de108ccbab5dcc97c2f0c67c Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周五, 16 5月 2025 13:00:17 +0800
Subject: [PATCH] 叫料接口

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/LMesOperateAppService.cs             |   12 +++--
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/OutStockDto/CallMaterialInput.cs |   10 +++++
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs             |   47 ++++++++++++-----------
 3 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/OutStockDto/CallMaterialInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/OutStockDto/CallMaterialInput.cs
index 81e92fe..ae4e6eb 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/OutStockDto/CallMaterialInput.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/OutStockDto/CallMaterialInput.cs
@@ -51,5 +51,15 @@
         /// 鍘熸枡鏍囪瘑
         /// </summary>
         public string DataIdentifier { get; set; }
+
+        /// <summary>
+        /// 蹇界暐鍑哄簱鍗曞彿
+        /// </summary>
+        public bool IgnoreOrder { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Priority { get; set; }
     }
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/LMesOperateAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/LMesOperateAppService.cs
index 74cce40..d9d1571 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/LMesOperateAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/LMesOperateAppService.cs
@@ -53,9 +53,9 @@
                 throw new UserFriendlyException("鍙枡鍙傛暟閿欒");
             }
 
-            //using var scope = _serviceProvider.CreateScope();
-            //var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
-            //using var uow = unitOfWorkManager.Begin(requiresNew: true);
+            using var scope = _serviceProvider.CreateScope();
+            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+            using var uow = unitOfWorkManager.Begin(requiresNew: true);
 
             var result = new List<CallMaterialOutput>();
             foreach (var item in input)
@@ -89,7 +89,6 @@
                     OrderStatus = Domain.Shared.Enums.OrderStatusEnum.Executing,
                     OperateTime = DateTime.Now,
                     DistributeNumber = 1,
-
                 };
                 var createResult = await _wmsInOutStockOrderAppService.CreateAsync(createOrderInput);
 
@@ -104,13 +103,16 @@
                         MaterialNo = materiaL.MaterialNo,
                         MaterialName = materiaL.MaterialName,
                         DataIdentifier = item.DataIdentifier,
+                        IgnoreOrder = true,
+                        OrderType = createResult.OrderType,
+                        Priority = createResult.Priority
                     },
                 };
                 var callresult = await _wmsOutStockOrderAppService.CallMaterialAsync(callInput);
                 result.AddRange(callresult);
             }
 
-            //await uow.SaveChangesAsync();
+            await uow.SaveChangesAsync();
 
             return result;
         }
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 acc587b..6e98af0 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs
@@ -39,7 +39,7 @@
             _serviceProvider = serviceProvider;
         }
 
-        public async Task<List<CallMaterialOutput>>CallMaterialAsync(List<CallMaterialInput> input)
+        public async Task<List<CallMaterialOutput>> CallMaterialAsync(List<CallMaterialInput> input)
         {
             using var scope = _serviceProvider.CreateScope();
             var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
@@ -53,32 +53,35 @@
             var callOutput = new List<CallMaterialOutput>();
             foreach (var inputItem in input)
             {
-                var order = await _wmsInOutStockOrderRepository.FindByNameAsync(inputItem.OrderNo);
-                if (order == null)
-                {
-                    throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�");
-                }
-                if(order.OrderType == OrderTypeEnum.SelfMadeParts || order.OrderType == OrderTypeEnum.PERSONIN)
-                {
-                    throw new UserFriendlyException("鍏ュ簱鍗曚笉鍏佽鍙枡");
-                }
                 if (inputItem.MaterialNumber <= 0)
                 {
                     throw new UserFriendlyException("鍙枡鏁伴噺蹇呴』澶т簬0");
                 }
-                if(order.OrderStatus == OrderStatusEnum.Finish)
+                if (!inputItem.IgnoreOrder)
                 {
-                    throw new UserFriendlyException("宸插畬鎴愬崟鎹笉鍏佽鍙枡");
-                }
-                if (order.MaterialNumber < inputItem.MaterialNumber+order.DistributeNumber)
-                {
-                    throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺");
-                }
-                order.OrderStatus = OrderStatusEnum.Executing;
-                order.DistributeNumber = inputItem.MaterialNumber;
-                order.OperateTime = DateTime.Now;
+                    var order = await _wmsInOutStockOrderRepository.FindByNameAsync(inputItem.OrderNo);
+                    if (order == null)
+                    {
+                        throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�");
+                    }
+                    if (order.OrderType == OrderTypeEnum.SelfMadeParts || order.OrderType == OrderTypeEnum.PERSONIN)
+                    {
+                        throw new UserFriendlyException("鍏ュ簱鍗曚笉鍏佽鍙枡");
+                    }
+                    if (order.OrderStatus == OrderStatusEnum.Finish)
+                    {
+                        throw new UserFriendlyException("宸插畬鎴愬崟鎹笉鍏佽鍙枡");
+                    }
+                    if (order.MaterialNumber < inputItem.MaterialNumber + order.DistributeNumber)
+                    {
+                        throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺");
+                    }
+                    order.OrderStatus = OrderStatusEnum.Executing;
+                    order.DistributeNumber = inputItem.MaterialNumber;
+                    order.OperateTime = DateTime.Now;
 
-                await _wmsInOutStockOrderRepository.UpdateAsync(order);
+                    await _wmsInOutStockOrderRepository.UpdateAsync(order);
+                }
 
                 var stockresult = await _wmsCommonAppService.FindStockAsync(inputItem.MaterialModel, inputItem.MaterialNumber);
                 if (stockresult == null)
@@ -102,7 +105,7 @@
                             TaskType = TaskTypeEnum.CHUKU,
                             SonTaskType = inputItem.OrderType == OrderTypeEnum.PRODUCTCALL ? SonTaskTypeEnum.ZDCHUKU : SonTaskTypeEnum.RGRUKU,
                             TaskStatus = WmsTaskStatus.WEIZHIXING,
-                            TaskLevel = order.Priority,
+                            TaskLevel = inputItem.Priority,
                             Aisle = 1,
                             DodeviceId = 0,
                             Dodevicetype = DodevicetypeEnum.Srm,

--
Gitblit v1.9.3