using System; using System.Collections.Generic; namespace NPP.SmartSchedue.Api.Contracts.Services.Integration.Output { /// /// 智能整合结果 /// 记录智能任务整合的完整执行结果和统计信息 /// /// 业务价值: /// 1. 结果追踪:详细记录整合执行的完整结果 /// 2. 性能评估:提供整合后的效果评估和性能指标 /// 3. 问题诊断:记录失败原因和改进建议 /// 4. 决策支持:为后续优化提供数据支撑 /// 5. 审计追踪:支持操作审计和合规性检查 /// public class SmartIntegrationResult { #region 核心执行状态 /// /// 整合是否成功 /// public bool IsSuccess { get; set; } /// /// 整合批次编码 /// 格式:INT + yyyyMMddHHmmss + XXX,总长度23字符 /// public string IntegrationBatchCode { get; set; } = string.Empty; /// /// 整合记录ID /// 关联到数据库中的整合记录表 /// public long IntegrationRecordId { get; set; } /// /// 完成时间 /// public DateTime CompletionTime { get; set; } = DateTime.Now; /// /// 执行耗时(毫秒) /// public long ElapsedMilliseconds { get; set; } #endregion #region 分配结果 /// /// 人员分配结果 /// 包含成功分配、失败分配、公平性评分等详细信息 /// public PersonnelAllocationResult PersonnelAllocation { get; set; } = new(); /// /// 设备分配结果 /// 包含成功分配、失败分配、利用率分析等详细信息 /// public EquipmentAllocationResult EquipmentAllocation { get; set; } = new(); #endregion #region 统计信息 /// /// 成功分配的任务数量 /// public int SuccessfulTaskCount { get; set; } /// /// 总体成功率(0-1) /// 计算公式:成功任务数量 / 总任务数量 /// public double OverallSuccessRate { get; set; } /// /// 失败任务列表 /// 包含失败原因、类型和冲突详情 /// public List FailedTasks { get; set; } = new(); #endregion #region 详细信息和报告 /// /// 整合详情 /// 包含整合过程的详细描述和结果摘要 /// public string IntegrationDetails { get; set; } = string.Empty; /// /// 改进建议列表 /// 基于整合结果生成的优化建议 /// public List ImprovementSuggestions { get; set; } = new(); /// /// 警告信息列表 /// 整合过程中产生的警告信息 /// public List WarningMessages { get; set; } = new(); #endregion #region 性能和质量指标 /// /// 人员分配公平性评分(0-100) /// 评估人员分配是否公平合理 /// public double PersonnelFairnessScore => PersonnelAllocation?.FairnessScore ?? 0; /// /// 设备利用率(百分比) /// 设备分配后的整体利用率 /// public decimal EquipmentUtilizationRate => EquipmentAllocation?.OverallUtilizationRate ?? 0; /// /// 整合质量评分(0-100) /// 综合考虑成功率、公平性、利用率等因素 /// public double IntegrationQualityScore => CalculateIntegrationQualityScore(); #endregion #region 操作信息 /// /// 操作员用户ID /// public long OperatorUserId { get; set; } /// /// 操作员姓名 /// public string OperatorName { get; set; } = string.Empty; /// /// 操作时间 /// public DateTime OperationTime { get; set; } = DateTime.Now; #endregion #region 业务统计 /// /// 涉及的项目数量 /// public int ProjectCount { get; set; } /// /// 涉及的项目编号列表 /// public List ProjectNumbers { get; set; } = new(); /// /// 任务优先级分布 /// 记录不同优先级任务的数量分布 /// public Dictionary TaskPriorityDistribution { get; set; } = new(); /// /// 任务复杂度分布 /// 记录不同复杂度任务的数量分布 /// public Dictionary TaskComplexityDistribution { get; set; } = new(); #endregion #region 系统信息 /// /// 系统版本信息 /// public string SystemVersion { get; set; } = string.Empty; /// /// 执行环境信息 /// public string ExecutionEnvironment { get; set; } = string.Empty; /// /// 数据库连接信息(脱敏) /// public string DatabaseInfo { get; set; } = string.Empty; #endregion #region 私有方法 /// /// 计算整合质量评分 /// 综合考虑多个维度的质量指标 /// private double CalculateIntegrationQualityScore() { var successRateWeight = 0.4; var fairnessWeight = 0.3; var utilizationWeight = 0.2; var efficiencyWeight = 0.1; var successRateScore = OverallSuccessRate * 100; var fairnessScore = PersonnelFairnessScore; var utilizationScore = (double)EquipmentUtilizationRate; var efficiencyScore = ElapsedMilliseconds > 0 ? Math.Min(100, 10000.0 / ElapsedMilliseconds * 100) : 0; return successRateScore * successRateWeight + fairnessScore * fairnessWeight + utilizationScore * utilizationWeight + efficiencyScore * efficiencyWeight; } #endregion } }