From 5909649db85ff29faf983154763cc4b7301665e2 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 18 十二月 2025 11:15:31 +0800
Subject: [PATCH] 新增任务调度功能及优化日志处理新增任务状态枚举值 HasSent,表示任务已发送。新增任务调度接口 `ISchedulerCenter`,定义任务调度相关方法。 新增任务工厂 `JobFactory`,通过依赖注入创建任务实例。 新增任务调度服务配置 `JobSetup`,支持依赖注入配置。 新增通用响应类 `ResponseContent`,封装任务调度操作结果。新增任务调度服务实现 `SchedulerCenterServer`,实现任务添加、暂停、恢复等功能。 新增任务信息 DTO `TaskInfoDto` 和任务计划实体类 `TasksQz`。 新增任务配置类 `JobConfig`,描述任务类型及执行间隔。 注释掉部分服务中的旧任务创建逻辑,准备替换为新调度机制。 新增 AGV 任务调度作业 `AgvTaskJob`,处理 AGV 任务调度。 新增 Quartz 中间件 `QuartzJobMiddleWare`,初始化任务调度。 在 `Program.cs` 中集成 Quartz,配置任务调度依赖注入。 优化日志记录和异常处理,提升代码可维护性和调试性。
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 44 ++++++++++++++++++++++++++++++++++++++++----
1 files changed, 40 insertions(+), 4 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index 9b4fc91..540eeae 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -1,5 +1,3 @@
-using System.Reflection;
-using System.Text;
using Autofac;
using Autofac.Core;
using Autofac.Extensions.DependencyInjection;
@@ -11,7 +9,15 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
+using Quartz;
+using Quartz.Impl;
+using Quartz.Spi;
using Serilog;
+using System.Net.Security;
+using System.Reflection;
+using System.Runtime.ConstrainedExecution;
+using System.Text;
+using WIDESEA.QuartzJob;
using WIDESEA_Core;
using WIDESEA_Core.Authorization;
using WIDESEA_Core.BaseServices;
@@ -21,7 +27,11 @@
using WIDESEA_Core.Helper;
//using WIDESEA_Core.HostedService;
using WIDESEA_Core.Middlewares;
+using WIDESEA_DTO.Quartz;
+using WIDESEA_WMSServer;
using WIDESEA_WMSServer.Filter;
+using WIDESEA_WMSServer.Jobs;
+using static Quartz.Logging.OperationName;
var builder = WebApplication.CreateBuilder(args);
@@ -45,7 +55,7 @@
.WriteTo.File( // 配置输出到文件
path: "logs/log-.txt", // 日志文件路径,会自动创建 logs 文件夹
rollingInterval: RollingInterval.Day, // 按天滚动日志文件
- retainedFileCountLimit: 7, // 最多保留7天的日志
+ retainedFileCountLimit: 365, // 最多保留7天的日志
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
)
.CreateLogger();
@@ -146,10 +156,36 @@
client.Timeout = TimeSpan.FromSeconds(30);
});
+builder.Services.AddSingleton<IJobFactory, JobFactory>();
+builder.Services.AddTransient<AgvTaskJob>();//Job使用瞬时依赖注入
+builder.Services.AddSingleton<ISchedulerCenter, SchedulerCenterServer>();
+builder.Services.AddQuartz(q =>
+{
+
+ var jobKey = new JobKey("ErpJob");
+ q.AddJob<ErpJob>(opts => opts.WithIdentity(jobKey));
+
+ // 添加触发器 - 每天10:00, 14:00, 20:00执行
+ q.AddTrigger(opts => opts
+ .ForJob(jobKey)
+ .WithIdentity("ErpJob-trigger")
+ .WithCronSchedule("0 0 10,14,20 * * ?"));
+
+ var inventoryLockJobKey = new JobKey("InventoryLockJob");
+ q.AddJob<InventoryLockJob>(opts => opts.WithIdentity(inventoryLockJobKey));
+
+ q.AddTrigger(opts => opts
+ .ForJob(inventoryLockJobKey)
+ .WithIdentity("InventoryLockJob-trigger")
+ .WithCronSchedule("0 0/10 * * * ?")); // 每10分钟执行一次
+});
+
+builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
var app = builder.Build();
-// 3、配置中间件
+app.UseQuartzJobMildd();
+
app.UseMiniProfiler();//性能分析器
app.ConfigureApplication();//配置文件
app.UseApplicationSetup();//启动配置
--
Gitblit v1.9.3