466 lines
11 KiB
C#
466 lines
11 KiB
C#
namespace OrpaonVision.Core.Production.Contracts;
|
||
|
||
/// <summary>
|
||
/// 实时生产状态。
|
||
/// </summary>
|
||
public sealed class RealtimeProductionStatusDto
|
||
{
|
||
/// <summary>
|
||
/// 工位ID。
|
||
/// </summary>
|
||
public Guid WorkstationId { get; init; }
|
||
|
||
/// <summary>
|
||
/// 工位名称。
|
||
/// </summary>
|
||
public string WorkstationName { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 当前状态。
|
||
/// </summary>
|
||
public string CurrentStatus { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 当前产品序列号。
|
||
/// </summary>
|
||
public string? CurrentProductSerialNumber { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前机种编码。
|
||
/// </summary>
|
||
public string? CurrentProductTypeCode { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前层级名称。
|
||
/// </summary>
|
||
public string? CurrentLayerName { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前层级序号。
|
||
/// </summary>
|
||
public int? CurrentLayerSequence { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前操作员姓名。
|
||
/// </summary>
|
||
public string? CurrentOperatorName { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前班次。
|
||
/// </summary>
|
||
public string? CurrentShift { get; init; }
|
||
|
||
/// <summary>
|
||
/// 今日OK数量。
|
||
/// </summary>
|
||
public long TodayOkCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 今日NG数量。
|
||
/// </summary>
|
||
public long TodayNgCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 今日良率。
|
||
/// </summary>
|
||
public decimal TodayYieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前班次OK数量。
|
||
/// </summary>
|
||
public long ShiftOkCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前班次NG数量。
|
||
/// </summary>
|
||
public long ShiftNgCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 当前班次良率。
|
||
/// </summary>
|
||
public decimal ShiftYieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 平均节拍(秒)。
|
||
/// </summary>
|
||
public decimal AverageCycleTimeSeconds { get; init; }
|
||
|
||
/// <summary>
|
||
/// 设备运行状态。
|
||
/// </summary>
|
||
public string DeviceStatus { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 最后更新时间(UTC)。
|
||
/// </summary>
|
||
public DateTime LastUpdatedAtUtc { get; init; }
|
||
|
||
/// <summary>
|
||
/// 连续正常生产数量。
|
||
/// </summary>
|
||
public int ConsecutiveOkCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 最近一次NG时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? LastNgAtUtc { get; init; }
|
||
|
||
/// <summary>
|
||
/// 最近一次NG类型。
|
||
/// </summary>
|
||
public string? LastNgType { get; init; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 质量分析报告。
|
||
/// </summary>
|
||
public sealed class QualityAnalysisReportDto
|
||
{
|
||
/// <summary>
|
||
/// 报告时间范围开始(UTC)。
|
||
/// </summary>
|
||
public DateTime StartTimeUtc { get; init; }
|
||
|
||
/// <summary>
|
||
/// 报告时间范围结束(UTC)。
|
||
/// </summary>
|
||
public DateTime EndTimeUtc { get; init; }
|
||
|
||
/// <summary>
|
||
/// 工位名称。
|
||
/// </summary>
|
||
public string WorkstationName { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 总体质量指标。
|
||
/// </summary>
|
||
public OverallQualityMetricsDto OverallMetrics { get; init; } = new();
|
||
|
||
/// <summary>
|
||
/// NG类型分析。
|
||
/// </summary>
|
||
public IReadOnlyList<NgTypeAnalysisDto> NgTypeAnalysis { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 机种质量对比。
|
||
/// </summary>
|
||
public IReadOnlyList<ProductTypeQualityDto> ProductTypeQuality { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 层级质量分析。
|
||
/// </summary>
|
||
public IReadOnlyList<LayerQualityAnalysisDto> LayerQualityAnalysis { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 操作员质量分析。
|
||
/// </summary>
|
||
public IReadOnlyList<OperatorQualityAnalysisDto> OperatorQualityAnalysis { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 时间趋势分析。
|
||
/// </summary>
|
||
public IReadOnlyList<QualityTrendDto> QualityTrends { get; init; } = [];
|
||
|
||
/// <summary>
|
||
/// 改进建议。
|
||
/// </summary>
|
||
public IReadOnlyList<ImprovementSuggestionDto> ImprovementSuggestions { get; init; } = [];
|
||
}
|
||
|
||
/// <summary>
|
||
/// 总体质量指标。
|
||
/// </summary>
|
||
public sealed class OverallQualityMetricsDto
|
||
{
|
||
/// <summary>
|
||
/// 总产品数量。
|
||
/// </summary>
|
||
public long TotalProducts { get; init; }
|
||
|
||
/// <summary>
|
||
/// OK产品数量。
|
||
/// </summary>
|
||
public long OkProducts { get; init; }
|
||
|
||
/// <summary>
|
||
/// NG产品数量。
|
||
/// </summary>
|
||
public long NgProducts { get; init; }
|
||
|
||
/// <summary>
|
||
/// 良率。
|
||
/// </summary>
|
||
public decimal YieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 目标良率。
|
||
/// </summary>
|
||
public decimal TargetYieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 良率达成率。
|
||
/// </summary>
|
||
public decimal YieldRateAchievement { get; init; }
|
||
|
||
/// <summary>
|
||
/// 平均节拍(秒)。
|
||
/// </summary>
|
||
public decimal AverageCycleTimeSeconds { get; init; }
|
||
|
||
/// <summary>
|
||
/// 目标节拍(秒)。
|
||
/// </summary>
|
||
public decimal TargetCycleTimeSeconds { get; init; }
|
||
|
||
/// <summary>
|
||
/// 节拍达成率。
|
||
/// </summary>
|
||
public decimal CycleTimeAchievement { get; init; }
|
||
|
||
/// <summary>
|
||
/// 质量评分(0-100)。
|
||
/// </summary>
|
||
public decimal QualityScore { get; init; }
|
||
|
||
/// <summary>
|
||
/// 质量等级。
|
||
/// </summary>
|
||
public string QualityGrade { get; init; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// NG类型分析。
|
||
/// </summary>
|
||
public sealed class NgTypeAnalysisDto
|
||
{
|
||
/// <summary>
|
||
/// NG类型。
|
||
/// </summary>
|
||
public string NgType { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// NG类型描述。
|
||
/// </summary>
|
||
public string Description { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// NG数量。
|
||
/// </summary>
|
||
public long Count { get; init; }
|
||
|
||
/// <summary>
|
||
/// 占比。
|
||
/// </summary>
|
||
public decimal Percentage { get; init; }
|
||
|
||
/// <summary>
|
||
/// 严重程度。
|
||
/// </summary>
|
||
public string Severity { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 主要发生层级。
|
||
/// </summary>
|
||
public string MainLayer { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 趋势(上升/下降/稳定)。
|
||
/// </summary>
|
||
public string Trend { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 趋势变化率。
|
||
/// </summary>
|
||
public decimal TrendChangeRate { get; init; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种质量对比。
|
||
/// </summary>
|
||
public sealed class ProductTypeQualityDto
|
||
{
|
||
/// <summary>
|
||
/// 机种编码。
|
||
/// </summary>
|
||
public string ProductTypeCode { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 机种名称。
|
||
/// </summary>
|
||
public string ProductTypeName { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 产品数量。
|
||
/// </summary>
|
||
public long ProductCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 良率。
|
||
/// </summary>
|
||
public decimal YieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 平均节拍(秒)。
|
||
/// </summary>
|
||
public decimal AverageCycleTimeSeconds { get; init; }
|
||
|
||
/// <summary>
|
||
/// 质量排名。
|
||
/// </summary>
|
||
public int QualityRanking { get; init; }
|
||
|
||
/// <summary>
|
||
/// 效率排名。
|
||
/// </summary>
|
||
public int EfficiencyRanking { init; get; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 层级质量分析。
|
||
/// </summary>
|
||
public sealed class LayerQualityAnalysisDto
|
||
{
|
||
/// <summary>
|
||
/// 层级名称。
|
||
/// </summary>
|
||
public string LayerName { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 层级序号。
|
||
/// </summary>
|
||
public int LayerSequence { get; init; }
|
||
|
||
/// <summary>
|
||
/// 检测次数。
|
||
/// </summary>
|
||
public long DetectionCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// NG次数。
|
||
/// </summary>
|
||
public long NgCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// NG率。
|
||
/// </summary>
|
||
public decimal NgRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 平均检测时间(毫秒)。
|
||
/// </summary>
|
||
public decimal AverageDetectionTimeMs { get; init; }
|
||
|
||
/// <summary>
|
||
/// 风险等级。
|
||
/// </summary>
|
||
public string RiskLevel { get; init; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 操作员质量分析。
|
||
/// </summary>
|
||
public sealed class OperatorQualityAnalysisDto
|
||
{
|
||
/// <summary>
|
||
/// 操作员姓名。
|
||
/// </summary>
|
||
public string OperatorName { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 班次。
|
||
/// </summary>
|
||
public string Shift { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 产品数量。
|
||
/// </summary>
|
||
public long ProductCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 良率。
|
||
/// </summary>
|
||
public decimal YieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 平均节拍(秒)。
|
||
/// </summary>
|
||
public decimal AverageCycleTimeSeconds { get; init; }
|
||
|
||
/// <summary>
|
||
/// 技能等级。
|
||
/// </summary>
|
||
public string SkillLevel { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 绩效评分。
|
||
/// </summary>
|
||
public decimal PerformanceScore { get; init; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 质量趋势。
|
||
/// </summary>
|
||
public sealed class QualityTrendDto
|
||
{
|
||
/// <summary>
|
||
/// 时间点(UTC)。
|
||
/// </summary>
|
||
public DateTime TimePointUtc { get; init; }
|
||
|
||
/// <summary>
|
||
/// 良率。
|
||
/// </summary>
|
||
public decimal YieldRate { get; init; }
|
||
|
||
/// <summary>
|
||
/// 产品数量。
|
||
/// </summary>
|
||
public long ProductCount { get; init; }
|
||
|
||
/// <summary>
|
||
/// 移动平均良率。
|
||
/// </summary>
|
||
public decimal MovingAverageYieldRate { get; init; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 改进建议。
|
||
/// </summary>
|
||
public sealed class ImprovementSuggestionDto
|
||
{
|
||
/// <summary>
|
||
/// 建议类型。
|
||
/// </summary>
|
||
public string SuggestionType { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 建议标题。
|
||
/// </summary>
|
||
public string Title { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 建议描述。
|
||
/// </summary>
|
||
public string Description { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 优先级。
|
||
/// </summary>
|
||
public string Priority { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 预期效果。
|
||
/// </summary>
|
||
public string ExpectedImpact { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 实施难度。
|
||
/// </summary>
|
||
public string ImplementationDifficulty { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 相关数据支持。
|
||
/// </summary>
|
||
public string SupportingData { get; init; } = string.Empty;
|
||
}
|