|
|
@@ -0,0 +1,86 @@
|
|
|
+using System.Diagnostics;
|
|
|
+using Admin.NET.Plugin.AiDOP.Entity.S8;
|
|
|
+using SqlSugar;
|
|
|
+
|
|
|
+namespace Admin.NET.Plugin.AiDOP.Infrastructure;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// S8 业务维度元数据基线种子(S_STAGE / ORDER_FLOW)。
|
|
|
+/// 幂等:按 dimension_code / (dimension_code, node_code) 逐条 Any() 判断后插入;
|
|
|
+/// 不删除任何已有数据,不修改 scene_tree / scene_config。
|
|
|
+/// </summary>
|
|
|
+public static class AidopDimensionSeed
|
|
|
+{
|
|
|
+ public static void EnsureSeed(ISqlSugarClient db)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var ct = DateTime.Parse("2026-05-07 00:00:00");
|
|
|
+
|
|
|
+ EnsureDimension(db, "S_STAGE", "S1-S7 阶段维度", 10, ct);
|
|
|
+ EnsureDimension(db, "ORDER_FLOW", "订单全流程维度", 20, ct);
|
|
|
+
|
|
|
+ // S_STAGE 节点(顶层叶节点,is_selectable=true)
|
|
|
+ EnsureNode(db, "S_STAGE", "S1", "S1 产销协同", "/S_STAGE/S1", 10, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S2", "S2 生产准备", "/S_STAGE/S2", 20, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S3", "S3 供应协同", "/S_STAGE/S3", 30, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S4", "S4 质量检验", "/S_STAGE/S4", 40, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S5", "S5 仓储供应", "/S_STAGE/S5", 50, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S6", "S6 本体生产", "/S_STAGE/S6", 60, ct);
|
|
|
+ EnsureNode(db, "S_STAGE", "S7", "S7 总装发货", "/S_STAGE/S7", 70, ct);
|
|
|
+
|
|
|
+ // ORDER_FLOW 节点(顶层叶节点,is_selectable=true)
|
|
|
+ EnsureNode(db, "ORDER_FLOW", "ORDER_REVIEW_PLAN_CALC", "评审/排产/测算", "/ORDER_FLOW/ORDER_REVIEW_PLAN_CALC", 10, ct);
|
|
|
+ EnsureNode(db, "ORDER_FLOW", "PRODUCT_DESIGN", "产品设计", "/ORDER_FLOW/PRODUCT_DESIGN", 20, ct);
|
|
|
+ EnsureNode(db, "ORDER_FLOW", "MATERIAL_PURCHASE", "材料采购", "/ORDER_FLOW/MATERIAL_PURCHASE", 30, ct);
|
|
|
+ EnsureNode(db, "ORDER_FLOW", "BODY_PRODUCTION", "本体生产", "/ORDER_FLOW/BODY_PRODUCTION", 40, ct);
|
|
|
+ EnsureNode(db, "ORDER_FLOW", "FINAL_ASSEMBLY_DELIVERY", "总装发货", "/ORDER_FLOW/FINAL_ASSEMBLY_DELIVERY", 50, ct);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Trace.TraceWarning("AidopDimensionSeed: " + ex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void EnsureDimension(ISqlSugarClient db, string code, string name, int sortNo, DateTime ct)
|
|
|
+ {
|
|
|
+ var exists = db.Queryable<AdoS8Dimension>()
|
|
|
+ .Any(x => x.TenantId == 0 && x.FactoryId == 0 && x.DimensionCode == code);
|
|
|
+ if (exists) return;
|
|
|
+
|
|
|
+ db.Insertable(new AdoS8Dimension
|
|
|
+ {
|
|
|
+ TenantId = 0,
|
|
|
+ FactoryId = 0,
|
|
|
+ DimensionCode = code,
|
|
|
+ DimensionName = name,
|
|
|
+ Enabled = true,
|
|
|
+ SortNo = sortNo,
|
|
|
+ CreatedAt = ct,
|
|
|
+ }).ExecuteCommand();
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void EnsureNode(ISqlSugarClient db, string dimensionCode, string nodeCode, string nodeName, string path, int sortNo, DateTime ct)
|
|
|
+ {
|
|
|
+ var exists = db.Queryable<AdoS8DimensionNode>()
|
|
|
+ .Any(x => x.TenantId == 0 && x.FactoryId == 0
|
|
|
+ && x.DimensionCode == dimensionCode && x.NodeCode == nodeCode);
|
|
|
+ if (exists) return;
|
|
|
+
|
|
|
+ db.Insertable(new AdoS8DimensionNode
|
|
|
+ {
|
|
|
+ TenantId = 0,
|
|
|
+ FactoryId = 0,
|
|
|
+ DimensionCode = dimensionCode,
|
|
|
+ NodeCode = nodeCode,
|
|
|
+ NodeName = nodeName,
|
|
|
+ ParentId = null,
|
|
|
+ Level = 1,
|
|
|
+ Path = path,
|
|
|
+ IsSelectable = true,
|
|
|
+ Enabled = true,
|
|
|
+ SortNo = sortNo,
|
|
|
+ CreatedAt = ct,
|
|
|
+ }).ExecuteCommand();
|
|
|
+ }
|
|
|
+}
|