From 4b3fd35893972bb05fd7ab89dc624ab805093ff3 Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周日, 18 5月 2025 19:47:46 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs |   73 ++++++++++++++++++++++++++++++++----
 1 files changed, 65 insertions(+), 8 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
index 7ede721..fdb8c6f 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -526,8 +526,12 @@
     /// <param name="input"></param>
     /// <returns></returns>
     /// <exception cref="UserFriendlyException"></exception>
-    public async Task FinishTaskAsync(WmsTaskStatusDto input)
+    public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
     {
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
         using var scope = _serviceProvider.CreateScope();
         var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
         using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -640,6 +644,8 @@
 
         await uow.SaveChangesAsync();
         await uow.CompleteAsync();
+
+        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
     }
 
     /// <summary>
@@ -650,7 +656,10 @@
     /// <exception cref="UserFriendlyException"></exception>
     public async Task CancelTaskAysnc(WmsTaskStatusDto input)
     {
-
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
         using var scope = _serviceProvider.CreateScope();
         var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
         using var uow = unitOfWorkManager.Begin(requiresNew: true);
@@ -705,7 +714,13 @@
     /// <exception cref="UserFriendlyException"></exception>
     public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
     {
-        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); 
+
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
         if (task == null)
         {
             throw new UserFriendlyException("浠诲姟淇℃伅涓嶅瓨鍦�");
@@ -722,13 +737,13 @@
             throw new UserFriendlyException("鐩爣搴撲綅淇℃伅涓嶅瓨鍦�");
         }
 
-        if(toPlaceInfo.IsDisabled)
+        if (toPlaceInfo.IsDisabled)
         {
             throw new UserFriendlyException("鐩爣搴撲綅宸茶绂佺敤");
         }
 
         var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace });
-        if (toplaceStock != null && toplaceStock.Count>0)
+        if (toplaceStock != null && toplaceStock.Count > 0)
         {
             var model = toplaceStock.FirstOrDefault();
             if (model.MaterialModel != input.MutableParam1)
@@ -755,14 +770,56 @@
         var whereConditions = DynamicGetQueryParams(queryInput);
 
         var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions);
-        if(NoStartTaskList.Count<=0) return null;
 
-        var executeTask = NoStartTaskList.FirstOrDefault(x=>x.TaskType == input.TaskType);
-        if(executeTask == null)
+
+        if (NoStartTaskList.Count <= 0) return null;
+
+        var executeTaskList = NoStartTaskList.WhereIf(input.TaskType > 0, x => x.TaskType == input.TaskType).OrderBy(x => x.TaskType).ThenBy(x => x.TaskLevel).ToList();
+
+        var executeTask = executeTaskList.FirstOrDefault();
+        if (input.OutStockHasGood)
+        {
+            executeTask = NoStartTaskList.OrderByDescending(x => x.TaskType == TaskTypeEnum.RUKU).ThenBy(x => x.TaskLevel).FirstOrDefault();
+        }
+
+        if (executeTask == null)
         {
             return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault());
         }
 
+        if (executeTask.TaskType == TaskTypeEnum.CHUKU && input.OutStockHasGood)
+        {
+            return null;
+        }
+
+        if(executeTask.TaskType == TaskTypeEnum.RUKU && !input.InStockHasGood)
+        {
+            return null;
+        }
+
         return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask);
     }
+  
+
+    /// <summary>
+    /// 鏇存柊浠诲姟涓烘墽琛屼腑
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
+    {
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
+        if(task == null)
+        {
+            return null;
+        }
+        task.TaskStatus = WmsTaskStatus.ZHIXINGZHONG;
+        task.TaskDodeviceStatus = TaskDodeviceStatus.SrmProgress;
+         await wmsTaskRepository.UpdateAsync(task);
+        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
+    }
 }

--
Gitblit v1.9.3