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 |  132 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 130 insertions(+), 2 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 d3d4886..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);
@@ -694,4 +705,121 @@
         await uow.SaveChangesAsync();
         await uow.CompleteAsync();
     }
+
+    /// <summary>
+    /// 淇敼鐩爣搴撲綅
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
+    {
+
+        if (string.IsNullOrEmpty(input.TaskNo))
+        {
+            throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+
+        var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo);
+        if (task == null)
+        {
+            throw new UserFriendlyException("浠诲姟淇℃伅涓嶅瓨鍦�");
+        }
+
+        if (task.TaskStatus != WmsTaskStatus.WEIZHIXING)
+        {
+            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)
+        {
+            var model = toplaceStock.FirstOrDefault();
+            if (model.MaterialModel != input.MutableParam1)
+            {
+                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