From 6768c18458bed22ae0ef1d611afd80bdeea31dda Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 20 5月 2025 13:19:37 +0800
Subject: [PATCH] 22

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs |  104 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 99 insertions(+), 5 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 a23e39d..fdb8c6f 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -20,6 +20,8 @@
 using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord;
 using Volo.Abp.Uow;
 using Microsoft.Extensions.DependencyInjection;
+using NPOI.SS.Formula.Functions;
+using System.Collections.Generic;
 
 namespace CMS.Plugin.HIAWms.Application.Implements;
 
@@ -524,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);
@@ -638,6 +644,8 @@
 
         await uow.SaveChangesAsync();
         await uow.CompleteAsync();
+
+        return ObjectMapper.Map<WmsTask, WmsTaskDto>(task);
     }
 
     /// <summary>
@@ -648,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);
@@ -703,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("浠诲姟淇℃伅涓嶅瓨鍦�");
@@ -714,8 +731,19 @@
             throw new UserFriendlyException("宸插紑濮嬫垨鑰呯粨鏉熺殑浠诲姟涓嶅厑璁镐慨鏀�");
         }
 
+        var toPlaceInfo = await _wmsPlaceRepository.FindByNameAsync(input.ToPlace);
+        if (toPlaceInfo == null)
+        {
+            throw new UserFriendlyException("鐩爣搴撲綅淇℃伅涓嶅瓨鍦�");
+        }
+
+        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)
@@ -723,9 +751,75 @@
                 throw new UserFriendlyException("鐩爣搴撲綅鍨嬪彿涓庡綋鍓嶅瀷鍙蜂笉涓�鑷翠笉鍏佽淇敼");
             }
         }
-
         task.ToPlace = input.ToPlace;
 
         await wmsTaskRepository.UpdateAsync(task);
     }
+
+    /// <summary>
+    /// 鑾峰彇闇�瑕佹墽琛岀殑浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
+    {
+        var queryInput = new GetWmsTaskInput
+        {
+            TaskStatus = WmsTaskStatus.WEIZHIXING,
+        };
+        var whereConditions = DynamicGetQueryParams(queryInput);
+
+        var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions);
+
+
+        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