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