From a8be8f9371b6fc03b66d212b2902d08f93b087dd Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 02 七月 2025 13:55:55 +0800 Subject: [PATCH] 新增任务查询方法并优化逻辑在 `ITaskService.cs` 中添加了新的 `QueryExecutingConveyorLineTask` 方法,支持根据托盘号和下一地址查询任务,同时调整了原有方法的参数以保留旧功能。在 `TaskService.cs` 中新增重载方法,允许根据下一地址和条形码查询任务。在 `CommonConveyorLine_GWJob.cs` 中更新了 `ConveyorLineOutFinish` 方法,简化了任务查询逻辑并删除了多余的注释代码。同时,增加了对 `taskNext` 的处理逻辑,确保在任务未找到时的相应处理,并更新在途数据的逻辑,提升数据一致性和准确性。 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs index a4b3dee..9d1ab3b 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs @@ -1,5 +1,6 @@ 锘縰sing Microsoft.AspNetCore.Mvc.Filters; using System.Collections.Concurrent; +using System.Text.Json; public class ThrottleFilter : IAsyncActionFilter { @@ -14,7 +15,11 @@ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var actionName = context.ActionDescriptor.DisplayName; - if (_lastExecutionTimes.TryGetValue(actionName, out var lastExecutionTime)) + + var parameterString = GenerateParameterString(context.ActionArguments); + var key = $"{actionName}_{parameterString}"; + + if (_lastExecutionTimes.TryGetValue(key, out var lastExecutionTime)) { var elapsedTime = DateTime.Now - lastExecutionTime; if (elapsedTime.TotalSeconds < _intervalInSeconds) @@ -24,7 +29,46 @@ } } - _lastExecutionTimes[actionName] = DateTime.Now; + _lastExecutionTimes[key] = DateTime.Now; await next(); } + + private string GenerateParameterString(IDictionary<string, object> arguments) + { + if (arguments == null || arguments.Count == 0) + { + return ""; + } + + var paramStrings = new List<string>(); + foreach (var argument in arguments) + { + var key = argument.Key; + var value = argument.Value; + string valueString; + + if (value == null) + { + valueString = "null"; + } + else if (IsSimpleType(value.GetType())) + { + valueString = value.ToString(); + } + else + { + valueString = JsonSerializer.Serialize(value); + } + + paramStrings.Add($"{key}={valueString}"); + } + + return string.Join("&", paramStrings); + } + + // 鍒ゆ柇绫诲瀷鏄惁涓虹畝鍗曠被鍨� + private bool IsSimpleType(Type type) + { + return type.IsPrimitive || type == typeof(string) || type == typeof(decimal); + } } \ No newline at end of file -- Gitblit v1.9.3