change - 添加定时执行任务

master
wenjy
parent 408beda7db
commit 5247950e91

@ -85,7 +85,7 @@ namespace SlnMesnac.Business
while (isFlag)
{
_log.Info($"自动模式初始化成功");
this.AutoModelEvent(null, null);
this.AutoModelEvent();
if (isFlag)
{
@ -128,7 +128,7 @@ namespace SlnMesnac.Business
/// <summary>
/// 自动巡检
/// </summary>
private void AutoModelEvent(object source, System.Timers.ElapsedEventArgs e)
public void AutoModelEvent()
{
try
{

@ -111,7 +111,7 @@ namespace SlnMesnac.Business
_log.Info($"巡检模式关闭成功");
}
private void InspModeEvent()
public void InspModeEvent()
{
try
{

@ -0,0 +1,31 @@
using Quartz;
using SlnMesnac.Business;
using SlnMesnac.Serilog;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace SlnMesnac.Quartz.Job
{
public class AutoModeJob : IJob
{
public readonly SerilogHelper _logger;
public readonly AutoModeBusiness _autoModeBusiness;
public AutoModeJob(SerilogHelper logger, AutoModeBusiness autoModeBusiness)
{
_logger = logger;
_autoModeBusiness = autoModeBusiness;
}
public Task Execute(IJobExecutionContext context)
{
_logger.Info($"执行自动巡检任务:{DateTime.Now.ToString("HH:mm:ss")}");
_autoModeBusiness.AutoModelEvent();
return Task.CompletedTask;
}
}
}

@ -0,0 +1,29 @@
using Quartz;
using SlnMesnac.Business;
using SlnMesnac.Serilog;
using System;
using System.Threading.Tasks;
namespace SlnMesnac.Quartz.Job
{
public class InspModeJob : IJob
{
public readonly SerilogHelper _logger;
public readonly InspModeBusiness _inspModeBusiness;
public InspModeJob(SerilogHelper logger, InspModeBusiness inspModeBusiness)
{
_logger = logger;
_inspModeBusiness = inspModeBusiness;
}
public Task Execute(IJobExecutionContext context)
{
_logger.Info($"执行快速巡检任务:{DateTime.Now.ToString("HH:mm:ss")}");
_inspModeBusiness.InspModeEvent();
return Task.CompletedTask;
}
}
}

@ -2,6 +2,7 @@
using Quartz;
using SlnMesnac.Quartz.Job;
using System;
using System.Threading;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
@ -36,18 +37,31 @@ namespace SlnMesnac.Quartz
{
q.UseMicrosoftDependencyInjectionJobFactory();
q.ScheduleJob<MyJob>(trigger =>
trigger.WithCronSchedule("*/3 * * * * ?").WithIdentity("MyJob", "MyJobGroup") // 示例每3s执行一次
q.ScheduleJob<AutoModeJob>(trigger =>
trigger.WithCronSchedule("0 0 * * * ? *").WithIdentity("AutoModeJob", "AutoModeJobGroup")
);
//q.ScheduleJob<Job2>(trigger =>
// trigger.WithCronSchedule("*/5 * * * * ?").WithIdentity("Job2", "Job2Group") // 示例每5s执行一次
//);
q.ScheduleJob<InspModeJob>(trigger =>
trigger.WithCronSchedule("0 0 * * * ? *").WithIdentity("InspModeJob", "InspModeJobGroup")
);
//q.SetProperty("quartz.scheduler.instanceName", "MyScheduler");
//q.SetProperty("quartz.scheduler.instanceId", "Auto");
//q.SetProperty("quartz.scheduler.startSchedulerOnStart", "false");
});
services.AddQuartzHostedService(options => options.WaitForJobsToComplete = true);
services.AddQuartzHostedService(options =>
{
options.StartDelay = Timeout.InfiniteTimeSpan;
options.WaitForJobsToComplete = true;
});
services.AddSingleton<IScheduler>(provider => provider.GetRequiredService<ISchedulerFactory>().GetScheduler().Result);
services.AddSingleton<IScheduler>(provider => {
var provide = provider.GetRequiredService<ISchedulerFactory>().GetScheduler().Result;
provide.PauseAll();
return provide;
});
}
}

@ -11,6 +11,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SlnMesnac.Business\SlnMesnac.Business.csproj" />
<ProjectReference Include="..\SlnMesnac.Serilog\SlnMesnac.Serilog.csproj" />
</ItemGroup>

@ -41,7 +41,7 @@ namespace SlnMesnac.WPF
//注册PLC工厂
services.AddPlcFactorySetup();
//services.AddQuartzSetUp();
services.AddQuartzSetUp();
}
/// <summary>

@ -3,6 +3,7 @@ using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json.Linq;
using NVelocity.Util.Introspection;
using Quartz;
using SlnMesnac.Business;
using SlnMesnac.Business.@base;
using SlnMesnac.Config;
@ -70,6 +71,8 @@ namespace SlnMesnac.WPF.ViewModel
//private const string DVRUserName = "admin"; //设备登录用户名 User name to login
//private const string DVRPassword = "haiwei@2024"; //设备登录密码 Password to login
private readonly IScheduler _scheduler;
public IndexControlViewModel()
{
try
@ -84,6 +87,8 @@ namespace SlnMesnac.WPF.ViewModel
webSocketBusiness = App.ServiceProvider.GetService<WebSocketBusiness>();
cabinetInfoBusiness = App.ServiceProvider.GetService<CabinetInfoBusiness>();
_scheduler = App.ServiceProvider.GetService<IScheduler>();
autoModeBusiness.CaptureAlarmPictureEvent += CapturePicture;
autoModeBusiness.GimbaRotationControlEvent += GimbaRotationControl;
@ -663,17 +668,24 @@ namespace SlnMesnac.WPF.ViewModel
/// <summary>
/// 开启自动模式
/// </summary>
public void Start_AutoMode()
public async void Start_AutoMode()
{
autoModeBusiness.Start();
//autoModeBusiness.Start();
if (!_scheduler.IsStarted)
{
await _scheduler.Start();
}
var myJobKey = new JobKey("AutoModeJob", "AutoModeJobGroup");
await _scheduler.ResumeJob(myJobKey);
}
/// <summary>
/// 关闭自动模式
/// </summary>
public void Stop_AutoMode()
public async void Stop_AutoMode()
{
autoModeBusiness.Stop();
var myJobKey = new JobKey("AutoModeJob", "AutoModeJobGroup");
await _scheduler.PauseJob(myJobKey);
autoModeBusiness.ClearPlcMode();
}
@ -681,20 +693,28 @@ namespace SlnMesnac.WPF.ViewModel
/// <summary>
/// 开启巡检模式
/// </summary>
public void Start_InspMode()
public async void Start_InspMode()
{
string taskCode = DateTime.Now.ToString("yyyyMMddHHmmssffff");
string fileName = $"{taskCode}.mp4";
//string taskCode = DateTime.Now.ToString("yyyyMMddHHmmssffff");
//string fileName = $"{taskCode}.mp4";
inspModeBusiness.Start(taskCode, fileName);
//inspModeBusiness.Start(taskCode, fileName);
if (!_scheduler.IsStarted)
{
await _scheduler.Start();
}
var myJobKey = new JobKey("InspModeJob", "InspModeJobGroup");
await _scheduler.ResumeJob(myJobKey);
}
/// <summary>
/// 关闭巡检模式
/// </summary>
public void Stop_InspMode()
public async void Stop_InspMode()
{
inspModeBusiness.Stop();
var myJobKey = new JobKey("InspModeJob", "InspModeJobGroup");
await _scheduler.PauseJob(myJobKey);
autoModeBusiness.ClearPlcMode();
}

@ -29,8 +29,8 @@
{
"configId": 1,
"plcType": "SiemensPlc",
//"plcIp": "127.0.0.1",
"plcIp": "192.168.2.1",
"plcIp": "127.0.0.1",
//"plcIp": "192.168.2.1",
"plcPort": 102,
"plcKey": "iot",
"isFlage": "true"

Loading…
Cancel
Save