S8DashboardCellConfigSeedData.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. namespace Admin.NET.Plugin.AiDOP;
  2. /// <summary>
  3. /// S8 大屏卡片配置基线种子(灌入 ado_s8_dashboard_cell_config)。
  4. /// 全局基线:tenant_id=0 / factory_id=0;覆盖 4 个大屏的全部稳定锚点卡片。
  5. /// 依赖 S8ExceptionTypeSeedData:EXCEPTION_TYPE 绑定的 exception_type_code 必须先存在。
  6. /// </summary>
  7. [IncreSeed]
  8. public class S8DashboardCellConfigSeedData : ISqlSugarEntitySeedData<Entity.S8.AdoS8DashboardCellConfig>
  9. {
  10. public IEnumerable<Entity.S8.AdoS8DashboardCellConfig> HasData()
  11. {
  12. var ct = DateTime.Parse("2026-04-18 00:00:00");
  13. long seq = 1329908200001L;
  14. var list = new List<Entity.S8.AdoS8DashboardCellConfig>();
  15. // ── OVERVIEW 页面 ──
  16. // S1-S7 模块卡(7 张,CUSTOM 聚合)
  17. var overviewModules = new[] { "S1", "S2", "S3", "S4", "S5", "S6", "S7" };
  18. var sort = 100;
  19. foreach (var m in overviewModules)
  20. list.Add(Custom(seq++, "OVERVIEW", $"OVERVIEW_{m}", $"{m} 模块异常", "OPEN_COUNT", "LAST_24H", sort++, ct));
  21. // 部门效率聚合
  22. list.Add(Aggregate(seq++, "OVERVIEW", "OVERVIEW_BY_DEPT", "部门异常聚合", "ALL", "OPEN_COUNT", "LAST_24H", "OWNER", sort++, ct));
  23. // 类别异常卡(5 张,按场景聚合)
  24. var overviewCats = new[]
  25. {
  26. ("OVERVIEW_CAT_ORDER_REVIEW", "订单评审异常"),
  27. ("OVERVIEW_CAT_PRODUCT_DESIGN", "产品设计异常"),
  28. ("OVERVIEW_CAT_MATERIAL_PURCHASE","物料采购异常"),
  29. ("OVERVIEW_CAT_BODY_PRODUCTION", "主体生产异常"),
  30. ("OVERVIEW_CAT_FINAL_ASSEMBLY", "总装交付异常"),
  31. };
  32. foreach (var (code, title) in overviewCats)
  33. list.Add(Aggregate(seq++, "OVERVIEW", code, title, "ALL", "FREQUENCY", "LAST_7D", "OWNER", sort++, ct));
  34. // 整体响应效能 + 状态统计条(CUSTOM)
  35. list.Add(Custom(seq++, "OVERVIEW", "OVERVIEW_OVERALL_EFFICIENCY", "整体响应效能", "CLOSE_RATE", "LAST_7D", sort++, ct));
  36. list.Add(Custom(seq++, "OVERVIEW", "OVERVIEW_STATUS_BAR", "状态统计条", "OPEN_COUNT", "TODAY", sort++, ct));
  37. // ── DELIVERY 页面 ──
  38. sort = 100;
  39. list.Add(Custom(seq++, "DELIVERY", "DELIVERY_S1", "S1 订单模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  40. list.Add(Custom(seq++, "DELIVERY", "DELIVERY_S7", "S7 交付模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  41. // 异常类型卡(3 张,统计口径 OPEN_COUNT)
  42. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_ANOMALY_ORDER_CHANGE", "订单变更", "ORDER_CHANGE", "OPEN_COUNT", "LAST_24H", sort++, ct));
  43. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_ANOMALY_DELIVERY_DELAY", "交期延迟", "DELIVERY_DELAY", "OPEN_COUNT", "LAST_24H", sort++, ct));
  44. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_ANOMALY_STOCK_PENDING", "入库待发", "PENDING_SHIPMENT", "OPEN_COUNT", "LAST_24H", sort++, ct));
  45. // 异常多维分析卡(3 张:FREQUENCY / AVG_DURATION / CLOSE_RATE)
  46. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_CAT_ORDER_CHANGE", "订单变更多维分析", "ORDER_CHANGE", "FREQUENCY", "LAST_7D", sort++, ct));
  47. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_CAT_DELIVERY_DELAY", "交期延迟多维分析", "DELIVERY_DELAY", "AVG_DURATION", "LAST_7D", sort++, ct));
  48. list.Add(ExceptionType(seq++, "DELIVERY", "DELIVERY_CAT_STOCK_PENDING", "入库待发多维分析", "PENDING_SHIPMENT", "CLOSE_RATE", "LAST_7D", sort++, ct));
  49. list.Add(Custom(seq++, "DELIVERY", "DELIVERY_STATUS_BAR", "状态统计条", "OPEN_COUNT", "TODAY", sort++, ct));
  50. // ── PRODUCTION 页面 ──
  51. sort = 100;
  52. list.Add(Custom(seq++, "PRODUCTION", "PRODUCTION_S2", "S2 排产模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  53. list.Add(Custom(seq++, "PRODUCTION", "PRODUCTION_S6", "S6 生产模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  54. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_ANOMALY_EQUIPMENT_FAULT", "设备异常", "EQUIP_FAULT", "OPEN_COUNT", "LAST_24H", sort++, ct));
  55. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_ANOMALY_MATERIAL_FAULT", "物料异常", "MATERIAL_SHORTAGE", "OPEN_COUNT", "LAST_24H", sort++, ct));
  56. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_ANOMALY_QUALITY_FAULT", "质量异常", "QUALITY_DEFECT", "OPEN_COUNT", "LAST_24H", sort++, ct));
  57. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_CAT_EQUIPMENT_FAULT", "设备异常多维分析", "EQUIP_FAULT", "FREQUENCY", "LAST_7D", sort++, ct));
  58. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_CAT_MATERIAL_FAULT", "物料异常多维分析", "MATERIAL_SHORTAGE", "AVG_DURATION", "LAST_7D", sort++, ct));
  59. list.Add(ExceptionType(seq++, "PRODUCTION", "PRODUCTION_CAT_QUALITY_FAULT", "质量异常多维分析", "QUALITY_DEFECT", "CLOSE_RATE", "LAST_7D", sort++, ct));
  60. list.Add(Custom(seq++, "PRODUCTION", "PRODUCTION_STATUS_BAR", "状态统计条", "OPEN_COUNT", "TODAY", sort++, ct));
  61. // ── SUPPLY 页面 ──
  62. sort = 100;
  63. list.Add(Custom(seq++, "SUPPLY", "SUPPLY_S3", "S3 供应模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  64. list.Add(Custom(seq++, "SUPPLY", "SUPPLY_S4", "S4 入库模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  65. list.Add(Custom(seq++, "SUPPLY", "SUPPLY_S5", "S5 发料模块", "OPEN_COUNT", "LAST_24H", sort++, ct));
  66. // 供应域 7 类异常:类型卡 + 分析卡
  67. var supplyTypes = new[]
  68. {
  69. ("SUPPLIER_ETA_ISSUE", "SUPPLIER_REPLY_DELAY", "供应商回复交期异常"),
  70. ("SUPPLIER_SHIP_ISSUE", "SUPPLIER_SHIP_FAULT", "供应商发货异常"),
  71. ("WH_INBOUND_ISSUE", "WAREHOUSE_RECEIPT", "仓库收货异常"),
  72. ("IQC_ISSUE", "IQC_INSPECTION", "IQC 检验异常"),
  73. ("WH_PUTAWAY_ISSUE", "WAREHOUSE_SHELVING", "仓库上架入库异常"),
  74. ("WH_KIT_ISSUE", "WORK_ORDER_PREPARE", "仓库工单备料异常"),
  75. ("WH_ISSUE_OUT_ISSUE", "WORK_ORDER_ISSUE", "仓库工单发料异常"),
  76. };
  77. foreach (var (typeCode, anchor, title) in supplyTypes)
  78. list.Add(ExceptionType(seq++, "SUPPLY", $"SUPPLY_ANOMALY_{anchor}", title, typeCode, "OPEN_COUNT", "LAST_24H", sort++, ct));
  79. foreach (var (typeCode, anchor, title) in supplyTypes)
  80. list.Add(ExceptionType(seq++, "SUPPLY", $"SUPPLY_CAT_{anchor}", $"{title}多维分析", typeCode, "FREQUENCY", "LAST_7D", sort++, ct));
  81. list.Add(Custom(seq++, "SUPPLY", "SUPPLY_STATUS_BAR", "状态统计条", "OPEN_COUNT", "TODAY", sort++, ct));
  82. return list;
  83. }
  84. private static Entity.S8.AdoS8DashboardCellConfig Custom(
  85. long id, string pageCode, string cellCode, string cellTitle,
  86. string statMetric, string timeWindow, int sortNo, DateTime ct) =>
  87. new()
  88. {
  89. Id = id,
  90. TenantId = 0,
  91. FactoryId = 0,
  92. PageCode = pageCode,
  93. CellCode = cellCode,
  94. CellTitle = cellTitle,
  95. BindingType = "CUSTOM",
  96. ExceptionTypeCode = null,
  97. AggregateScope = null,
  98. StatMetric = statMetric,
  99. TimeWindow = timeWindow,
  100. FilterExpression = null,
  101. DeptGroupBy = "OWNER",
  102. Enabled = true,
  103. SortNo = sortNo,
  104. CreatedAt = ct,
  105. };
  106. private static Entity.S8.AdoS8DashboardCellConfig ExceptionType(
  107. long id, string pageCode, string cellCode, string cellTitle,
  108. string exceptionTypeCode, string statMetric, string timeWindow, int sortNo, DateTime ct) =>
  109. new()
  110. {
  111. Id = id,
  112. TenantId = 0,
  113. FactoryId = 0,
  114. PageCode = pageCode,
  115. CellCode = cellCode,
  116. CellTitle = cellTitle,
  117. BindingType = "EXCEPTION_TYPE",
  118. ExceptionTypeCode = exceptionTypeCode,
  119. AggregateScope = null,
  120. StatMetric = statMetric,
  121. TimeWindow = timeWindow,
  122. FilterExpression = null,
  123. DeptGroupBy = "OWNER",
  124. Enabled = true,
  125. SortNo = sortNo,
  126. CreatedAt = ct,
  127. };
  128. private static Entity.S8.AdoS8DashboardCellConfig Aggregate(
  129. long id, string pageCode, string cellCode, string cellTitle,
  130. string aggregateScope, string statMetric, string timeWindow, string deptGroupBy,
  131. int sortNo, DateTime ct) =>
  132. new()
  133. {
  134. Id = id,
  135. TenantId = 0,
  136. FactoryId = 0,
  137. PageCode = pageCode,
  138. CellCode = cellCode,
  139. CellTitle = cellTitle,
  140. BindingType = "AGGREGATE",
  141. ExceptionTypeCode = null,
  142. AggregateScope = aggregateScope,
  143. StatMetric = statMetric,
  144. TimeWindow = timeWindow,
  145. FilterExpression = null,
  146. DeptGroupBy = deptGroupBy,
  147. Enabled = true,
  148. SortNo = sortNo,
  149. CreatedAt = ct,
  150. };
  151. }