166 lines
4.9 KiB
C#
166 lines
4.9 KiB
C#
|
|
using System;
|
||
|
|
using System.ComponentModel.DataAnnotations;
|
||
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
||
|
|
using Abp.Domain.Entities.Auditing;
|
||
|
|
|
||
|
|
namespace YunDa.SOMS.Entities.DataMonitoring
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 二次回路巡检计划项表 - 连接巡检计划和巡检项的关联表
|
||
|
|
/// </summary>
|
||
|
|
[Table("dm_SecondaryCircuitInspectionPlanItem")]
|
||
|
|
public class SecondaryCircuitInspectionPlanItem : FullAuditedEntity<Guid>
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 巡检计划ID
|
||
|
|
/// </summary>
|
||
|
|
[Required]
|
||
|
|
public virtual Guid InspectionPlanId { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 巡检项ID
|
||
|
|
/// </summary>
|
||
|
|
[Required]
|
||
|
|
public virtual Guid InspectionItemId { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 执行顺序
|
||
|
|
/// </summary>
|
||
|
|
public virtual int ExecutionOrder { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 是否启用
|
||
|
|
/// </summary>
|
||
|
|
public virtual bool IsActive { get; set; } = true;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 最后执行时间
|
||
|
|
/// </summary>
|
||
|
|
public virtual DateTime? LastExecutionTime { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 最后执行结果
|
||
|
|
/// </summary>
|
||
|
|
public virtual SecondaryCircuitInspectionResultStatus LastExecutionResult { get; set; } = SecondaryCircuitInspectionResultStatus.NotExecuted;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 最后执行错误信息
|
||
|
|
/// </summary>
|
||
|
|
[StringLength(1000)]
|
||
|
|
public virtual string LastExecutionErrorMessage { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 执行次数
|
||
|
|
/// </summary>
|
||
|
|
public virtual int ExecutionCount { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 成功次数
|
||
|
|
/// </summary>
|
||
|
|
public virtual int SuccessCount { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 异常次数
|
||
|
|
/// </summary>
|
||
|
|
public virtual int AbnormalCount { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 错误次数
|
||
|
|
/// </summary>
|
||
|
|
public virtual int ErrorCount { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 平均执行耗时(毫秒)
|
||
|
|
/// </summary>
|
||
|
|
public virtual long AverageExecutionTimeMs { get; set; } = 0;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 备注
|
||
|
|
/// </summary>
|
||
|
|
[StringLength(1000)]
|
||
|
|
public virtual string Remark { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 巡检计划导航属性
|
||
|
|
/// </summary>
|
||
|
|
[ForeignKey("InspectionPlanId")]
|
||
|
|
public virtual SecondaryCircuitInspectionPlan InspectionPlan { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 巡检项导航属性
|
||
|
|
/// </summary>
|
||
|
|
[ForeignKey("InspectionItemId")]
|
||
|
|
public virtual SecondaryCircuitInspectionItem InspectionItem { get; set; }
|
||
|
|
|
||
|
|
public SecondaryCircuitInspectionPlanItem()
|
||
|
|
{
|
||
|
|
Id = Guid.NewGuid();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 更新执行统计信息
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="result">执行结果</param>
|
||
|
|
/// <param name="executionTimeMs">执行耗时(毫秒)</param>
|
||
|
|
public void UpdateExecutionStatistics(SecondaryCircuitInspectionResultStatus result, long executionTimeMs)
|
||
|
|
{
|
||
|
|
LastExecutionTime = DateTime.Now;
|
||
|
|
LastExecutionResult = result;
|
||
|
|
ExecutionCount++;
|
||
|
|
|
||
|
|
switch (result)
|
||
|
|
{
|
||
|
|
case SecondaryCircuitInspectionResultStatus.Normal:
|
||
|
|
SuccessCount++;
|
||
|
|
break;
|
||
|
|
case SecondaryCircuitInspectionResultStatus.Abnormal:
|
||
|
|
AbnormalCount++;
|
||
|
|
break;
|
||
|
|
case SecondaryCircuitInspectionResultStatus.Error:
|
||
|
|
ErrorCount++;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 更新平均执行耗时
|
||
|
|
if (ExecutionCount > 1)
|
||
|
|
{
|
||
|
|
AverageExecutionTimeMs = (AverageExecutionTimeMs * (ExecutionCount - 1) + executionTimeMs) / ExecutionCount;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
AverageExecutionTimeMs = executionTimeMs;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 获取成功率
|
||
|
|
/// </summary>
|
||
|
|
/// <returns>成功率(百分比)</returns>
|
||
|
|
public decimal GetSuccessRate()
|
||
|
|
{
|
||
|
|
if (ExecutionCount == 0) return 0;
|
||
|
|
return (decimal)SuccessCount / ExecutionCount * 100;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 获取异常率
|
||
|
|
/// </summary>
|
||
|
|
/// <returns>异常率(百分比)</returns>
|
||
|
|
public decimal GetAbnormalRate()
|
||
|
|
{
|
||
|
|
if (ExecutionCount == 0) return 0;
|
||
|
|
return (decimal)AbnormalCount / ExecutionCount * 100;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 获取错误率
|
||
|
|
/// </summary>
|
||
|
|
/// <returns>错误率(百分比)</returns>
|
||
|
|
public decimal GetErrorRate()
|
||
|
|
{
|
||
|
|
if (ExecutionCount == 0) return 0;
|
||
|
|
return (decimal)ErrorCount / ExecutionCount * 100;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|