package eventbus import ( "fmt" "strconv" "strings" "time" ) // 事件构造辅助函数 // NewProductionEvent 构建装配线操作日志事件(payload 内可含 // workOrderNo/orderNo、workpieceNo/sn、operator、stepCode 等键,写入事件日志表) func NewProductionEvent(eventType EventType, description string, payload map[string]any) Event { if payload == nil { payload = map[string]any{} } payload["description"] = description return Event{ ID: fmt.Sprintf("%s-%d", strings.ToLower(string(eventType)), time.Now().UnixNano()), Type: eventType, Source: "production", Timestamp: time.Now(), Payload: payload, } } // NewTempSlotChangedEvent 构建暂存台槽位变更事件 func NewTempSlotChangedEvent(slotNo, jobID int, action string) Event { return Event{ ID: fmt.Sprintf("tsc-%d-%d", slotNo, time.Now().UnixNano()), Type: EventTempSlotChanged, Source: "processor", EntityType: string(EntityTempSlot), EntityID: strconv.Itoa(slotNo), Timestamp: time.Now(), Payload: map[string]any{ "slotNo": slotNo, "jobId": jobID, "action": action, }, } } // NewAlarmRaisedEvent 构建报警触发事件 func NewAlarmRaisedEvent(alarmID int, alarmCode string, level string, equipmentID int, source string) Event { return Event{ ID: fmt.Sprintf("alarm-%d-%d", alarmID, time.Now().UnixNano()), Type: EventAlarmRaised, Source: source, EntityType: "alarm", EntityID: strconv.Itoa(alarmID), Timestamp: time.Now(), Payload: map[string]any{ "alarmId": alarmID, "alarmCode": alarmCode, "level": level, "equipmentId": equipmentID, }, } } // NewAlarmAckedEvent 构建报警确认事件 func NewAlarmAckedEvent(alarmID int) Event { return Event{ ID: fmt.Sprintf("alarm-ack-%d-%d", alarmID, time.Now().UnixNano()), Type: EventAlarmAcked, Source: "api", EntityType: "alarm", EntityID: strconv.Itoa(alarmID), Timestamp: time.Now(), Payload: map[string]any{ "alarmId": alarmID, }, } } // NewEquipmentAvailabilityChangedEvent 构建设备可用状态变更事件 func NewEquipmentAvailabilityChangedEvent(equipmentID int, equipmentName string, enabled bool) Event { return Event{ ID: fmt.Sprintf("equipment-availability-%d-%d", equipmentID, time.Now().UnixNano()), Type: EventEquipmentAvailabilityChanged, Source: "api", EntityType: "equipment", EntityID: strconv.Itoa(equipmentID), Timestamp: time.Now(), Payload: map[string]any{ "equipmentId": equipmentID, "equipmentName": equipmentName, "enabled": enabled, }, } } // NewManualActionCreatedEvent 构建人工交互创建事件 func NewManualActionCreatedEvent(actionID int, actionType string, orderID int) Event { return Event{ ID: fmt.Sprintf("ma-%d-%d", actionID, time.Now().UnixNano()), Type: EventManualActionCreated, Source: "processor", EntityType: "manual_action", EntityID: strconv.Itoa(actionID), Timestamp: time.Now(), Payload: map[string]any{ "actionId": actionID, "actionType": actionType, "orderId": orderID, }, } } // NewManualActionResolvedEvent 构建人工交互解决事件 func NewManualActionResolvedEvent(actionID int, actionType string, resolvedAction string) Event { return Event{ ID: fmt.Sprintf("ma-resolve-%d-%d", actionID, time.Now().UnixNano()), Type: EventManualActionResolved, Source: "api", EntityType: "manual_action", EntityID: strconv.Itoa(actionID), Timestamp: time.Now(), Payload: map[string]any{ "actionId": actionID, "actionType": actionType, "resolvedAction": resolvedAction, }, } }