From 179dac6155012781aaf7da482793216b3c52a681 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B5=87=E6=96=87=E9=BE=99?= Date: Fri, 16 Aug 2024 15:58:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Constants/TaskFlowDataNameConst.cs | 6 ++++ .../TaskInteraction/IActionManagerService.cs | 3 +- .../TaskInteraction/ActionManagerService.cs | 12 ++++---- .../ActionSelector/BookingSelector.cs | 2 +- .../Op/Method/TaskInteraction/TaskService.cs | 28 +++++++++++++++++-- 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/ds-wms-service/DS.Module.Core/Constants/TaskFlowDataNameConst.cs b/ds-wms-service/DS.Module.Core/Constants/TaskFlowDataNameConst.cs index dc900d43..449e0444 100644 --- a/ds-wms-service/DS.Module.Core/Constants/TaskFlowDataNameConst.cs +++ b/ds-wms-service/DS.Module.Core/Constants/TaskFlowDataNameConst.cs @@ -72,5 +72,11 @@ namespace DS.Module.Core /// /// 类型:long public const string BusinessId = "BusinessId"; + + /// + /// 客户端参数 + /// + /// 类型:Param{T} + public const string ClientParam = "ClientParam"; } } diff --git a/ds-wms-service/DS.WMS.Core/Op/Interface/TaskInteraction/IActionManagerService.cs b/ds-wms-service/DS.WMS.Core/Op/Interface/TaskInteraction/IActionManagerService.cs index e5350ab2..2d6b86c0 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Interface/TaskInteraction/IActionManagerService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Interface/TaskInteraction/IActionManagerService.cs @@ -66,8 +66,9 @@ namespace DS.WMS.Core.Op.Interface.TaskInteraction /// /// 任务信息 /// 是否包含订单数据 + /// 附加参数 /// - Task TriggerActionAsync(BusinessTask businessTask, bool includeOrder = false); + Task TriggerActionAsync(BusinessTask businessTask, bool includeOrder = false, IDictionary? additionalData = null); Task TriggerTestAsync(TaskBaseTypeEnum taskType, long? id); } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionManagerService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionManagerService.cs index 0421aa75..210ea565 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionManagerService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionManagerService.cs @@ -185,15 +185,12 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction /// /// 任务信息 /// 是否包含订单数据 + /// 附加参数 /// - public async Task TriggerActionAsync(BusinessTask businessTask, bool includeOrder = false) + public async Task TriggerActionAsync(BusinessTask businessTask, bool includeOrder = false, IDictionary? additionalData = null) { ArgumentNullException.ThrowIfNull(businessTask, nameof(businessTask)); - ////目前只限制任务完成才触发 - //if (businessTask.TaskStatus != TaskStatusEnum.Complete) - // return; - TaskFlowDataContext dataContext = new( (TaskFlowDataNameConst.BusinessTask, businessTask) ); @@ -204,6 +201,11 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction dataContext[TaskFlowDataNameConst.Business] = biz; } + if (additionalData != null) + { + foreach (var item in additionalData) + dataContext[item.Key] = item.Value; + } TaskFlowRuner taskFlow = new(TenantDb, ServiceProvider); await taskFlow.RunWithBsno(businessTask.TaskType, businessTask.BusinessId, dataContext); diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionSelector/BookingSelector.cs b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionSelector/BookingSelector.cs index a251c3e0..f4d11eb5 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionSelector/BookingSelector.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/ActionSelector/BookingSelector.cs @@ -12,7 +12,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionSelector /// public class BookingSelector : IActionSelector { - const string Booking_Route = "BookingRoute"; + internal const string Booking_Route = "BookingRoute"; public async Task GetActionExecutor(ActionExecutionContext context) { diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskService.cs index 98ee11ab..23aed8eb 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/TaskService.cs @@ -1,10 +1,12 @@ -using DS.Module.Core; +using System.Threading.Tasks; +using DS.Module.Core; using DS.Module.Core.Data; using DS.Module.Core.Helpers; using DS.WMS.Core.Flow.Dtos; using DS.WMS.Core.Flow.Entity; using DS.WMS.Core.Flow.Interface; using DS.WMS.Core.Flow.Method; +using DS.WMS.Core.Info.Interface; using DS.WMS.Core.Op.Dtos.TaskInteraction; using DS.WMS.Core.Op.Entity; using DS.WMS.Core.Op.Entity.TaskInteraction; @@ -19,6 +21,7 @@ using Masuit.Tools; using Masuit.Tools.Systems; using Microsoft.Extensions.DependencyInjection; using SqlSugar; +using static DS.WMS.Core.Op.Method.TaskInteraction.ActionSelector.BookingSelector; namespace DS.WMS.Core.Op.Method.TaskInteraction { @@ -65,6 +68,11 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction /// protected ISeaExportService OpService { get; private set; } + /// + /// 客户端参数服务 + /// + protected IClientParamService ClientParamService { get; private set; } + /// /// 初始化 /// @@ -77,6 +85,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction FlowService = provider.GetRequiredService(); ActionService = provider.GetRequiredService(); OpService = provider.GetRequiredService(); + ClientParamService = provider.GetRequiredService(); TenantDb.QueryFilter.Clear(); } @@ -373,7 +382,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction }; if (!task.NextType.HasValue) task.NextType = await GetNextTypeAsync(task); - + await TenantDb.Insertable(task).ExecuteCommandAsync(); //审核任务需创建工作流 @@ -527,7 +536,20 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction if (useTransaction) await TenantDb.Ado.CommitTranAsync(); - ActionService.TriggerActionAsync(task); + if (task.TaskStatus == TaskStatusEnum.Complete)//目前限制任务完成才触发 + { + Dictionary? dic = null; + if (request.TaskType == TaskBaseTypeEnum.WAIT_ORDER_AUDIT) + { + dic = new Dictionary(); + var param = await ClientParamService.GetParamAsync(task.BusinessId, Booking_Route, + (x, y) => x.CustomerId == y.ForwarderId); + dic[TaskFlowDataNameConst.ClientParam] = param; + } + + ActionService.TriggerActionAsync(task, additionalData: dic); + } + return DataResult.Success(task.TaskStatus == TaskStatusEnum.Complete ? await GetNextTypeAsync(task) : null); } catch (Exception ex)