69 lines
2.9 KiB
Go
69 lines
2.9 KiB
Go
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"
|
||
)
|
||
|
||
// Equipment 设备实例,车间ä¸å®žé™…å˜åœ¨çš„æ¯�å�°ç‰©ç�†è®¾å¤‡ã€?
|
||
//
|
||
// 框架级通用抽象:ä¸�区分工站/æ�¬è¿�设备的显å¼�åˆ†ç±»å—æ®µã€?
|
||
// - slotCount >= 1 â†?工站(æŒ�有工件,å�¯æ‰§è¡ŒåŠ å·¥ã€�检测ã€�æš‚å˜ï¼‰
|
||
// - slotCount = 0 â†?æ�¬è¿�è®¾å¤‡ï¼ˆæ— æ§½ä½�,串行互斥,在工站间移动工件ï¼?
|
||
// 行为差异由信å�·è¡¨ï¼ˆdoneSignalName)和工艺æ¥éª¤ï¼ˆresourceType)驱动ã€?
|
||
type Equipment struct {
|
||
ent.Schema
|
||
}
|
||
|
||
func (Equipment) Annotations() []schema.Annotation {
|
||
return []schema.Annotation{
|
||
entsql.Annotation{
|
||
Table: "equipment",
|
||
Options: "COMMENT='设备实例表,记录车间��物�设备的�置信�",
|
||
},
|
||
entsql.WithComments(true),
|
||
}
|
||
}
|
||
|
||
func (Equipment) Fields() []ent.Field {
|
||
return []ent.Field{
|
||
field.Int("id").Positive().Comment("主键ID"),
|
||
field.String("name").MaxLen(50).Comment("设备�称"),
|
||
field.Int("equipmentTypeId").Comment("设备类型ID"),
|
||
field.Enum("status").
|
||
GoType(constants.EquipmentStatus("")).
|
||
Default(string(constants.EquipmentStatus_Idle)).
|
||
Comment("设备�行状�),
|
||
field.Int("slotCount").Default(1).Comment("槽�数��=��设备�=1=工站"),
|
||
field.Bool("exchange").Default(false).Comment("是�支��料�议"),
|
||
field.Bool("batch").Default(false).Comment("是�批�完�模�"),
|
||
field.Bool("dualGrip").Default(false).Comment("是��夹�(仅��设备)"),
|
||
field.String("ipAddress").Default("").Comment("设备IP地�"),
|
||
field.String("location").Default("").Comment("物��置�述"),
|
||
field.String("doneSignalName").Default("").Comment("åŠ å·¥å®Œæˆ�ä¿¡å�·å��,为空=æ— PLCä¿¡å�·"),
|
||
field.String("ngSignalName").Default("").Comment("检测NGä¿¡å�·å��,为空=æ— æ¤ä¿¡å�·"),
|
||
field.String("remark").Default("").Comment("备注"),
|
||
// 设备å� 用:è°�å�³å°†ä½¿ç”¨è®¾å¤‡è°�抢å� é”�,è°�上é”�è°�è§£é”�ï¼›å‰�端人工解é”�按钮å�¯è§£ä»»ä½•é”�ã€?
|
||
// occupiedBy 为空 = 未å� 用,é�žç©º = 被å� 用(ROBOT/AGV/MANUALï¼?
|
||
field.String("occupiedBy").Default("").Comment("å� 用者:ROBOT/AGV/MANUAL"),
|
||
field.String("occupiedReason").Default("").Comment("å� ç”¨åŽŸå› "),
|
||
field.Time("occupiedAt").Optional().Nillable().Comment("å� 用开始时é—?),
|
||
field.Time("createdAt").Default(time.Now).Optional().Nillable().Comment("创建时间"),
|
||
field.Time("updatedAt").Default(time.Now).UpdateDefault(time.Now).Optional().Nillable().Comment("æ›´æ–°æ—¶é—´"),
|
||
}
|
||
}
|
||
|
||
func (Equipment) Edges() []ent.Edge {
|
||
return []ent.Edge{
|
||
edge.From("equipmentType", EquipmentType.Type).Ref("equipments").Field("equipmentTypeId").Unique().Required().Comment("所属设备类�),
|
||
edge.To("slots", EquipmentSlot.Type).Comment("设备槽�列表"),
|
||
}
|
||
}
|