AdoS8OrderFlowSubstepUnit.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. namespace Admin.NET.Plugin.AiDOP.Entity.S8.OrderFlow;
  2. /// <summary>
  3. /// ORDER-FLOW-S8-INTEGRATED-DOMAIN-RESET-1 t1b:S8 订单执行链路 L3 责任单元。
  4. /// 首版用于 OPINION_REVIEW 子节点下的四方责任单元(法律事务部 / 技术售前组 /
  5. /// 综合主计划 / 试验站)。order_id / order_code / order_flow_code / substep_code
  6. /// 全部冗余保留,便于跨层聚合而免去多次 join。
  7. /// </summary>
  8. [SugarTable("ado_s8_order_flow_substep_unit", "S8 订单执行链路 L3 责任单元")]
  9. [SugarIndex("uk_order_flow_substep_unit", nameof(SubstepId), OrderByType.Asc, nameof(UnitCode), OrderByType.Asc, IsUnique = true)]
  10. [SugarIndex("idx_order_flow_substep_unit_order_code", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(OrderCode), OrderByType.Asc)]
  11. [SugarIndex("idx_order_flow_substep_unit_substep", nameof(TenantId), OrderByType.Asc, nameof(FactoryId), OrderByType.Asc, nameof(SubstepCode), OrderByType.Asc)]
  12. public class AdoS8OrderFlowSubstepUnit
  13. {
  14. [SugarColumn(ColumnName = "id", IsPrimaryKey = true, ColumnDataType = "bigint")]
  15. public long Id { get; set; }
  16. /// <summary>外键 → ado_s8_order_flow_substep.id。</summary>
  17. [SugarColumn(ColumnName = "substep_id", ColumnDataType = "bigint")]
  18. public long SubstepId { get; set; }
  19. /// <summary>冗余 order_id,便于按订单维度聚合。</summary>
  20. [SugarColumn(ColumnName = "order_id", ColumnDataType = "bigint")]
  21. public long OrderId { get; set; }
  22. [SugarColumn(ColumnName = "order_code", Length = 64)]
  23. public string OrderCode { get; set; } = string.Empty;
  24. /// <summary>冗余 UPPER ORDER_FLOW node_code,首版主要为 ORDER_REVIEW_PLAN_CALC。</summary>
  25. [SugarColumn(ColumnName = "order_flow_code", Length = 64)]
  26. public string OrderFlowCode { get; set; } = string.Empty;
  27. /// <summary>冗余 L2 子节点编码,首版主要为 OPINION_REVIEW。</summary>
  28. [SugarColumn(ColumnName = "substep_code", Length = 32)]
  29. public string SubstepCode { get; set; } = string.Empty;
  30. /// <summary>L3 责任单元编码:LEGAL / TECH_PRESALE / GENERAL_PLAN / LAB。</summary>
  31. [SugarColumn(ColumnName = "unit_code", Length = 32)]
  32. public string UnitCode { get; set; } = string.Empty;
  33. [SugarColumn(ColumnName = "unit_name", Length = 32)]
  34. public string UnitName { get; set; } = string.Empty;
  35. [SugarColumn(ColumnName = "pi_hours", DecimalDigits = 1, Length = 6)]
  36. public decimal PiHours { get; set; }
  37. [SugarColumn(ColumnName = "actual_hours", DecimalDigits = 1, Length = 6, IsNullable = true)]
  38. public decimal? ActualHours { get; set; }
  39. /// <summary>green / yellow / red / pending。</summary>
  40. [SugarColumn(ColumnName = "status", Length = 16)]
  41. public string Status { get; set; } = "pending";
  42. [SugarColumn(ColumnName = "sort_no")]
  43. public int SortNo { get; set; }
  44. [SugarColumn(ColumnName = "scenario_code", Length = 16)]
  45. public string ScenarioCode { get; set; } = "DEMO";
  46. [SugarColumn(ColumnName = "data_source", Length = 16)]
  47. public string DataSource { get; set; } = "SEED";
  48. [SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")]
  49. public long TenantId { get; set; }
  50. [SugarColumn(ColumnName = "factory_id", ColumnDataType = "bigint")]
  51. public long FactoryId { get; set; }
  52. [SugarColumn(ColumnName = "created_at")]
  53. public DateTime CreatedAt { get; set; } = DateTime.Now;
  54. [SugarColumn(ColumnName = "updated_at", IsNullable = true)]
  55. public DateTime? UpdatedAt { get; set; }
  56. [SugarColumn(ColumnName = "is_deleted", ColumnDataType = "boolean")]
  57. public bool IsDeleted { get; set; }
  58. }