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; } }