Files
bj_power/bj_power_mes/internal/eventbus/events.go
T

128 lines
3.6 KiB
Go
Raw Normal View History

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,
},
}
}