|
|
@@ -23,6 +23,9 @@ public static class AidopMonitorDictionarySeed
|
|
|
/// <summary>CONFIG-MONITOR-SOURCE-TABLE-EXTEND-1:库存监控真实库表(5k+ 行 demo 数据)。</summary>
|
|
|
private const string InventoryStockSourceTable = "ic_item_stock";
|
|
|
|
|
|
+ /// <summary>CONFIG-MONITOR-DATA-EXTEND-2:工单生产真实表(mes_morder MES 制造订单)。</summary>
|
|
|
+ private const string WorkOrderProductionSourceTable = "mes_morder";
|
|
|
+
|
|
|
public static void EnsureSeed(ISqlSugarClient db)
|
|
|
{
|
|
|
try
|
|
|
@@ -34,7 +37,7 @@ public static class AidopMonitorDictionarySeed
|
|
|
EnsureObject(db, "ORDER_CHANGE", "ORDER", "订单变更", null, 20, ct);
|
|
|
EnsureObject(db, "PURCHASE_DELIVERY", "PURCHASE_ORDER", "供应商交付", null, 30, ct);
|
|
|
EnsureObject(db, "IQC_INSPECTION", "IQC", "IQC 检验", DemoSourceTable, 40, ct);
|
|
|
- EnsureObject(db, "WORK_ORDER_PRODUCTION", "WORK_ORDER", "生产工单", null, 50, ct);
|
|
|
+ EnsureObject(db, "WORK_ORDER_PRODUCTION", "WORK_ORDER", "生产工单", WorkOrderProductionSourceTable, 50, ct);
|
|
|
EnsureObject(db, "INVENTORY_STOCK", "INVENTORY", "库存", InventoryStockSourceTable, 60, ct);
|
|
|
|
|
|
// DATE 指标 enabled=true / is_result_kpi=false
|
|
|
@@ -45,8 +48,11 @@ public static class AidopMonitorDictionarySeed
|
|
|
sortNo: 110, ct: ct);
|
|
|
EnsureMetricDate(db, "PO_DUE_AT", "计划到货时间", "PURCHASE_DELIVERY",
|
|
|
"分钟", "due_at", "status", null, null, null, 310, ct);
|
|
|
+ // WO_DUE_AT 走 mes_morder:planner_end_date 计划完工日,morder_state 业务状态;Id/morder_no/moentry_prdname 真实列
|
|
|
EnsureMetricDate(db, "WO_DUE_AT", "计划完工时间", "WORK_ORDER_PRODUCTION",
|
|
|
- "分钟", "due_at", "status", null, null, null, 510, ct);
|
|
|
+ "分钟", "planner_end_date", "morder_state",
|
|
|
+ objectIdCol: "Id", objectCodeCol: "morder_no", objectNameCol: "moentry_prdname",
|
|
|
+ sortNo: 510, ct: ct);
|
|
|
|
|
|
// VALUE_RANGE 指标 enabled=true / is_result_kpi=false
|
|
|
// IQC_VALUE 走 demo_test_order:measured_size 是 demo 实际列;id/order_no 同上
|
|
|
@@ -136,7 +142,7 @@ public static class AidopMonitorDictionarySeed
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- BackfillMetricColumns(db, existing, objectIdCol, objectCodeCol, objectNameCol);
|
|
|
+ BackfillMetricColumns(db, existing, objectIdCol, objectCodeCol, objectNameCol, dueAtCol: dueAtField, statusCol: statusField);
|
|
|
}
|
|
|
|
|
|
private static void EnsureMetricValueRange(ISqlSugarClient db, string metricCode, string metricName, string objectCode, string? unit, string measuredValueField, string? objectIdCol, string? objectCodeCol, string? objectNameCol, int sortNo, DateTime ct)
|
|
|
@@ -197,7 +203,7 @@ public static class AidopMonitorDictionarySeed
|
|
|
}
|
|
|
|
|
|
/// <summary>已存在指标行:仅在原值仍是默认 alias 占位时回填真实列名,避免覆盖运维改过的字段。</summary>
|
|
|
- private static void BackfillMetricColumns(ISqlSugarClient db, AdoS8MonitorMetric existing, string? objectIdCol, string? objectCodeCol, string? objectNameCol, string? measuredValueCol = null)
|
|
|
+ private static void BackfillMetricColumns(ISqlSugarClient db, AdoS8MonitorMetric existing, string? objectIdCol, string? objectCodeCol, string? objectNameCol, string? measuredValueCol = null, string? dueAtCol = null, string? statusCol = null)
|
|
|
{
|
|
|
var changed = false;
|
|
|
|
|
|
@@ -229,6 +235,22 @@ public static class AidopMonitorDictionarySeed
|
|
|
changed = true;
|
|
|
}
|
|
|
}
|
|
|
+ // due_at / status 是 DATE 指标的占位默认值;与 demo_test_order 真实列同名属于巧合。
|
|
|
+ // 仅当 existing 仍是占位 "due_at"/"status" 时才回填,避免覆盖运维改过的字段。
|
|
|
+ if (!string.IsNullOrWhiteSpace(dueAtCol)
|
|
|
+ && existing.DueAtField == "due_at"
|
|
|
+ && existing.DueAtField != dueAtCol)
|
|
|
+ {
|
|
|
+ existing.DueAtField = dueAtCol;
|
|
|
+ changed = true;
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrWhiteSpace(statusCol)
|
|
|
+ && existing.StatusField == "status"
|
|
|
+ && existing.StatusField != statusCol)
|
|
|
+ {
|
|
|
+ existing.StatusField = statusCol;
|
|
|
+ changed = true;
|
|
|
+ }
|
|
|
|
|
|
if (!changed) return;
|
|
|
|