From 7a0fbe3ec8b5ec5e54cb8ee1b3ba5aadea1d1ecd Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 06 三月 2026 17:25:39 +0800
Subject: [PATCH] feat: 添加自动出库任务后台服务
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/BackgroundServices/AutoOutboundTaskBackgroundService.cs | 79 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 0 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/BackgroundServices/AutoOutboundTaskBackgroundService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/BackgroundServices/AutoOutboundTaskBackgroundService.cs
new file mode 100644
index 0000000..d877cc9
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/BackgroundServices/AutoOutboundTaskBackgroundService.cs
@@ -0,0 +1,79 @@
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using WIDESEA_Core.Core;
+using WIDESEA_ITaskInfoService;
+
+namespace WIDESEA_WMSServer.BackgroundServices
+{
+ /// <summary>
+ /// 鑷姩鍑哄簱浠诲姟鍚庡彴鏈嶅姟
+ /// 瀹氭湡妫�鏌ュ埌鏈熷簱瀛樺苟鍒涘缓鍑哄簱浠诲姟
+ /// </summary>
+ public class AutoOutboundTaskBackgroundService : BackgroundService
+ {
+ private readonly ILogger<AutoOutboundTaskBackgroundService> _logger;
+ private readonly ITaskService _taskService;
+ private readonly AutoOutboundTaskOptions _options;
+
+ public AutoOutboundTaskBackgroundService(
+ ILogger<AutoOutboundTaskBackgroundService> logger,
+ ITaskService taskService,
+ IOptions<AutoOutboundTaskOptions> options)
+ {
+ _logger = logger;
+ _taskService = taskService;
+ _options = options.Value;
+ }
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ _logger.LogInformation("鑷姩鍑哄簱浠诲姟鍚庡彴鏈嶅姟宸插惎鍔�");
+
+ if (!_options.Enable)
+ {
+ _logger.LogInformation("鑷姩鍑哄簱浠诲姟鍔熻兘宸茬鐢紝鏈嶅姟閫�鍑�");
+ return;
+ }
+
+ _logger.LogInformation("鑷姩鍑哄簱浠诲姟妫�鏌ラ棿闅�: {Seconds} 绉�", _options.CheckIntervalSeconds);
+
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ try
+ {
+ _logger.LogDebug("寮�濮嬫鏌ュ埌鏈熷簱瀛�...");
+ var result = await _taskService.CreateAutoOutboundTasksAsync();
+
+ if (result.Status)
+ {
+ _logger.LogInformation("鍒版湡搴撳瓨妫�鏌ュ畬鎴�: {Message}", result.Message);
+ }
+ else
+ {
+ _logger.LogWarning("鍒版湡搴撳瓨妫�鏌ュけ璐�: {Message}", result.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "鑷姩鍑哄簱浠诲姟鍒涘缓杩囩▼涓彂鐢熷紓甯�");
+ }
+
+ var delay = TimeSpan.FromSeconds(_options.CheckIntervalSeconds);
+ _logger.LogDebug("绛夊緟 {Seconds} 绉掑悗杩涜涓嬫妫�鏌�", delay.TotalSeconds);
+ await Task.Delay(delay, stoppingToken);
+ }
+
+ _logger.LogInformation("鑷姩鍑哄簱浠诲姟鍚庡彴鏈嶅姟宸插仠姝�");
+ }
+
+ public override async Task StopAsync(CancellationToken cancellationToken)
+ {
+ _logger.LogInformation("姝e湪鍋滄鑷姩鍑哄簱浠诲姟鍚庡彴鏈嶅姟...");
+ await base.StopAsync(cancellationToken);
+ }
+ }
+}
--
Gitblit v1.9.3