diff --git a/Tiobon.Core.Tasks/GlobalUsings.cs b/Tiobon.Core.Tasks/GlobalUsings.cs
new file mode 100644
index 00000000..88d274bd
--- /dev/null
+++ b/Tiobon.Core.Tasks/GlobalUsings.cs
@@ -0,0 +1,2 @@
+global using Tiobon.Core.IServices;
+global using Quartz;
\ No newline at end of file
diff --git a/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRecord_Sync_Quartz.cs b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRecord_Sync_Quartz.cs
new file mode 100644
index 00000000..b5012db7
--- /dev/null
+++ b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRecord_Sync_Quartz.cs
@@ -0,0 +1,27 @@
+///
+/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
+///
+namespace Tiobon.Core.Tasks;
+
+///
+/// 牛尾同步培训记录
+///
+public class Job_Ushio_TrainRecord_Sync_Quartz : JobBase, IJob
+{
+ private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
+
+ public Job_Ushio_TrainRecord_Sync_Quartz(IGhrh_ResumeServices ghrh_ResumeServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices)
+ : base(tasksQzServices, tasksLogServices)
+ {
+ _ghrh_ResumeServices = ghrh_ResumeServices;
+ }
+ public async Task Execute(IJobExecutionContext context)
+ {
+ var executeLog = await ExecuteJob(context, async () => await Run(context));
+ }
+ public async Task Run(IJobExecutionContext context)
+ {
+ Console.WriteLine($"Job_Ushio_TrainRecord_Sync_Quartz 执行 {DateTime.Now.ToShortTimeString()}");
+ await _ghrh_ResumeServices.Shihua_OA_Sync();
+ }
+}
diff --git a/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRequest_Sync_Quartz.cs b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRequest_Sync_Quartz.cs
new file mode 100644
index 00000000..ceef3904
--- /dev/null
+++ b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainRequest_Sync_Quartz.cs
@@ -0,0 +1,27 @@
+///
+/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
+///
+namespace Tiobon.Core.Tasks;
+
+///
+/// 牛尾同步培训需求
+///
+public class Job_Ushio_TrainRequest_Sync_Quartz : JobBase, IJob
+{
+ private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
+
+ public Job_Ushio_TrainRequest_Sync_Quartz(IGhrh_ResumeServices ghrh_ResumeServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices)
+ : base(tasksQzServices, tasksLogServices)
+ {
+ _ghrh_ResumeServices = ghrh_ResumeServices;
+ }
+ public async Task Execute(IJobExecutionContext context)
+ {
+ var executeLog = await ExecuteJob(context, async () => await Run(context));
+ }
+ public async Task Run(IJobExecutionContext context)
+ {
+ Console.WriteLine($"Job_Ushio_TrainRequest_Sync_Quartz 执行 {DateTime.Now.ToShortTimeString()}");
+ await _ghrh_ResumeServices.Shihua_OA_Sync();
+ }
+}
diff --git a/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainTeacher_Sync_Quartz.cs b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainTeacher_Sync_Quartz.cs
new file mode 100644
index 00000000..c69729d9
--- /dev/null
+++ b/Tiobon.Core.Tasks/QuartzNet/Jobs/Job_Ushio_TrainTeacher_Sync_Quartz.cs
@@ -0,0 +1,27 @@
+///
+/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
+///
+namespace Tiobon.Core.Tasks;
+
+///
+/// 牛尾同步培训讲师
+///
+public class Job_Ushio_TrainTeacher_Sync_Quartz : JobBase, IJob
+{
+ private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
+
+ public Job_Ushio_TrainTeacher_Sync_Quartz(IGhrh_ResumeServices ghrh_ResumeServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices)
+ : base(tasksQzServices, tasksLogServices)
+ {
+ _ghrh_ResumeServices = ghrh_ResumeServices;
+ }
+ public async Task Execute(IJobExecutionContext context)
+ {
+ var executeLog = await ExecuteJob(context, async () => await Run(context));
+ }
+ public async Task Run(IJobExecutionContext context)
+ {
+ Console.WriteLine($"Job_Ushio_TrainRequest_Sync_Quartz 执行 {DateTime.Now.ToShortTimeString()}");
+ await _ghrh_ResumeServices.Shihua_OA_Sync();
+ }
+}