using OrpaonVision.Core.Results; using OrpaonVision.Model.Production; namespace OrpaonVision.Core.Abstractions; /// /// 产品会话记录服务接口。 /// public interface IProductionSessionService { /// /// 创建新的产品会话。 /// Result CreateSession(CreateProductionSessionRequest request); /// /// 更新会话状态。 /// Result UpdateSessionStatus(Guid sessionId, ProductionSessionStatus status, string? reason = null); /// /// 更新会话进度。 /// Result UpdateSessionProgress(Guid sessionId, int currentLayer); /// /// 完成会话。 /// Result CompleteSession(Guid sessionId, ProductionSessionResult result, string? ngReason = null, string? remark = null); /// /// 取消会话。 /// Result CancelSession(Guid sessionId, string? reason = null); /// /// 获取会话详情。 /// Result GetSession(Guid sessionId); /// /// 获取会话列表。 /// Result> GetSessions(GetProductionSessionsRequest request); /// /// 获取当前活动会话。 /// Result GetCurrentSession(string stationId); /// /// 获取会话统计信息。 /// Result GetStatistics(GetProductionSessionStatisticsRequest request); /// /// 导出会话记录。 /// Result ExportSessions(ExportProductionSessionsRequest request); } /// /// 创建产品会话请求。 /// public sealed class CreateProductionSessionRequest { /// /// 产品类型编码。 /// public string ProductTypeCode { get; set; } = string.Empty; /// /// 产品类型名称。 /// public string ProductTypeName { get; set; } = string.Empty; /// /// 工位ID。 /// public string StationId { get; set; } = string.Empty; /// /// 工位名称。 /// public string StationName { get; set; } = string.Empty; /// /// 操作员ID。 /// public string OperatorId { get; set; } = string.Empty; /// /// 操作员姓名。 /// public string OperatorName { get; set; } = string.Empty; /// /// 班次ID。 /// public string ShiftId { get; set; } = string.Empty; /// /// 班次名称。 /// public string ShiftName { get; set; } = string.Empty; /// /// 总层级数。 /// public int TotalLayers { get; set; } /// /// 创建人。 /// public string CreatedBy { get; set; } = string.Empty; /// /// 备注。 /// public string? Remark { get; set; } } /// /// 获取产品会话列表请求。 /// public sealed class GetProductionSessionsRequest { /// /// 产品类型编码(可选)。 /// public string? ProductTypeCode { get; set; } /// /// 工位ID(可选)。 /// public string? StationId { get; set; } /// /// 操作员ID(可选)。 /// public string? OperatorId { get; set; } /// /// 会话状态(可选)。 /// public ProductionSessionStatus? Status { get; set; } /// /// 会话结果(可选)。 /// public ProductionSessionResult? Result { get; set; } /// /// 开始时间(UTC)。 /// public DateTime? StartTimeUtc { get; set; } /// /// 结束时间(UTC)。 /// public DateTime? EndTimeUtc { get; set; } /// /// 页码(从1开始)。 /// public int PageIndex { get; set; } = 1; /// /// 每页大小。 /// public int PageSize { get; set; } = 20; } /// /// 获取产品会话统计信息请求。 /// public sealed class GetProductionSessionStatisticsRequest { /// /// 产品类型编码(可选)。 /// public string? ProductTypeCode { get; set; } /// /// 工位ID(可选)。 /// public string? StationId { get; set; } /// /// 操作员ID(可选)。 /// public string? OperatorId { get; set; } /// /// 统计开始时间(UTC)。 /// public DateTime StartTimeUtc { get; set; } /// /// 统计结束时间(UTC)。 /// public DateTime EndTimeUtc { get; set; } } /// /// 导出产品会话记录请求。 /// public sealed class ExportProductionSessionsRequest { /// /// 产品类型编码(可选)。 /// public string? ProductTypeCode { get; set; } /// /// 工位ID(可选)。 /// public string? StationId { get; set; } /// /// 操作员ID(可选)。 /// public string? OperatorId { get; set; } /// /// 会话状态(可选)。 /// public ProductionSessionStatus? Status { get; set; } /// /// 会话结果(可选)。 /// public ProductionSessionResult? Result { get; set; } /// /// 开始时间(UTC)。 /// public DateTime? StartTimeUtc { get; set; } /// /// 结束时间(UTC)。 /// public DateTime? EndTimeUtc { get; set; } /// /// 导出格式。 /// public ExportFormat Format { get; set; } = ExportFormat.Excel; } /// /// 导出格式。 /// public enum ExportFormat { /// /// Excel格式。 /// Excel = 0, /// /// CSV格式。 /// Csv = 1, /// /// JSON格式。 /// Json = 2 } /// /// 产品会话统计信息。 /// public sealed class ProductionSessionStatistics { /// /// 总会话数。 /// public int TotalSessions { get; set; } /// /// OK会话数。 /// public int OkSessions { get; set; } /// /// NG会话数。 /// public int NgSessions { get; set; } /// /// 进行中会话数。 /// public int InProgressSessions { get; set; } /// /// 取消会话数。 /// public int CancelledSessions { get; set; } /// /// 暂停会话数。 /// public int PausedSessions { get; set; } /// /// 合格率。 /// public double PassRate { get; set; } /// /// 平均处理时间(秒)。 /// public double AverageProcessingTimeSeconds { get; set; } /// /// 每小时处理量。 /// public double ThroughputPerHour { get; set; } /// /// 按产品类型分组的统计。 /// public List ByProductType { get; set; } = new(); /// /// 按工位分组的统计。 /// public List ByStation { get; set; } = new(); /// /// 按操作员分组的统计。 /// public List ByOperator { get; set; } = new(); /// /// 按日期分组的统计。 /// public List ByDate { get; set; } = new(); } /// /// 产品类型统计。 /// public sealed class ProductTypeStatistics { /// /// 产品类型编码。 /// public string ProductTypeCode { get; set; } = string.Empty; /// /// 产品类型名称。 /// public string ProductTypeName { get; set; } = string.Empty; /// /// 总会话数。 /// public int TotalSessions { get; set; } /// /// OK会话数。 /// public int OkSessions { get; set; } /// /// NG会话数。 /// public int NgSessions { get; set; } /// /// 合格率。 /// public double PassRate { get; set; } } /// /// 工位统计。 /// public sealed class StationStatistics { /// /// 工位ID。 /// public string StationId { get; set; } = string.Empty; /// /// 工位名称。 /// public string StationName { get; set; } = string.Empty; /// /// 总会话数。 /// public int TotalSessions { get; set; } /// /// OK会话数。 /// public int OkSessions { get; set; } /// /// NG会话数。 /// public int NgSessions { get; set; } /// /// 合格率。 /// public double PassRate { get; set; } /// /// 每小时处理量。 /// public double ThroughputPerHour { get; set; } } /// /// 操作员统计。 /// public sealed class OperatorStatistics { /// /// 操作员ID。 /// public string OperatorId { get; set; } = string.Empty; /// /// 操作员姓名。 /// public string OperatorName { get; set; } = string.Empty; /// /// 总会话数。 /// public int TotalSessions { get; set; } /// /// OK会话数。 /// public int OkSessions { get; set; } /// /// NG会话数。 /// public int NgSessions { get; set; } /// /// 合格率。 /// public double PassRate { get; set; } /// /// 平均处理时间(秒)。 /// public double AverageProcessingTimeSeconds { get; set; } } /// /// 日期统计。 /// public sealed class DailyStatistics { /// /// 日期(UTC)。 /// public DateTime DateUtc { get; set; } /// /// 总会话数。 /// public int TotalSessions { get; set; } /// /// OK会话数。 /// public int OkSessions { get; set; } /// /// NG会话数。 /// public int NgSessions { get; set; } /// /// 合格率。 /// public double PassRate { get; set; } /// /// 每小时处理量。 /// public double ThroughputPerHour { get; set; } }