93 lines
4.4 KiB
Go
93 lines
4.4 KiB
Go
package schema
|
||
|
||
import (
|
||
"time"
|
||
|
||
"bj_power_mes/constants"
|
||
|
||
"entgo.io/ent"
|
||
"entgo.io/ent/dialect"
|
||
"entgo.io/ent/dialect/entsql"
|
||
"entgo.io/ent/schema"
|
||
"entgo.io/ent/schema/edge"
|
||
"entgo.io/ent/schema/field"
|
||
"entgo.io/ent/schema/index"
|
||
)
|
||
|
||
// Job 工件,工å�•ä¸‹ç‹¬ç«‹åŠ å·¥çš„æœ€å°�å�•元,贯穿整个工艺路线
|
||
//
|
||
// å—æ®µè¯´æ˜Žï¼?
|
||
// - dockEquipmentID/dockSlotNo: 接驳�设备ID�槽�,工件入线/出线�置
|
||
// - tempSlotNo: 缓å˜å�°æ§½ä½�å�·ï¼Œå·¥ä»¶åœ¨ç¼“å˜åŒºä¸çš„ä½�ç½?
|
||
// - cncStartedAt/cncCompletedAt: åŠ å·¥è®¡æ—¶å—æ®µï¼Œè®°å½•è®¾å¤‡åŠ å·¥èµ·æ¢æ—¶åˆ»ï¼ˆç£¨åºŠ/转å�°ç‰ï¼‰
|
||
type Job struct {
|
||
ent.Schema
|
||
}
|
||
|
||
func (Job) Annotations() []schema.Annotation {
|
||
return []schema.Annotation{
|
||
entsql.Annotation{
|
||
Table: "job",
|
||
Options: "COMMENT='工件è¡? å·¥å�•ä¸‹ç‹¬ç«‹åŠ å·¥çš„æœ€å°�å�•元,记录工件完整生命周期:状æ€�ã€�ä½�ç½®ã€�æ¥éª¤ã€�事件版æœ?",
|
||
},
|
||
entsql.WithComments(true),
|
||
}
|
||
}
|
||
|
||
func (Job) Fields() []ent.Field {
|
||
return []ent.Field{
|
||
field.Int("id").Positive().Comment("主键ID"),
|
||
field.Int("workOrderId").Comment("所属工�ID"),
|
||
field.Int("productTypeId").Comment("产�类型ID,决定工艺路�),
|
||
field.Int("recipeId").Comment("工艺路线ID,当�工件使用的�方"),
|
||
field.String("currentStepId").MaxLen(20).Default("").Comment("当å‰�åŠ å·¥æ¥éª¤ä¸šåŠ¡ID,如 OP10/OP20/OP90"),
|
||
field.Enum("status").
|
||
GoType(constants.JobStatus("")).
|
||
Default(string(constants.JobStatus_Created)).
|
||
Comment("工件状�:Created/Queued/Processing/Completed/Suspended/Failed"),
|
||
field.Enum("positionType").
|
||
GoType(constants.PositionType("")).
|
||
Default(string(constants.PositionType_OnDock)).
|
||
Comment("ä½�置类型:ON_DOCK(接驳å�°ï¼? ON_EQUIPMENT(设备)/ ON_CACHE(缓å˜å�°ï¼?),
|
||
field.String("positionRefId").Default("").Comment("ä½�置引用IDï¼Œæ ¼å¼?设备ID:æ§½ä½�å�?),
|
||
field.Int("tempSlotNo").Optional().Nillable().Comment("缓å˜å�°æ§½ä½�å�·ï¼Œå·¥ä»¶åœ¨ç¼“å˜å�°ä¸çš„ä½�ç½?),
|
||
field.Int("dockEquipmentId").Optional().Nillable().Comment("接驳�设备ID,工件所在接驳�"),
|
||
field.Int("dockSlotNo").Optional().Nillable().Comment("接驳�槽��,�值范�-42"),
|
||
field.JSON("context", map[string]any{}).Optional().SchemaType(map[string]string{
|
||
dialect.Postgres: "jsonb",
|
||
}).Comment("è¿�行时上下文,å˜å‚¨å½¢çŠ¶åˆ¤æ–ã€�检测结果ç‰åЍæ€�æ•°æ�?),
|
||
field.Int("priority").Default(2).Comment("调度优先级,数值越�优先级越高"),
|
||
field.String("suspendedReason").Default("").Comment("æŒ‚èµ·åŽŸå› ï¼Œè®°å½•å·¥ä»¶è¢«æš‚å�œçš„具体原å›?),
|
||
field.Int("version").Default(0).Comment("事件版本�,�观�并�控制,�次状���1"),
|
||
field.Int("totalStepCount").Default(0).Comment("累计æ¥éª¤æ•°ï¼Œæ»å¾ªçŽ¯é˜²æŠ¤ï¼šè¶…è¿‡ maxStepCount æ ‡è®°ä¸ºå¼‚å¸?),
|
||
field.Int("maxStepCount").Default(200).Comment("最大æ¥éª¤æ•°é™�åˆ¶ï¼Œé˜²æ¢æ»å¾ªçޝ"),
|
||
field.String("lastEventId").Default("").Comment("最�处�事件ID,用于事件去�和溯�"),
|
||
field.Time("completedAt").Optional().Comment("完工时间,所有工�执行完毕的时刻"),
|
||
field.Time("cncStartedAt").Optional().Comment("åŠ å·¥å¼€å§‹æ—¶é—´ï¼Œè®¾å¤‡åŠ å·¥å¼€å§‹æ—¶åˆ?),
|
||
field.Time("cncCompletedAt").Optional().Comment("åŠ å·¥å®Œæˆ�æ—¶é—´ï¼Œè®¾å¤‡åŠ å·¥å®Œæˆ�æ—¶åˆ?),
|
||
field.Time("createdAt").Default(time.Now).Immutable().Comment("创建时间"),
|
||
field.Time("updatedAt").Default(time.Now).UpdateDefault(time.Now).Optional().Nillable().Comment("最�更新时�),
|
||
field.Bool("isDel").Default(false).Comment("è½¯åˆ é™¤æ ‡è®°ï¼šTRUE=å·²åˆ é™¤ï¼ˆå·¥å�•åˆ é™¤æ—¶è½¯åˆ ï¼Œä¿�留审计数æ�®ï¼‰ï¼›æŸ¥è¯¢éœ€è¿‡æ»¤ is_del = FALSE"),
|
||
}
|
||
}
|
||
|
||
func (Job) Edges() []ent.Edge {
|
||
return []ent.Edge{
|
||
edge.From("workOrder", WorkOrder.Type).Ref("jobs").Field("workOrderId").Unique().Required().Comment("所属工�),
|
||
edge.From("productType", ProductType.Type).Ref("jobs").Field("productTypeId").Unique().Required().Comment("产�类型"),
|
||
edge.From("recipe", Recipe.Type).Ref("jobs").Field("recipeId").Unique().Required().Comment("工艺路线"),
|
||
edge.To("taskLogs", TaskLog.Type).Comment("任务执行日志"),
|
||
edge.To("tasks", Task.Type).Comment("领域任务"),
|
||
edge.To("stepInstances", JobStepInstance.Type).Comment("æ¥éª¤æ‰§è¡Œå®žä¾‹"),
|
||
}
|
||
}
|
||
|
||
func (Job) Indexes() []ent.Index {
|
||
return []ent.Index{
|
||
index.Fields("workOrderId"),
|
||
index.Fields("status"),
|
||
index.Fields("positionType"),
|
||
index.Fields("version"),
|
||
}
|
||
}
|