package schema import ( "time" "bj_power_mes/constants" "entgo.io/ent" "entgo.io/ent/dialect/entsql" "entgo.io/ent/schema" "entgo.io/ent/schema/edge" "entgo.io/ent/schema/field" "entgo.io/ent/schema/index" ) // WorkOrder 工单,一次生产任务的下达指令 type WorkOrder struct { ent.Schema } func (WorkOrder) Annotations() []schema.Annotation { return []schema.Annotation{ entsql.Annotation{ Table: "work_order", Options: "COMMENT='工单表,记录每次生产任务的下达指令:产品、数量、状态、来源及完工统计'", }, entsql.WithComments(true), } } func (WorkOrder) Fields() []ent.Field { return []ent.Field{ field.Int("id").Positive().Comment("主键ID"), field.Int("productTypeId").Comment("产品类型ID,决定生产的工件种类"), field.Int("quantity").Default(1).Comment("工件计划数量,该工单需要生产的总件?), field.Int("finishedNum").Default(0).Comment("已完成良品数?), field.Int("failNum").Default(0).Comment("检测NG数量,加工或检测不合格的件?), field.Enum("status"). GoType(constants.WorkOrderStatus("")). Default(string(constants.WorkOrderStatus_Created)). Comment("工单状态:Created/InProgress/Paused/Completed/Cancelled/Error/Reported"), field.Time("createdAt").Default(time.Now).Immutable().Comment("创建时间"), field.Time("updatedAt").Default(time.Now).UpdateDefault(time.Now).Optional().Nillable().Comment("更新时间"), field.Time("completedAt").Optional().Nillable().Comment("完工时间,所有工件加工完毕的时刻"), field.Enum("source"). GoType(constants.WorkOrderSource("")). Default(string(constants.WorkOrderSource_Manual)). Comment("工单来源:Manual/MOM,标识工单的创建渠道"), field.String("workOrderNo").Default("").Comment("工单号,外部系统(MOM/ERP)传入的业务编号"), field.Bool("isDel").Default(false).Comment("软删除标记:TRUE=已删除(删除工单时软删,保留审计数据);查询需过滤 is_del = FALSE"), } } func (WorkOrder) Edges() []ent.Edge { return []ent.Edge{ edge.From("productType", ProductType.Type).Ref("workOrders").Field("productTypeId").Unique().Required().Comment("产品类型"), edge.To("jobs", Job.Type).Comment("工单下的工件列表"), } } func (WorkOrder) Indexes() []ent.Index { return []ent.Index{ index.Fields("status"), index.Fields("productTypeId"), } }