From 37454e625df68d40897112b2e8c2e3cf4d7163e3 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 25 三月 2026 11:43:10 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs |   68 +++++++++++++++++++++++++++-------
 1 files changed, 54 insertions(+), 14 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 c284b28..02c9b08 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,4 +1,6 @@
+using System.Net.Security;
 using System.Reflection;
+using System.Runtime.ConstrainedExecution;
 using System.Text;
 using Autofac;
 using Autofac.Core;
@@ -11,7 +13,11 @@
 using Newtonsoft.Json;
 using Newtonsoft.Json.Converters;
 using Newtonsoft.Json.Serialization;
+using Quartz;
+using Quartz.Impl;
+using Quartz.Spi;
 using Serilog;
+using WIDESEA.QuartzJob;
 using WIDESEA_Core;
 using WIDESEA_Core.Authorization;
 using WIDESEA_Core.BaseServices;
@@ -21,9 +27,10 @@
 using WIDESEA_Core.Helper;
 //using WIDESEA_Core.HostedService;
 using WIDESEA_Core.Middlewares;
+using WIDESEA_DTO.Quartz;
+using WIDESEA_WMSServer;
 using WIDESEA_WMSServer.Filter;
-using Quartz;
-using WIDESEA_WMSServer.Jobs;
+using WIDESEAWCS_Core.LogHelper;
 
 var builder = WebApplication.CreateBuilder(args);
 
@@ -33,6 +40,36 @@
 //  .WriteTo.Console()
 //  .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
 //  .CreateLogger();
+
+AppDomain.CurrentDomain.FirstChanceException += (sender, e) =>
+{
+    bool flag = e.Exception.TargetSite?.DeclaringType?.Namespace?.StartsWith("WIDESEA") == true;
+
+    if (e.Exception is not OperationCanceledException && flag)
+    {
+        string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Log\\Exception");
+        Exception ex = e.Exception;
+        StringBuilder builder = new StringBuilder();
+        builder.Append("错误信息:");
+        builder.Append(ex.Message);
+        builder.Append(Environment.NewLine);
+        builder.Append("错误源:");
+        builder.Append(ex.Source);
+        builder.Append(Environment.NewLine);
+        builder.Append("错误堆栈:");
+        builder.Append(ex.StackTrace);
+        builder.Append(Environment.NewLine);
+        builder.Append("错误类型:");
+        builder.Append(ex.GetType().ToString());
+        builder.Append(Environment.NewLine);
+        builder.Append("错误方法:");
+        builder.Append(ex.TargetSite?.ToString());
+        builder.Append(Environment.NewLine);
+        builder.Append(Environment.NewLine);
+
+        LoggerHelper.WriteError(e.Exception, folderPath);
+    }
+};
 
 Log.Logger = new LoggerConfiguration()
     .MinimumLevel.Information() // 设置全局最低日志级别为 Information
@@ -47,7 +84,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();
@@ -148,13 +185,17 @@
     client.Timeout = TimeSpan.FromSeconds(30);
 
 });
- 
+builder.Services.AddSingleton<IJobFactory, JobFactory>();
+builder.Services.AddTransient<AgvTaskJob>();//Job使用瞬时依赖注入
+builder.Services.AddTransient<InventoryLockJob>();//Job使用瞬时依赖注入
+builder.Services.AddTransient<ErpJob>();//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
@@ -162,21 +203,20 @@
         .WithIdentity("ErpJob-trigger")
         .WithCronSchedule("0 0 10,14,20 * * ?"));
 
-    var inventoryLockJobKey = new JobKey("InventoryLockJob");
-    q.AddJob<InventoryLockJob>(opts => opts.WithIdentity(inventoryLockJobKey));
+    //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分钟执行一次
-
+    //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();
 
- 
+app.UseQuartzJobMildd();
+
 app.UseMiniProfiler();//性能分析器
 app.ConfigureApplication();//配置文件
 app.UseApplicationSetup();//启动配置

--
Gitblit v1.9.3