464 lines
12 KiB
Go
464 lines
12 KiB
Go
package constants
|
|
|
|
import "sort"
|
|
|
|
// === 工件分类 ===
|
|
|
|
type WorkpieceCategory string
|
|
|
|
const (
|
|
WorkpieceCategory_AVM107 WorkpieceCategory = "A6VM107"
|
|
WorkpieceCategory_AVM160 WorkpieceCategory = "A6VM160"
|
|
WorkpieceCategory_AVM200 WorkpieceCategory = "A6VM200"
|
|
)
|
|
|
|
func (WorkpieceCategory) Values() []string {
|
|
return []string{
|
|
string(WorkpieceCategory_AVM107),
|
|
string(WorkpieceCategory_AVM160),
|
|
string(WorkpieceCategory_AVM200),
|
|
}
|
|
}
|
|
|
|
// MomDockMap MOM 接驳台 → 工件分类的硬编码映射
|
|
// - 接驳台 1-4 专用于 A6VM107
|
|
// - 接驳台 5-8 专用于 A6VM160
|
|
// - 接驳台 9-10 专用于 A6VM200
|
|
//
|
|
// 同 category 同时占用的接驳台数即额度(107=4 / 160=4 / 200=2)。
|
|
var MomDockMap = map[int]WorkpieceCategory{
|
|
1: WorkpieceCategory_AVM107,
|
|
2: WorkpieceCategory_AVM107,
|
|
3: WorkpieceCategory_AVM107,
|
|
4: WorkpieceCategory_AVM107,
|
|
5: WorkpieceCategory_AVM160,
|
|
6: WorkpieceCategory_AVM160,
|
|
7: WorkpieceCategory_AVM160,
|
|
8: WorkpieceCategory_AVM160,
|
|
9: WorkpieceCategory_AVM200,
|
|
10: WorkpieceCategory_AVM200,
|
|
}
|
|
|
|
// MomDocksByCategory 反查表:category → 该 category 专属接驳台号列表(按号码升序)
|
|
var MomDocksByCategory = func() map[WorkpieceCategory][]int {
|
|
out := map[WorkpieceCategory][]int{}
|
|
for dockNo, cat := range MomDockMap {
|
|
out[cat] = append(out[cat], dockNo)
|
|
}
|
|
for _, v := range out {
|
|
sort.Ints(v) // map 遍历无序 → 排序保证调度稳定
|
|
}
|
|
return out
|
|
}()
|
|
|
|
// === 设备类型编码 ===
|
|
|
|
type EquipmentTypeCode string
|
|
|
|
const (
|
|
EquipmentTypeCode_CNC EquipmentTypeCode = "CNC"
|
|
EquipmentTypeCode_WashingMachine EquipmentTypeCode = "WASHER_HP"
|
|
EquipmentTypeCode_Deburr EquipmentTypeCode = "DEBURR"
|
|
EquipmentTypeCode_CleaningLine EquipmentTypeCode = "CLEANING_LINE"
|
|
EquipmentTypeCode_Inspection EquipmentTypeCode = "INSPECTION"
|
|
EquipmentTypeCode_Sampling EquipmentTypeCode = "SAMPLING"
|
|
EquipmentTypeCode_Marking EquipmentTypeCode = "MARKING"
|
|
EquipmentTypeCode_TempStore EquipmentTypeCode = "TEMP_STORE"
|
|
EquipmentTypeCode_Robot EquipmentTypeCode = "ROBOT"
|
|
)
|
|
|
|
func (EquipmentTypeCode) Values() []string {
|
|
return []string{
|
|
string(EquipmentTypeCode_CNC),
|
|
string(EquipmentTypeCode_WashingMachine),
|
|
string(EquipmentTypeCode_Deburr),
|
|
string(EquipmentTypeCode_CleaningLine),
|
|
string(EquipmentTypeCode_Inspection),
|
|
string(EquipmentTypeCode_Sampling),
|
|
string(EquipmentTypeCode_Marking),
|
|
string(EquipmentTypeCode_TempStore),
|
|
string(EquipmentTypeCode_Robot),
|
|
}
|
|
}
|
|
|
|
// === 批处理模式 ===
|
|
|
|
type BatchMode string
|
|
|
|
const (
|
|
BatchMode_None BatchMode = "NONE"
|
|
BatchMode_FullBatch BatchMode = "FULL_BATCH"
|
|
)
|
|
|
|
func (BatchMode) Values() []string {
|
|
return []string{
|
|
string(BatchMode_None),
|
|
string(BatchMode_FullBatch),
|
|
}
|
|
}
|
|
|
|
// === 槽位状态 ===
|
|
|
|
type SlotStatus string
|
|
|
|
const (
|
|
SlotStatus_Empty SlotStatus = "EMPTY"
|
|
SlotStatus_Occupied SlotStatus = "OCCUPIED"
|
|
SlotStatus_Done SlotStatus = "DONE"
|
|
)
|
|
|
|
func (SlotStatus) Values() []string {
|
|
return []string{
|
|
string(SlotStatus_Empty),
|
|
string(SlotStatus_Occupied),
|
|
string(SlotStatus_Done),
|
|
}
|
|
}
|
|
|
|
// === 工序类型 ===
|
|
|
|
type StepType string
|
|
|
|
const (
|
|
StepType_Operation StepType = "OPERATION"
|
|
StepType_BufferStage StepType = "BUFFER_STAGE"
|
|
StepType_Decision StepType = "DECISION"
|
|
StepType_FinalScan StepType = "FINAL_SCAN"
|
|
StepType_Judge StepType = "JUDGE"
|
|
StepType_LaserMark StepType = "LASER_MARK"
|
|
StepType_UnloadDock StepType = "UNLOAD_DOCK"
|
|
)
|
|
|
|
func (StepType) Values() []string {
|
|
return []string{
|
|
string(StepType_Operation),
|
|
string(StepType_BufferStage),
|
|
string(StepType_Decision),
|
|
string(StepType_FinalScan),
|
|
string(StepType_Judge),
|
|
string(StepType_LaserMark),
|
|
string(StepType_UnloadDock),
|
|
}
|
|
}
|
|
|
|
// === 工件(Job)状态 ===
|
|
|
|
type JobStatus string
|
|
|
|
const (
|
|
JobStatus_Created JobStatus = "CREATED"
|
|
JobStatus_Processing JobStatus = "PROCESSING"
|
|
JobStatus_WaitingUnload JobStatus = "WAITING_UNLOAD"
|
|
JobStatus_OnBuffer JobStatus = "ON_BUFFER"
|
|
JobStatus_WaitingDecision JobStatus = "WAITING_DECISION"
|
|
JobStatus_Completed JobStatus = "COMPLETED"
|
|
JobStatus_Scrapped JobStatus = "SCRAPPED"
|
|
JobStatus_Suspended JobStatus = "SUSPENDED"
|
|
JobStatus_WaitingWaste JobStatus = "WAITING_WASTE"
|
|
JobStatus_Cancelled JobStatus = "CANCELLED"
|
|
)
|
|
|
|
func (JobStatus) Values() []string {
|
|
return []string{
|
|
string(JobStatus_Created),
|
|
string(JobStatus_Processing),
|
|
string(JobStatus_WaitingUnload),
|
|
string(JobStatus_OnBuffer),
|
|
string(JobStatus_WaitingDecision),
|
|
string(JobStatus_Completed),
|
|
string(JobStatus_Scrapped),
|
|
string(JobStatus_Suspended),
|
|
string(JobStatus_WaitingWaste),
|
|
string(JobStatus_Cancelled),
|
|
}
|
|
}
|
|
|
|
// === 质检结果(内窥镜/抽检共用) ===
|
|
|
|
type QCResult string
|
|
|
|
const (
|
|
QCResult_Pass QCResult = "PASS"
|
|
QCResult_Fail QCResult = "FAIL"
|
|
)
|
|
|
|
func (QCResult) Values() []string {
|
|
return []string{
|
|
string(QCResult_Pass),
|
|
string(QCResult_Fail),
|
|
}
|
|
}
|
|
|
|
// === 工单状态 ===
|
|
|
|
type WorkOrderStatus string
|
|
|
|
const (
|
|
WorkOrderStatus_Created WorkOrderStatus = "CREATED"
|
|
WorkOrderStatus_InProgress WorkOrderStatus = "IN_PROGRESS"
|
|
WorkOrderStatus_Pausing WorkOrderStatus = "PAUSING"
|
|
WorkOrderStatus_Cancelling WorkOrderStatus = "CANCELLING"
|
|
WorkOrderStatus_Paused WorkOrderStatus = "PAUSED"
|
|
WorkOrderStatus_Completed WorkOrderStatus = "COMPLETED"
|
|
WorkOrderStatus_Cancelled WorkOrderStatus = "CANCELLED"
|
|
WorkOrderStatus_Error WorkOrderStatus = "ERROR"
|
|
)
|
|
|
|
func (WorkOrderStatus) Values() []string {
|
|
return []string{
|
|
string(WorkOrderStatus_Created),
|
|
string(WorkOrderStatus_Pausing),
|
|
string(WorkOrderStatus_InProgress),
|
|
string(WorkOrderStatus_Cancelling),
|
|
string(WorkOrderStatus_Paused),
|
|
string(WorkOrderStatus_Completed),
|
|
string(WorkOrderStatus_Cancelled),
|
|
string(WorkOrderStatus_Error),
|
|
}
|
|
}
|
|
|
|
// === 设备状态 ===
|
|
|
|
type EquipmentStatus string
|
|
|
|
const (
|
|
EquipmentStatus_Idle EquipmentStatus = "IDLE"
|
|
EquipmentStatus_Loading EquipmentStatus = "LOADING"
|
|
EquipmentStatus_Processing EquipmentStatus = "PROCESSING"
|
|
EquipmentStatus_Unloading EquipmentStatus = "UNLOADING"
|
|
EquipmentStatus_Fault EquipmentStatus = "FAULT"
|
|
EquipmentStatus_Offline EquipmentStatus = "OFFLINE"
|
|
)
|
|
|
|
func (EquipmentStatus) Values() []string {
|
|
return []string{
|
|
string(EquipmentStatus_Idle),
|
|
string(EquipmentStatus_Loading),
|
|
string(EquipmentStatus_Processing),
|
|
string(EquipmentStatus_Unloading),
|
|
string(EquipmentStatus_Fault),
|
|
string(EquipmentStatus_Offline),
|
|
}
|
|
}
|
|
|
|
// === 位置类型 ===
|
|
|
|
type PositionType string
|
|
|
|
const (
|
|
PositionType_OnEquipment PositionType = "ON_EQUIPMENT"
|
|
PositionType_OnBuffer PositionType = "ON_BUFFER"
|
|
PositionType_OnDock PositionType = "ON_DOCK"
|
|
)
|
|
|
|
func (PositionType) Values() []string {
|
|
return []string{
|
|
string(PositionType_OnEquipment),
|
|
string(PositionType_OnBuffer),
|
|
string(PositionType_OnDock),
|
|
}
|
|
}
|
|
|
|
// === 手持工具类型 ===
|
|
|
|
type ToolType string
|
|
|
|
const (
|
|
ToolType_Scanner ToolType = "SCANNER"
|
|
ToolType_Laser ToolType = "LASER"
|
|
)
|
|
|
|
func (ToolType) Values() []string {
|
|
return []string{
|
|
string(ToolType_Scanner),
|
|
string(ToolType_Laser),
|
|
}
|
|
}
|
|
|
|
// === 任务状态 ===
|
|
|
|
type TaskStatus string
|
|
|
|
const (
|
|
TaskStatus_Created TaskStatus = "CREATED"
|
|
TaskStatus_Dispatched TaskStatus = "DISPATCHED"
|
|
TaskStatus_Running TaskStatus = "RUNNING"
|
|
TaskStatus_Success TaskStatus = "SUCCESS"
|
|
TaskStatus_Failed TaskStatus = "FAILED"
|
|
TaskStatus_Timeout TaskStatus = "TIMEOUT"
|
|
)
|
|
|
|
func (TaskStatus) Values() []string {
|
|
return []string{
|
|
string(TaskStatus_Created),
|
|
string(TaskStatus_Dispatched),
|
|
string(TaskStatus_Running),
|
|
string(TaskStatus_Success),
|
|
string(TaskStatus_Failed),
|
|
string(TaskStatus_Timeout),
|
|
}
|
|
}
|
|
|
|
// === 工站状态 ===
|
|
|
|
type StationStatus string
|
|
|
|
const (
|
|
StationStatus_Idle StationStatus = "IDLE"
|
|
StationStatus_Busy StationStatus = "BUSY"
|
|
StationStatus_Waiting StationStatus = "WAITING"
|
|
StationStatus_Fault StationStatus = "FAULT"
|
|
StationStatus_Offline StationStatus = "OFFLINE"
|
|
|
|
// 兼容旧命名
|
|
StationStatus_Processing = StationStatus_Busy
|
|
StationStatus_Done = StationStatus_Waiting
|
|
StationStatus_Error = StationStatus_Fault
|
|
)
|
|
|
|
func (StationStatus) Values() []string {
|
|
return []string{
|
|
string(StationStatus_Idle),
|
|
string(StationStatus_Busy),
|
|
string(StationStatus_Waiting),
|
|
string(StationStatus_Fault),
|
|
string(StationStatus_Offline),
|
|
}
|
|
}
|
|
|
|
// === 报警等级 ===
|
|
|
|
type AlarmLevel string
|
|
|
|
const (
|
|
AlarmLevel_INFO AlarmLevel = "INFO"
|
|
AlarmLevel_WARN AlarmLevel = "WARN"
|
|
AlarmLevel_ERROR AlarmLevel = "ERROR"
|
|
AlarmLevel_CRITICAL AlarmLevel = "CRITICAL"
|
|
)
|
|
|
|
func (AlarmLevel) Values() []string {
|
|
return []string{
|
|
string(AlarmLevel_INFO),
|
|
string(AlarmLevel_WARN),
|
|
string(AlarmLevel_ERROR),
|
|
string(AlarmLevel_CRITICAL),
|
|
}
|
|
}
|
|
|
|
// === 报警状态 ===
|
|
|
|
type AlarmStatus string
|
|
|
|
const (
|
|
AlarmStatus_ACTIVE AlarmStatus = "ACTIVE"
|
|
AlarmStatus_ACKED AlarmStatus = "ACKED"
|
|
AlarmStatus_CLEARED AlarmStatus = "CLEARED"
|
|
)
|
|
|
|
func (AlarmStatus) Values() []string {
|
|
return []string{
|
|
string(AlarmStatus_ACTIVE),
|
|
string(AlarmStatus_ACKED),
|
|
string(AlarmStatus_CLEARED),
|
|
}
|
|
}
|
|
|
|
// === 人工交互类型 ===
|
|
|
|
type ManualActionType string
|
|
|
|
const (
|
|
ManualActionType_ScanFailed ManualActionType = "SCAN_FAILED"
|
|
ManualActionType_RecoveryRequired ManualActionType = "RECOVERY_REQUIRED"
|
|
ManualActionType_InspectionDecision ManualActionType = "INSPECTION_DECISION"
|
|
ManualActionType_FaultConfirm ManualActionType = "FAULT_CONFIRM"
|
|
)
|
|
|
|
func (ManualActionType) Values() []string {
|
|
return []string{
|
|
string(ManualActionType_ScanFailed),
|
|
string(ManualActionType_RecoveryRequired),
|
|
string(ManualActionType_InspectionDecision),
|
|
string(ManualActionType_FaultConfirm),
|
|
}
|
|
}
|
|
|
|
// === 人工交互状态 ===
|
|
|
|
type ManualActionStatus string
|
|
|
|
const (
|
|
ManualActionStatus_PENDING ManualActionStatus = "PENDING"
|
|
ManualActionStatus_RESOLVED ManualActionStatus = "RESOLVED"
|
|
ManualActionStatus_EXPIRED ManualActionStatus = "EXPIRED"
|
|
)
|
|
|
|
func (ManualActionStatus) Values() []string {
|
|
return []string{
|
|
string(ManualActionStatus_PENDING),
|
|
string(ManualActionStatus_RESOLVED),
|
|
string(ManualActionStatus_EXPIRED),
|
|
}
|
|
}
|
|
|
|
// === 恢复决策 ===
|
|
|
|
type RecoveryDecision string
|
|
|
|
const (
|
|
RecoveryDecision_RESUME RecoveryDecision = "RESUME"
|
|
RecoveryDecision_WAIT_UNLOAD RecoveryDecision = "WAIT_UNLOAD"
|
|
RecoveryDecision_SUSPEND RecoveryDecision = "SUSPEND"
|
|
RecoveryDecision_SCRAP RecoveryDecision = "SCRAP"
|
|
)
|
|
|
|
func (RecoveryDecision) Values() []string {
|
|
return []string{
|
|
string(RecoveryDecision_RESUME),
|
|
string(RecoveryDecision_WAIT_UNLOAD),
|
|
string(RecoveryDecision_SUSPEND),
|
|
string(RecoveryDecision_SCRAP),
|
|
}
|
|
}
|
|
|
|
// === 托盘状态 ===
|
|
|
|
type PalletStatus string
|
|
|
|
const (
|
|
PalletStatus_PendingDelivery PalletStatus = "PENDING_DELIVERY"
|
|
PalletStatus_PendingProcess PalletStatus = "PENDING_PROCESS"
|
|
PalletStatus_Processing PalletStatus = "PROCESSING"
|
|
PalletStatus_Completed PalletStatus = "COMPLETED"
|
|
PalletStatus_Reported PalletStatus = "REPORTED"
|
|
PalletStatus_Departed PalletStatus = "DEPARTED"
|
|
)
|
|
|
|
func (PalletStatus) Values() []string {
|
|
return []string{
|
|
string(PalletStatus_PendingDelivery),
|
|
string(PalletStatus_PendingProcess),
|
|
string(PalletStatus_Processing),
|
|
string(PalletStatus_Completed),
|
|
string(PalletStatus_Reported),
|
|
string(PalletStatus_Departed),
|
|
}
|
|
}
|
|
|
|
// === 工单来源 ===
|
|
|
|
type WorkOrderSource string
|
|
|
|
const (
|
|
WorkOrderSource_SYSTEM WorkOrderSource = "SYSTEM"
|
|
WorkOrderSource_MOM WorkOrderSource = "MOM"
|
|
)
|
|
|
|
func (WorkOrderSource) Values() []string {
|
|
return []string{
|
|
string(WorkOrderSource_SYSTEM),
|
|
string(WorkOrderSource_MOM),
|
|
}
|
|
}
|