Drop legacy scene match columns from code/SQL and delete unused area tables guidance for pre-prod cleanup. Co-authored-by: Cursor <cursoragent@cursor.com>
79 lines
3.7 KiB
C#
79 lines
3.7 KiB
C#
using Fake.Domain.Entities.Auditing;
|
||
using TrackCenter.Domain.SeedWork;
|
||
|
||
namespace TrackCenter.Domain.Aggregates.WarningAggregate.Transport;
|
||
|
||
// 运输时效场景规则项
|
||
[SugarTable("t_warning_transport_scene_rule_item", TableDescription = "运输时效场景分段规则项")]
|
||
public sealed class TransportWarningSceneRuleItemEntity : FullAuditedEntity<int, int>
|
||
{
|
||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
|
||
public int Id { get; set; }
|
||
|
||
[SugarColumn(ColumnName = "WarningId", ColumnDescription = "预警规则主体Id(t_warning.Id)")]
|
||
public int WarningId { get; set; }
|
||
|
||
[SugarColumn(ColumnName = "TransportWarningSceneId", ColumnDescription = "运输时效场景Id(t_warning_transport_scene.Id)")]
|
||
public int TransportWarningSceneId { get; set; }
|
||
|
||
[SugarColumn(ColumnName = "StartTrackStatusId", ColumnDescription = "起始轨迹状态Id")]
|
||
public int StartTrackStatusId { get; set; } //起始轨迹状态Id,tips:用于匹配轨迹
|
||
|
||
[SugarColumn(ColumnName = "EndTrackStatusId", ColumnDescription = "截止轨迹状态Id")]
|
||
public int EndTrackStatusId { get; set; } //截止轨迹状态Id, tips:用于验证预警明细是否可以产生,预警通知是否可以进行
|
||
|
||
[SugarColumn(ColumnName = "TransportTimeSpan", ColumnDescription = "时效 (单位小时)")]
|
||
public float TransportTimeSpan { get; set; } //时效 (单位小时)
|
||
|
||
[SugarColumn(ColumnName = "StartTrackWarningTimeSpan", ColumnDescription = "起始轨迹生成预警时间 (单位小时)")]
|
||
public float StartTrackWarningTimeSpan { get; set; } //起始轨迹生成预警时间 (单位小时)
|
||
|
||
// [SugarColumn(ColumnName = "NotifyModes", ColumnDescription = "通知方式,多个方式(,)分割 eg: 1,2")]
|
||
// public string NotifyModes { get; set; } //通知方式,多个方式(,)分割 eg: 1,2
|
||
|
||
[SugarColumn(ColumnName = "NotifyUsers", ColumnDescription = "通知人Json eg: [{\"UserId\":1,\"UserName\":\"张三\"},{\"UserId\":2,\"UserName\":\"李四\"}]")]
|
||
public string NotifyUsers { get; set; } //通知人Json eg: [{"UserId":1,"UserName":"张三"},{"UserId":2,"UserName":"李四"}]
|
||
|
||
public TransportWarningSceneRuleItemEntity()
|
||
{
|
||
}
|
||
|
||
public TransportWarningSceneRuleItemEntity(int id, int warningId, int transportWarningSceneId, int startTrackStatusId, int endTrackStatusId, float transportTimeSpan, float startTrackWarningTimeSpan, string notifyUsers)
|
||
{
|
||
Id = id;
|
||
WarningId = warningId;
|
||
TransportWarningSceneId = transportWarningSceneId;
|
||
StartTrackStatusId = startTrackStatusId;
|
||
EndTrackStatusId = endTrackStatusId;
|
||
TransportTimeSpan = transportTimeSpan;
|
||
StartTrackWarningTimeSpan = startTrackWarningTimeSpan;
|
||
NotifyUsers = notifyUsers;
|
||
}
|
||
|
||
public bool CanHitRule(int trackStatusId, HashSet<int> trackStatusIds)
|
||
{
|
||
return trackStatusId == StartTrackStatusId //命中起始轨迹状态
|
||
&& !trackStatusIds.Contains(EndTrackStatusId); //缺失截止轨迹状态
|
||
}
|
||
|
||
// 重新命中,用于规则扫描
|
||
public bool CanReHit(HashSet<int> trackStatusIds)
|
||
{
|
||
return trackStatusIds.Contains(StartTrackStatusId) //存在起始
|
||
&& !trackStatusIds.Contains(EndTrackStatusId); //不存在截止
|
||
}
|
||
|
||
// 判断未命中规则
|
||
public bool CanNotHit(HashSet<int>? trackStatusIds)
|
||
{
|
||
if (trackStatusIds is null) //轨迹状态为空
|
||
return true;
|
||
|
||
if (!trackStatusIds.Contains(StartTrackStatusId)) //不存在起始
|
||
return true;
|
||
|
||
return trackStatusIds.Contains(EndTrackStatusId); //存在起始并且存在截止,为完成态,也属于规则未命中
|
||
}
|
||
|
||
}
|