namespace Admin.NET.Plugin.AiDOP.Dto.S8.OrderFlow;
///
/// ORDER-FLOW-S8-INTEGRATED-DOMAIN-RESET-1 t3a:S8 订单执行链路 DTO 契约。
/// 仅定义类型,不携带业务常量 / 不引用 Entity / 不接 service 逻辑。
/// 后续 t3b/t3c 切片负责 service + controller 把 DTO 接到 ado_s8_order_flow_* 与 ado_s8_exception 实时聚合。
///
#region 订单档案
public class AdoS8OrderFlowOrderQueryDto
{
public long? TenantId { get; set; }
public long? FactoryId { get; set; }
public string? Keyword { get; set; }
public string? CurrentFlowCode { get; set; }
public string? CustomerCode { get; set; }
public string? ProductLine { get; set; }
public string? Region { get; set; }
public string? WorkflowStatus { get; set; }
public string? ScenarioCode { get; set; }
}
public class AdoS8OrderFlowOrderListItemDto
{
public string OrderCode { get; set; } = string.Empty;
public string ProductName { get; set; } = string.Empty;
public string ProductLine { get; set; } = string.Empty;
public string CustomerCode { get; set; } = string.Empty;
public string CustomerName { get; set; } = string.Empty;
public string CustomerType { get; set; } = string.Empty;
public string Region { get; set; } = string.Empty;
public string Priority { get; set; } = string.Empty;
public string WorkflowStatus { get; set; } = string.Empty;
public string CurrentOrderFlowCode { get; set; } = string.Empty;
public string CurrentOrderFlowName { get; set; } = string.Empty;
public string CurrentStatus { get; set; } = string.Empty;
public DateTime ReleaseAt { get; set; }
public decimal TargetCycleDays { get; set; }
public decimal? ActualCycleDays { get; set; }
public decimal? CurrentCycleDays { get; set; }
public decimal? NodeVarianceDays { get; set; }
public decimal? CumulativeVarianceDays { get; set; }
/// 来自 ado_s8_exception 实时聚合(order 主档表无 exception_count 列)。
public int ExceptionCount { get; set; }
public string ExceptionStatus { get; set; } = string.Empty;
public int? ResponseMinutes { get; set; }
public int? ProcessingMinutes { get; set; }
public int? TotalLossMinutes { get; set; }
public string ScenarioCode { get; set; } = string.Empty;
public string DataSource { get; set; } = string.Empty;
}
public class AdoS8OrderFlowOrderDetailDto : AdoS8OrderFlowOrderListItemDto
{
public List Lifecycle { get; set; } = new();
}
#endregion
#region 阶段 / L2 / L3
public class AdoS8OrderFlowStageDto
{
public string OrderFlowCode { get; set; } = string.Empty;
public string OrderFlowName { get; set; } = string.Empty;
public string? OwnerDept { get; set; }
public int SortNo { get; set; }
public decimal PlannedDays { get; set; }
public decimal? ActualDays { get; set; }
public DateTime TargetAt { get; set; }
public DateTime? ActualStartAt { get; set; }
public DateTime? ActualEndAt { get; set; }
public string Status { get; set; } = string.Empty;
public decimal? NodeVarianceDays { get; set; }
public decimal? CumulativeVarianceDays { get; set; }
public List Substeps { get; set; } = new();
}
public class AdoS8OrderFlowSubstepDto
{
public string SubstepCode { get; set; } = string.Empty;
public string SubstepName { get; set; } = string.Empty;
public decimal PiHours { get; set; }
public decimal? ActualHours { get; set; }
public string Status { get; set; } = string.Empty;
public int SortNo { get; set; }
public List Units { get; set; } = new();
}
public class AdoS8OrderFlowSubstepUnitDto
{
public string UnitCode { get; set; } = string.Empty;
public string UnitName { get; set; } = string.Empty;
public decimal PiHours { get; set; }
public decimal? ActualHours { get; set; }
public string Status { get; set; } = string.Empty;
public int SortNo { get; set; }
}
#endregion
#region 订单 + 采购透视组合
public class AdoS8OrderFlowChainDto
{
public AdoS8OrderFlowOrderDetailDto Order { get; set; } = new();
public AdoS8OrderFlowProcurementPivotDto? ProcurementPivot { get; set; }
}
#endregion
#region 聚合 / Baseline
public class AdoS8OrderFlowAggregateQueryDto
{
public long? TenantId { get; set; }
public long? FactoryId { get; set; }
public string Scope { get; set; } = string.Empty;
public List? OrderCodes { get; set; }
}
public class AdoS8OrderFlowAggregateDto
{
public string Scope { get; set; } = string.Empty;
public int TotalOrders { get; set; }
public int TotalCustomers { get; set; }
public decimal AvgResponseMinutes { get; set; }
public decimal AvgProcessingMinutes { get; set; }
public decimal AvgLossMinutes { get; set; }
public List StageAggregates { get; set; } = new();
}
public class AdoS8OrderFlowStageAggregateDto
{
public string OrderFlowCode { get; set; } = string.Empty;
public string OrderFlowName { get; set; } = string.Empty;
public decimal KpiAvgDays { get; set; }
public decimal ActualAvgDays { get; set; }
/// 整数百分比(例如 59 / 96 / 85 / 89 / 96),不是 0.59 小数。
public int OnTimeRate { get; set; }
public int Green { get; set; }
public int Yellow { get; set; }
public int Red { get; set; }
public int Pending { get; set; }
}
#endregion
#region 采购透视
public class AdoS8OrderFlowProcurementPivotQueryDto
{
public long? TenantId { get; set; }
public long? FactoryId { get; set; }
public string Scope { get; set; } = string.Empty;
public List? OrderCodes { get; set; }
}
public class AdoS8OrderFlowProcurementPivotDto
{
public string Scope { get; set; } = string.Empty;
public List KeyMaterials { get; set; } = new();
public List SupplierBreakdown { get; set; } = new();
public List SpecBreakdown { get; set; } = new();
public Dictionary> MatrixByMaterial { get; set; } = new();
}
public class AdoS8OrderFlowKeyMaterialDto
{
public string MaterialCode { get; set; } = string.Empty;
public decimal AvgCycleDays { get; set; }
public string CycleStatus { get; set; } = string.Empty;
public int? ImpactCount { get; set; }
public decimal? KitRate { get; set; }
public string ResultStatus { get; set; } = string.Empty;
}
public class AdoS8OrderFlowSupplierBreakdownDto
{
public string MaterialCode { get; set; } = string.Empty;
public string SupplierCode { get; set; } = string.Empty;
public decimal AvgCycleDays { get; set; }
public string Status { get; set; } = string.Empty;
}
public class AdoS8OrderFlowSpecBreakdownDto
{
public string MaterialCode { get; set; } = string.Empty;
public string SpecCode { get; set; } = string.Empty;
public decimal AvgCycleDays { get; set; }
public string Status { get; set; } = string.Empty;
}
public class AdoS8OrderFlowProcurementMatrixRowDto
{
public string SupplierCode { get; set; } = string.Empty;
public Dictionary Cells { get; set; } = new();
}
public class AdoS8OrderFlowProcurementMatrixCellDto
{
public decimal CycleDays { get; set; }
public string Status { get; set; } = string.Empty;
}
#endregion
#region 关联异常
public class AdoS8OrderFlowRelatedExceptionQueryDto
{
public long? TenantId { get; set; }
public long? FactoryId { get; set; }
public string OrderCode { get; set; } = string.Empty;
public string? OrderFlowCode { get; set; }
}
#endregion