| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- namespace Admin.NET.Plugin.AiDOP.Entity.S8.OrderFlow;
- /// <summary>
- /// S8-ORDER-CHAIN-ASSEMBLY-DELIVERY-DATA-LINEAGE-AUDIT-1:
- /// S8 订单执行链路 FINAL_ASSEMBLY_DELIVERY 阶段「主门禁里程碑」表(baseline + 订单级 SEED)。
- ///
- /// order_id / order_code 允许为空:
- /// - NULL → baseline / PPT 级别基线行(scenario_code=BASELINE_PPT)
- /// - 非 NULL → 订单级行(scenario_code=ORDER_LEVEL)
- ///
- /// gate_code 取值:ASSEMBLY_COMPLETION / QUALITY_RELEASE / PACKAGING_COMPLETION / GOODS_HANDOVER / SHIPMENT_CONFIRMATION。
- /// planned_offset_days / actual_offset_days / variance_days 使用 decimal(6,3) 与本体生产同口径。
- ///
- /// 业务口径(拍板版本):
- /// - 门禁是阶段内里程碑而非串行工序:
- /// planned_offset_days 累计到 3.0(0.6/1.2/1.8/2.4/3.0),不是各自时长。
- /// - 订单级 actual_offset_days 按 scale=stage.actual_days/3.0 缩放,
- /// 最后一个门禁 SHIPMENT_CONFIRMATION 做尾差修正使 actual=stage.actual_days。
- /// - variance_days = actual_offset_days - planned_offset_days。
- /// - status 阈值:variance≤0 green / ≤0.3 yellow / 否则 red(seed 时一次固化,运行期不再重判)。
- ///
- /// SEED 落地路径:不通过 IncreSeed 自动写入,由 UpdateScripts SQL(1.0.153.sql)
- /// 的 DELETE+INSERT 落地(与 procurement / manufacturing 三表同模式)。
- /// </summary>
- [SugarTable("ado_s8_order_flow_final_assembly_gate", "S8 订单执行链路总装发货主门禁里程碑")]
- [SugarIndex("idx_order_flow_fa_gate_baseline", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(GateCode), OrderByType.Asc)]
- [SugarIndex("idx_order_flow_fa_gate_order", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(OrderCode), OrderByType.Asc)]
- [SugarIndex("idx_order_flow_fa_gate_scenario", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(ScenarioCode), OrderByType.Asc, nameof(IsDeleted), OrderByType.Asc)]
- public class AdoS8OrderFlowFinalAssemblyGate
- {
- [SugarColumn(ColumnName = "id", IsPrimaryKey = true, ColumnDataType = "bigint")]
- public long Id { get; set; }
- /// <summary>NULL = baseline 行;非 NULL = 订单级行。</summary>
- [SugarColumn(ColumnName = "order_id", ColumnDataType = "bigint", IsNullable = true)]
- public long? OrderId { get; set; }
- /// <summary>NULL = baseline 行;非 NULL = 订单业务键。</summary>
- [SugarColumn(ColumnName = "order_code", Length = 64, IsNullable = true)]
- public string? OrderCode { get; set; }
- /// <summary>门禁编码:ASSEMBLY_COMPLETION / QUALITY_RELEASE / PACKAGING_COMPLETION / GOODS_HANDOVER / SHIPMENT_CONFIRMATION。</summary>
- [SugarColumn(ColumnName = "gate_code", Length = 32)]
- public string GateCode { get; set; } = string.Empty;
- /// <summary>门禁名称:总装完工 / 质量放行 / 包装完成 / 成品交接 / 发运确认。</summary>
- [SugarColumn(ColumnName = "gate_name", Length = 32)]
- public string GateName { get; set; } = string.Empty;
- /// <summary>累计里程碑(天)。固定:0.6 / 1.2 / 1.8 / 2.4 / 3.0。decimal(6,3)。</summary>
- [SugarColumn(ColumnName = "planned_offset_days", DecimalDigits = 3, Length = 6)]
- public decimal PlannedOffsetDays { get; set; }
- /// <summary>累计实际里程碑(天)。pending 时为 NULL;末位门禁尾差修正 = stage.actual_days。decimal(6,3)。</summary>
- [SugarColumn(ColumnName = "actual_offset_days", DecimalDigits = 3, Length = 6, IsNullable = true)]
- public decimal? ActualOffsetDays { get; set; }
- /// <summary>偏差(天)= actual_offset_days - planned_offset_days。pending 时为 NULL。decimal(6,3)。</summary>
- [SugarColumn(ColumnName = "variance_days", DecimalDigits = 3, Length = 6, IsNullable = true)]
- public decimal? VarianceDays { get; set; }
- /// <summary>状态:green / yellow / red / pending。variance≤0 green / ≤0.3 yellow / 否则 red(seed 时固化)。</summary>
- [SugarColumn(ColumnName = "status", Length = 16)]
- public string Status { get; set; } = "green";
- /// <summary>影响订单数:order-level 行为 0 或 1(该门禁非 green 时为 1);baseline 行为聚合摘要(baseline 视图当前固定 0)。</summary>
- [SugarColumn(ColumnName = "impacted_order_count", ColumnDataType = "int", IsNullable = true)]
- public int? ImpactedOrderCount { get; set; }
- /// <summary>风险订单数:order-level 行为 0 或 1(该门禁 red 时为 1);baseline 行为聚合摘要(baseline 视图当前固定 0)。</summary>
- [SugarColumn(ColumnName = "risk_order_count", ColumnDataType = "int", IsNullable = true)]
- public int? RiskOrderCount { get; set; }
- /// <summary>主要风险类型码:稳定 sample(ASSEMBLY_DELAY / QUALITY_RELEASE_DELAY 等);status=green 或 baseline 行为 NULL。</summary>
- [SugarColumn(ColumnName = "top_risk_type", Length = 64, IsNullable = true)]
- public string? TopRiskType { get; set; }
- /// <summary>主要风险展示文本:与 top_risk_type 同源(总装节拍偏差 / 质量放行等待 等);status=green 或 baseline 行为 NULL。</summary>
- [SugarColumn(ColumnName = "top_risk_label", Length = 255, IsNullable = true)]
- public string? TopRiskLabel { get; set; }
- /// <summary>责任侧文案:总装线 / 质量·终检 / 包装线 / 成品库 / 发运协调。可空,前端 fallback fixture 字典。</summary>
- [SugarColumn(ColumnName = "owner_side_text", Length = 64, IsNullable = true)]
- public string? OwnerSideText { get; set; }
- /// <summary>排序号 10/20/30/40/50(与 5 门禁固定顺序对齐)。</summary>
- [SugarColumn(ColumnName = "sort_no", ColumnDataType = "int")]
- public int SortNo { get; set; }
- /// <summary>BASELINE_PPT / ORDER_LEVEL。</summary>
- [SugarColumn(ColumnName = "scenario_code", Length = 16)]
- public string ScenarioCode { get; set; } = "BASELINE_PPT";
- /// <summary>SEED / IMPORT / AGG。同 (order_code, gate_code) 上 IMPORT/AGG 优先于 SEED。</summary>
- [SugarColumn(ColumnName = "data_source", Length = 16)]
- public string DataSource { get; set; } = "SEED";
- [SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")]
- public long TenantId { get; set; }
- [SugarColumn(ColumnName = "factory_id", ColumnDataType = "bigint")]
- public long FactoryId { get; set; }
- [SugarColumn(ColumnName = "created_at")]
- public DateTime CreatedAt { get; set; } = DateTime.Now;
- [SugarColumn(ColumnName = "updated_at", IsNullable = true)]
- public DateTime? UpdatedAt { get; set; }
- [SugarColumn(ColumnName = "is_deleted", ColumnDataType = "boolean")]
- public bool IsDeleted { get; set; }
- }
|