94 lines
3.5 KiB
Go
94 lines
3.5 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 工件
|
||
// currentStepId/positionType/positionRefId/version/lastEventId
|
||
type Job struct {
|
||
ent.Schema
|
||
}
|
||
|
||
func (Job) Annotations() []schema.Annotation {
|
||
return []schema.Annotation{
|
||
entsql.Annotation{Table: "job"},
|
||
}
|
||
}
|
||
|
||
func (Job) Fields() []ent.Field {
|
||
return []ent.Field{
|
||
field.Int("id").Positive(),
|
||
field.Int("workOrderId").Comment("工单ID"),
|
||
field.Int("palletId").Optional().Nillable().Comment("所属托盘ID"),
|
||
field.Int("productTypeId").Comment("产品类型ID"),
|
||
field.Int("recipeId").Comment("工艺路线ID"),
|
||
field.String("currentStepId").MaxLen(20).Default("").Comment("当前步骤业务ID(OP10-OP120)"),
|
||
field.Enum("status").
|
||
GoType(constants.JobStatus("")).
|
||
Default(string(constants.JobStatus_Created)).
|
||
Comment("工件状态"),
|
||
field.String("positionType").
|
||
GoType(constants.PositionType("")).
|
||
Default(string(constants.PositionType_OnDock)).
|
||
Comment("位置类型(主字段)"),
|
||
field.String("positionRefId").Default("").Comment("位置引用ID(主字段)"),
|
||
field.Int("tempSlotNo").Optional().Nillable().Comment("暂存台槽位号(兼容字段)"),
|
||
field.String("workpieceNo").Default("").Comment("工件编号(扫码结果/打标文本)"),
|
||
field.Int("dockNo").Optional().Nillable().Comment("接驳台编号(兼容字段)"),
|
||
field.Int("dockSlotNo").Optional().Nillable().Comment("接驳台槽位编号(兼容字段)"),
|
||
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("事件版本号"),
|
||
field.String("lastEventId").Default("").Comment("最后处理事件ID"),
|
||
field.Time("completedAt").Optional().Comment("完成时间"),
|
||
field.Time("cncStartedAt").Optional().Comment("CNC加工开始时间"),
|
||
field.Time("cncCompletedAt").Optional().Comment("CNC加工完成时间"),
|
||
field.Enum("inspectionResult").
|
||
GoType(constants.QCResult("")).
|
||
Optional().
|
||
Comment("内窥镜检测结果(PASS/FAIL,NULL=未检测)"),
|
||
field.Enum("samplingResult").
|
||
GoType(constants.QCResult("")).
|
||
Optional().
|
||
Comment("抽检检测结果(PASS/FAIL,NULL=未检测)"),
|
||
field.Time("createdAt").Default(time.Now).Immutable().Comment("创建时间"),
|
||
field.Time("updatedAt").Default(time.Now).UpdateDefault(time.Now).Optional().Nillable().Comment("最后更新时间"),
|
||
}
|
||
}
|
||
|
||
func (Job) Edges() []ent.Edge {
|
||
return []ent.Edge{
|
||
edge.From("workOrder", WorkOrder.Type).Ref("jobs").Field("workOrderId").Unique().Required(),
|
||
edge.From("productType", ProductType.Type).Ref("jobs").Field("productTypeId").Unique().Required(),
|
||
edge.From("recipe", Recipe.Type).Ref("jobs").Field("recipeId").Unique().Required(),
|
||
edge.To("taskLogs", TaskLog.Type).Comment("任务日志"),
|
||
edge.To("tasks", Task.Type).Comment("领域任务"),
|
||
edge.To("stepInstances", JobStepInstance.Type).Comment("步骤执行实例"),
|
||
edge.From("pallet", Pallet.Type).Ref("jobs").Field("palletId").Unique(),
|
||
}
|
||
}
|
||
|
||
func (Job) Indexes() []ent.Index {
|
||
return []ent.Index{
|
||
index.Fields("workOrderId"),
|
||
index.Fields("status"),
|
||
index.Fields("positionType"),
|
||
index.Fields("version"),
|
||
index.Fields("palletId"),
|
||
}
|
||
}
|