[feat] 回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次
This commit is contained in:
parent
a981c85d14
commit
8b02319242
|
@ -793,6 +793,17 @@
|
|||
<td>定时调度的Cron表达式</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>HistoryCron</td>
|
||||
<td>回刷数据</td>
|
||||
<td>String</td>
|
||||
<td>50</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Topic</td>
|
||||
<td>主题</td>
|
||||
|
@ -1037,13 +1048,13 @@
|
|||
|
||||
<tr>
|
||||
<td>Data</td>
|
||||
<td>数据</td>
|
||||
<td>附加数据</td>
|
||||
<td>String</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Sql模板或C#模板</td>
|
||||
<td>执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
|
|
@ -67,6 +67,9 @@ public partial class Job : EntityBase<Job>
|
|||
Cron = $"0 0 0/{step / 3600} * * ?";
|
||||
else if (step % 60 == 0 && step / 60 < 60)
|
||||
Cron = $"0 0/{step / 60} * * * ?";
|
||||
|
||||
// 默认按天刷历史数据
|
||||
HistoryCron = "0 0 0 *";
|
||||
}
|
||||
|
||||
var app = App;
|
||||
|
@ -247,6 +250,19 @@ public partial class Job : EntityBase<Job>
|
|||
var dt = cron.GetNext(time);
|
||||
if (dt < next) next = dt;
|
||||
}
|
||||
|
||||
// 如果下次时间属于历史,则使用历史Cron以便快速前进
|
||||
if (next < DateTime.Now)
|
||||
{
|
||||
var historyCron = HistoryCron;
|
||||
if (!historyCron.IsNullOrEmpty())
|
||||
{
|
||||
var cron = new Cron(historyCron);
|
||||
var next2 = cron.GetNext(time);
|
||||
if (next2 < DateTime.Now) next = next2;
|
||||
}
|
||||
}
|
||||
|
||||
return next;
|
||||
//return NewLife.Threading.Cron.GetNext(Cron.Split(";"), time);
|
||||
}
|
||||
|
|
|
@ -86,6 +86,14 @@ public partial class Job
|
|||
[BindColumn("Cron", "执行频次。定时调度的Cron表达式", "")]
|
||||
public String Cron { get => _Cron; set { if (OnPropertyChanging("Cron", value)) { _Cron = value; OnPropertyChanged("Cron"); } } }
|
||||
|
||||
private String _HistoryCron;
|
||||
/// <summary>回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次</summary>
|
||||
[DisplayName("回刷数据")]
|
||||
[Description("回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("HistoryCron", "回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次", "")]
|
||||
public String HistoryCron { get => _HistoryCron; set { if (OnPropertyChanging("HistoryCron", value)) { _HistoryCron = value; OnPropertyChanged("HistoryCron"); } } }
|
||||
|
||||
private String _Topic;
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
[DisplayName("主题")]
|
||||
|
@ -278,11 +286,11 @@ public partial class Job
|
|||
public DateTime LastTime { get => _LastTime; set { if (OnPropertyChanging("LastTime", value)) { _LastTime = value; OnPropertyChanged("LastTime"); } } }
|
||||
|
||||
private String _Data;
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
[DisplayName("数据")]
|
||||
[Description("数据。Sql模板或C#模板")]
|
||||
/// <summary>附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板</summary>
|
||||
[DisplayName("附加数据")]
|
||||
[Description("附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板")]
|
||||
[DataObjectField(false, false, true, -1)]
|
||||
[BindColumn("Data", "数据。Sql模板或C#模板", "")]
|
||||
[BindColumn("Data", "附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板", "")]
|
||||
public String Data { get => _Data; set { if (OnPropertyChanging("Data", value)) { _Data = value; OnPropertyChanged("Data"); } } }
|
||||
|
||||
private Int32 _CreateUserID;
|
||||
|
@ -383,6 +391,7 @@ public partial class Job
|
|||
"Enable" => _Enable,
|
||||
"Mode" => _Mode,
|
||||
"Cron" => _Cron,
|
||||
"HistoryCron" => _HistoryCron,
|
||||
"Topic" => _Topic,
|
||||
"MessageCount" => _MessageCount,
|
||||
"DataTime" => _DataTime,
|
||||
|
@ -429,6 +438,7 @@ public partial class Job
|
|||
case "Enable": _Enable = value.ToBoolean(); break;
|
||||
case "Mode": _Mode = (JobModes)value.ToInt(); break;
|
||||
case "Cron": _Cron = Convert.ToString(value); break;
|
||||
case "HistoryCron": _HistoryCron = Convert.ToString(value); break;
|
||||
case "Topic": _Topic = Convert.ToString(value); break;
|
||||
case "MessageCount": _MessageCount = value.ToInt(); break;
|
||||
case "DataTime": _DataTime = value.ToDateTime(); break;
|
||||
|
@ -509,6 +519,9 @@ public partial class Job
|
|||
/// <summary>执行频次。定时调度的Cron表达式</summary>
|
||||
public static readonly Field Cron = FindByName("Cron");
|
||||
|
||||
/// <summary>回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次</summary>
|
||||
public static readonly Field HistoryCron = FindByName("HistoryCron");
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public static readonly Field Topic = FindByName("Topic");
|
||||
|
||||
|
@ -575,7 +588,7 @@ public partial class Job
|
|||
/// <summary>最后时间。最后一次时间</summary>
|
||||
public static readonly Field LastTime = FindByName("LastTime");
|
||||
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
/// <summary>附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板</summary>
|
||||
public static readonly Field Data = FindByName("Data");
|
||||
|
||||
/// <summary>创建人</summary>
|
||||
|
@ -635,6 +648,9 @@ public partial class Job
|
|||
/// <summary>执行频次。定时调度的Cron表达式</summary>
|
||||
public const String Cron = "Cron";
|
||||
|
||||
/// <summary>回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次</summary>
|
||||
public const String HistoryCron = "HistoryCron";
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public const String Topic = "Topic";
|
||||
|
||||
|
@ -701,7 +717,7 @@ public partial class Job
|
|||
/// <summary>最后时间。最后一次时间</summary>
|
||||
public const String LastTime = "LastTime";
|
||||
|
||||
/// <summary>数据。Sql模板或C#模板</summary>
|
||||
/// <summary>附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板</summary>
|
||||
public const String Data = "Data";
|
||||
|
||||
/// <summary>创建人</summary>
|
||||
|
|
|
@ -127,6 +127,7 @@
|
|||
<Column Name="Enable" DataType="Boolean" Description="启用" />
|
||||
<Column Name="Mode" DataType="Int32" Description="调度模式。定时调度只要达到时间片开头就可以跑,数据调度要求达到时间片末尾才可以跑" Type="JobModes" />
|
||||
<Column Name="Cron" DataType="String" Description="执行频次。定时调度的Cron表达式" />
|
||||
<Column Name="HistoryCron" DataType="String" Description="回刷数据。定时调度回刷数据时使用的Cron表达式,一般分钟或小时级作业,回刷历史数据时,可能每天只需要跑一次" />
|
||||
<Column Name="Topic" DataType="String" Description="主题。消息调度时消费的主题" />
|
||||
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
|
||||
<Column Name="DataTime" DataType="DateTime" Description="数据时间。下一次处理数据的时间,默认从当前时间开始" />
|
||||
|
@ -149,7 +150,7 @@
|
|||
<Column Name="Speed" DataType="Int32" Description="速度" Category="统计" />
|
||||
<Column Name="LastStatus" DataType="Int32" Description="最后状态。最后一次状态" Category="统计" Type="JobStatus" />
|
||||
<Column Name="LastTime" DataType="DateTime" Description="最后时间。最后一次时间" Category="统计" />
|
||||
<Column Name="Data" DataType="String" Length="-1" Description="数据。Sql模板或C#模板" />
|
||||
<Column Name="Data" DataType="String" Length="-1" Description="附加数据。执行作业任务时附带的数据,可以是Json配置,也可以是Sql模板或C#模板" />
|
||||
<Column Name="CreateUserID" DataType="Int32" Description="创建人" Category="扩展" />
|
||||
<Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
|
||||
|
|
Binary file not shown.
|
@ -29,7 +29,7 @@
|
|||
<Content Include="favicon.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Redis" Version="6.1.2025.401" />
|
||||
<PackageReference Include="NewLife.Redis" Version="6.1.2025.411" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AntJob.Data\AntJob.Data.csproj" />
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<Content Include="favicon.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Cube.Core" Version="6.4.2025.401" />
|
||||
<PackageReference Include="NewLife.Cube.Core" Version="6.4.2025.403" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.3.2025.401" />
|
||||
<PackageReference Include="NewLife.Stardust.Extensions" Version="3.3.2025.401" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Cube.Core" Version="6.4.2025.401" />
|
||||
<PackageReference Include="NewLife.Cube.Core" Version="6.4.2025.403" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
Loading…
Reference in New Issue