Files
bj_power/bj_power_mes/internal/eventbus/events.go
T
SunYF 450a094f0e feat: 装配线看板修正、统一密钥Hardman_2026、操作日志追溯、日志按天存储
Dashboard 移除 CNC/清洗机等不存在设备,改为纯装配线看板(扫码枪+拧紧枪+人工);JWT/内部token统一为 Hardman_2026 写入各 etc/*.yaml,MES 建表 DSN 改读 yaml;event_log 增加 workOrderNo/operator,BOM/备料/PLC下发/拧紧/扫码报工/半成品/AGV 全链路埋点,日志页支持工单号/操作人筛选;MES/WMS 日志按天存储(dailyWriter),WMS SetWriter 用 logx.NewWriter 适配
2026-08-28 09:22:19 +08:00

128 lines
3.6 KiB
Go

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