Files
bj_power/bj_power_mes/schema/equipment.go
T

69 lines
2.9 KiB
Go
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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("设备槽ä½åˆè¡¨"),
}
}