AidopDimensionSeed.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Diagnostics;
  2. using Admin.NET.Plugin.AiDOP.Entity.S8;
  3. using SqlSugar;
  4. namespace Admin.NET.Plugin.AiDOP.Infrastructure;
  5. /// <summary>
  6. /// S8 业务维度元数据基线种子(S_STAGE / ORDER_FLOW)。
  7. /// 幂等:按 dimension_code / (dimension_code, node_code) 逐条 Any() 判断后插入;
  8. /// 不删除任何已有数据,不修改 scene_tree / scene_config。
  9. /// </summary>
  10. public static class AidopDimensionSeed
  11. {
  12. public static void EnsureSeed(ISqlSugarClient db)
  13. {
  14. try
  15. {
  16. var ct = DateTime.Parse("2026-05-07 00:00:00");
  17. EnsureDimension(db, "S_STAGE", "S1-S7 阶段维度", 10, ct);
  18. EnsureDimension(db, "ORDER_FLOW", "订单全流程维度", 20, ct);
  19. // S_STAGE 节点(顶层叶节点,is_selectable=true)
  20. EnsureNode(db, "S_STAGE", "S1", "S1 产销协同", "/S_STAGE/S1", 10, ct);
  21. EnsureNode(db, "S_STAGE", "S2", "S2 生产准备", "/S_STAGE/S2", 20, ct);
  22. EnsureNode(db, "S_STAGE", "S3", "S3 供应协同", "/S_STAGE/S3", 30, ct);
  23. EnsureNode(db, "S_STAGE", "S4", "S4 质量检验", "/S_STAGE/S4", 40, ct);
  24. EnsureNode(db, "S_STAGE", "S5", "S5 仓储供应", "/S_STAGE/S5", 50, ct);
  25. EnsureNode(db, "S_STAGE", "S6", "S6 本体生产", "/S_STAGE/S6", 60, ct);
  26. EnsureNode(db, "S_STAGE", "S7", "S7 总装发货", "/S_STAGE/S7", 70, ct);
  27. // ORDER_FLOW 节点(顶层叶节点,is_selectable=true)
  28. EnsureNode(db, "ORDER_FLOW", "ORDER_REVIEW_PLAN_CALC", "评审/排产/测算", "/ORDER_FLOW/ORDER_REVIEW_PLAN_CALC", 10, ct);
  29. EnsureNode(db, "ORDER_FLOW", "PRODUCT_DESIGN", "产品设计", "/ORDER_FLOW/PRODUCT_DESIGN", 20, ct);
  30. EnsureNode(db, "ORDER_FLOW", "MATERIAL_PURCHASE", "材料采购", "/ORDER_FLOW/MATERIAL_PURCHASE", 30, ct);
  31. EnsureNode(db, "ORDER_FLOW", "BODY_PRODUCTION", "本体生产", "/ORDER_FLOW/BODY_PRODUCTION", 40, ct);
  32. EnsureNode(db, "ORDER_FLOW", "FINAL_ASSEMBLY_DELIVERY", "总装发货", "/ORDER_FLOW/FINAL_ASSEMBLY_DELIVERY", 50, ct);
  33. }
  34. catch (Exception ex)
  35. {
  36. Trace.TraceWarning("AidopDimensionSeed: " + ex);
  37. }
  38. }
  39. private static void EnsureDimension(ISqlSugarClient db, string code, string name, int sortNo, DateTime ct)
  40. {
  41. var exists = db.Queryable<AdoS8Dimension>()
  42. .Any(x => x.TenantId == 0 && x.FactoryId == 0 && x.DimensionCode == code);
  43. if (exists) return;
  44. db.Insertable(new AdoS8Dimension
  45. {
  46. TenantId = 0,
  47. FactoryId = 0,
  48. DimensionCode = code,
  49. DimensionName = name,
  50. Enabled = true,
  51. SortNo = sortNo,
  52. CreatedAt = ct,
  53. }).ExecuteCommand();
  54. }
  55. private static void EnsureNode(ISqlSugarClient db, string dimensionCode, string nodeCode, string nodeName, string path, int sortNo, DateTime ct)
  56. {
  57. var exists = db.Queryable<AdoS8DimensionNode>()
  58. .Any(x => x.TenantId == 0 && x.FactoryId == 0
  59. && x.DimensionCode == dimensionCode && x.NodeCode == nodeCode);
  60. if (exists) return;
  61. db.Insertable(new AdoS8DimensionNode
  62. {
  63. TenantId = 0,
  64. FactoryId = 0,
  65. DimensionCode = dimensionCode,
  66. NodeCode = nodeCode,
  67. NodeName = nodeName,
  68. ParentId = null,
  69. Level = 1,
  70. Path = path,
  71. IsSelectable = true,
  72. Enabled = true,
  73. SortNo = sortNo,
  74. CreatedAt = ct,
  75. }).ExecuteCommand();
  76. }
  77. }