using System;
using System.Collections.Generic;
using NPP.SmartSchedue.Api.Contracts.Services.Integration.Output;
namespace NPP.SmartSchedue.Api.Contracts.Domain.Integration
{
///
/// 整合记录变更详情
/// 记录版本间的详细变更信息,支持变更分析和回滚操作
///
public class IntegrationChangeDetails
{
///
/// 变更类型列表
/// 可能的值:TaskModified, TaskAdded, TaskRemoved, PersonnelChanged, EquipmentChanged,
/// TaskTimeConflict, PersonnelUnavailable, EquipmentUnavailable, PriorityAdjusted
///
public List ChangeTypes { get; set; } = new();
///
/// 发生变更的任务ID列表
///
public List ChangedTaskIds { get; set; } = new();
///
/// 新增的任务ID列表
///
public List AddedTaskIds { get; set; } = new();
///
/// 移除的任务ID列表
///
public List RemovedTaskIds { get; set; } = new();
///
/// 受影响的人员ID列表
///
public List AffectedPersonnelIds { get; set; } = new();
///
/// 受影响的设备ID列表
///
public List AffectedEquipmentIds { get; set; } = new();
///
/// 具体的任务修改详情
///
public List TaskModifications { get; set; } = new();
///
/// 人员分配变更详情
///
public List PersonnelChanges { get; set; } = new();
///
/// 设备分配变更详情
///
public List EquipmentChanges { get; set; } = new();
///
/// 变更触发的原始事件
/// 记录导致变更的原始事件信息
///
public ChangeTriggeredEvent TriggerEvent { get; set; } = new();
///
/// 变更检测时间
///
public DateTime DetectedTime { get; set; } = DateTime.Now;
///
/// 变更处理状态
/// Detected-已检测, Processing-处理中, Completed-已完成, Failed-处理失败
///
public string ProcessingStatus { get; set; } = "Detected";
///
/// 变更影响分析
///
public ChangeImpactAnalysis ImpactAnalysis { get; set; } = new();
}
///
/// 任务变更详情(Domain层)
///
public class TaskChangeDetail
{
///
/// 任务ID
///
public long TaskId { get; set; }
///
/// 任务代码
///
public string TaskCode { get; set; } = string.Empty;
///
/// 修改类型
/// TimeChanged-时间变更, PriorityChanged-优先级变更, PersonnelRequirementChanged-人员需求变更,
/// EquipmentRequirementChanged-设备需求变更, StatusChanged-状态变更
///
public string ModificationType { get; set; } = string.Empty;
///
/// 修改前的值(JSON格式)
///
public string BeforeValue { get; set; } = "{}";
///
/// 修改后的值(JSON格式)
///
public string AfterValue { get; set; } = "{}";
///
/// 修改时间
///
public DateTime ModifiedTime { get; set; } = DateTime.Now;
///
/// 修改说明
///
public string Description { get; set; } = string.Empty;
///
/// 影响评估
/// 评估这个修改对整体分配的影响程度
///
public string ImpactAssessment { get; set; } = string.Empty;
///
/// 变更类型(兼容性属性,映射到ModificationType)
///
public string ChangeType => ModificationType;
///
/// 影响级别(根据ImpactAssessment计算)
///
public TaskChangeImpactLevel ImpactLevel
{
get
{
if (ImpactAssessment.Contains("高影响") || ImpactAssessment.Contains("严重"))
return TaskChangeImpactLevel.High;
if (ImpactAssessment.Contains("中等") || ImpactAssessment.Contains("一般"))
return TaskChangeImpactLevel.Medium;
if (ImpactAssessment.Contains("低影响") || ImpactAssessment.Contains("轻微"))
return TaskChangeImpactLevel.Low;
return TaskChangeImpactLevel.Medium; // 默认中等影响
}
}
}
///
/// 人员分配变更
///
public class PersonnelAssignmentChange
{
///
/// 任务ID
///
public long TaskId { get; set; }
///
/// 原分配人员ID
///
public long? PreviousPersonnelId { get; set; }
///
/// 原分配人员姓名
///
public string PreviousPersonnelName { get; set; } = string.Empty;
///
/// 新分配人员ID
///
public long? NewPersonnelId { get; set; }
///
/// 新分配人员姓名
///
public string NewPersonnelName { get; set; } = string.Empty;
///
/// 变更原因
///
public string ChangeReason { get; set; } = string.Empty;
///
/// 变更时间
///
public DateTime ChangeTime { get; set; } = DateTime.Now;
///
/// 是否为自动变更
///
public bool IsAutomaticChange { get; set; } = false;
}
///
/// 设备分配变更
///
public class EquipmentAssignmentChange
{
///
/// 任务ID
///
public long TaskId { get; set; }
///
/// 原分配设备ID
///
public long? PreviousEquipmentId { get; set; }
///
/// 原分配设备名称
///
public string PreviousEquipmentName { get; set; } = string.Empty;
///
/// 新分配设备ID
///
public long? NewEquipmentId { get; set; }
///
/// 新分配设备名称
///
public string NewEquipmentName { get; set; } = string.Empty;
///
/// 变更原因
///
public string ChangeReason { get; set; } = string.Empty;
///
/// 变更时间
///
public DateTime ChangeTime { get; set; } = DateTime.Now;
///
/// 是否为自动变更
///
public bool IsAutomaticChange { get; set; } = false;
}
///
/// 变更触发事件
///
public class ChangeTriggeredEvent
{
///
/// 事件类型
/// TaskModified-任务修改, UserRequest-用户请求, SystemOptimization-系统优化,
/// ResourceUnavailable-资源不可用, ConflictDetected-冲突检测
///
public string EventType { get; set; } = string.Empty;
///
/// 事件来源
/// 标识触发变更的具体来源
///
public string EventSource { get; set; } = string.Empty;
///
/// 事件详情
///
public string EventDetails { get; set; } = string.Empty;
///
/// 事件发生时间
///
public DateTime EventTime { get; set; } = DateTime.Now;
///
/// 触发用户ID
///
public long? TriggeredByUserId { get; set; }
///
/// 触发用户姓名
///
public string TriggeredByUserName { get; set; } = string.Empty;
}
///
/// 变更影响分析
///
public class ChangeImpactAnalysis
{
///
/// 影响范围
/// Local-局部影响, Regional-区域影响, Global-全局影响
///
public string ImpactScope { get; set; } = "Local";
///
/// 影响严重程度
/// Low-轻微, Medium-中等, High-严重, Critical-关键
///
public string SeverityLevel { get; set; } = "Low";
///
/// 预计影响的任务数量
///
public int EstimatedAffectedTasks { get; set; } = 0;
///
/// 预计影响的人员数量
///
public int EstimatedAffectedPersonnel { get; set; } = 0;
///
/// 预计影响的设备数量
///
public int EstimatedAffectedEquipment { get; set; } = 0;
///
/// 建议的处理策略
/// AutoReallocation-自动重新分配, ManualReview-手动复审, FullReintegration-完全重新整合
///
public string RecommendedAction { get; set; } = "AutoReallocation";
///
/// 预计处理耗时(分钟)
///
public int EstimatedProcessingTimeMinutes { get; set; } = 0;
///
/// 风险评估
///
public string RiskAssessment { get; set; } = string.Empty;
///
/// 业务影响说明
///
public string BusinessImpactDescription { get; set; } = string.Empty;
}
}