| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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();
- }
- }
|