定义喂料计划model
This commit is contained in:
174
internal/model/feeding.go
Normal file
174
internal/model/feeding.go
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FeedingPlanType 喂料计划类型枚举
|
||||||
|
type FeedingPlanType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// FeedingPlanTypeManual 手动触发
|
||||||
|
FeedingPlanTypeManual FeedingPlanType = "manual"
|
||||||
|
// FeedingPlanTypeAutoOnce 自动触发一次
|
||||||
|
FeedingPlanTypeAutoOnce FeedingPlanType = "auto_once"
|
||||||
|
// FeedingPlanTypeAutoScheduled 定时自动触发
|
||||||
|
FeedingPlanTypeAutoScheduled FeedingPlanType = "auto_scheduled"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FeedingPlan 喂料计划主表
|
||||||
|
type FeedingPlan struct {
|
||||||
|
// ID 计划ID
|
||||||
|
ID uint `gorm:"primaryKey;column:id" json:"id"`
|
||||||
|
|
||||||
|
// Name 计划名称
|
||||||
|
Name string `gorm:"not null;column:name" json:"name"`
|
||||||
|
|
||||||
|
// Description 计划描述
|
||||||
|
Description string `gorm:"column:description" json:"description"`
|
||||||
|
|
||||||
|
// Type 计划类型(手动触发/自动触发一次/定时自动触发)
|
||||||
|
Type FeedingPlanType `gorm:"not null;column:type" json:"type"`
|
||||||
|
|
||||||
|
// Enabled 是否启用
|
||||||
|
Enabled bool `gorm:"not null;default:true;column:enabled" json:"enabled"`
|
||||||
|
|
||||||
|
// ScheduleCron 定时任务表达式, 当类型为 FeedingPlanTypeAutoOnce 时只会触发第一次
|
||||||
|
ScheduleCron *string `gorm:"column:schedule_cron" json:"schedule_cron,omitempty"`
|
||||||
|
|
||||||
|
// CreatedAt 创建时间
|
||||||
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
||||||
|
|
||||||
|
// UpdatedAt 更新时间
|
||||||
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
||||||
|
|
||||||
|
// DeletedAt 删除时间(用于软删除)
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;column:deleted_at" json:"-"`
|
||||||
|
|
||||||
|
// Steps 计划步骤列表
|
||||||
|
Steps []FeedingPlanStep `gorm:"foreignKey:PlanID" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName 指定FeedingPlan模型对应的数据库表名
|
||||||
|
func (FeedingPlan) TableName() string {
|
||||||
|
return "feeding_plans"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FeedingPlanStep 喂料计划步骤表,表示计划中的每个设备动作
|
||||||
|
type FeedingPlanStep struct {
|
||||||
|
// ID 步骤ID
|
||||||
|
ID uint `gorm:"primaryKey;column:id" json:"id"`
|
||||||
|
|
||||||
|
// PlanID 关联的计划ID
|
||||||
|
PlanID uint `gorm:"not null;column:plan_id;index" json:"plan_id"`
|
||||||
|
|
||||||
|
// StepOrder 步骤顺序
|
||||||
|
StepOrder int `gorm:"not null;column:step_order" json:"step_order"`
|
||||||
|
|
||||||
|
// DeviceID 关联的设备ID
|
||||||
|
DeviceID uint `gorm:"not null;column:device_id;index" json:"device_id"`
|
||||||
|
|
||||||
|
// TargetValue 目标值(达到该值后停止工作切换到下一个设备)
|
||||||
|
TargetValue float64 `gorm:"not null;column:target_value" json:"target_value"`
|
||||||
|
|
||||||
|
// Action 动作(如:打开设备)
|
||||||
|
Action string `gorm:"not null;column:action" json:"action"`
|
||||||
|
|
||||||
|
// CreatedAt 创建时间
|
||||||
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
||||||
|
|
||||||
|
// UpdatedAt 更新时间
|
||||||
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
||||||
|
|
||||||
|
// DeletedAt 删除时间(用于软删除)
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;column:deleted_at" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName 指定FeedingPlanStep模型对应的数据库表名
|
||||||
|
func (FeedingPlanStep) TableName() string {
|
||||||
|
return "feeding_plan_steps"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FeedingExecution 喂料执行记录表
|
||||||
|
type FeedingExecution struct {
|
||||||
|
// ID 执行记录ID
|
||||||
|
ID uint `gorm:"primaryKey;column:id" json:"id"`
|
||||||
|
|
||||||
|
// PlanID 关联的计划ID
|
||||||
|
PlanID uint `gorm:"not null;column:plan_id;index" json:"plan_id"`
|
||||||
|
|
||||||
|
// TriggerType 触发类型(手动/自动)
|
||||||
|
TriggerType FeedingPlanType `gorm:"not null;column:trigger_type" json:"trigger_type"`
|
||||||
|
|
||||||
|
// Status 执行状态(进行中/已完成/已取消/失败)
|
||||||
|
Status string `gorm:"not null;column:status" json:"status"`
|
||||||
|
|
||||||
|
// StartedAt 开始执行时间
|
||||||
|
StartedAt *time.Time `gorm:"column:started_at" json:"started_at,omitempty"`
|
||||||
|
|
||||||
|
// FinishedAt 完成时间
|
||||||
|
FinishedAt *time.Time `gorm:"column:finished_at" json:"finished_at,omitempty"`
|
||||||
|
|
||||||
|
// CreatedAt 创建时间
|
||||||
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
||||||
|
|
||||||
|
// UpdatedAt 更新时间
|
||||||
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
||||||
|
|
||||||
|
// DeletedAt 删除时间(用于软删除)
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;column:deleted_at" json:"-"`
|
||||||
|
|
||||||
|
// Steps 执行步骤详情
|
||||||
|
Steps []FeedingExecutionStep `gorm:"foreignKey:ExecutionID" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName 指定FeedingExecution模型对应的数据库表名
|
||||||
|
func (FeedingExecution) TableName() string {
|
||||||
|
return "feeding_executions"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FeedingExecutionStep 喂料执行步骤详情表
|
||||||
|
type FeedingExecutionStep struct {
|
||||||
|
// ID 执行步骤ID
|
||||||
|
ID uint `gorm:"primaryKey;column:id" json:"id"`
|
||||||
|
|
||||||
|
// ExecutionID 关联的执行记录ID
|
||||||
|
ExecutionID uint `gorm:"not null;column:execution_id;index" json:"execution_id"`
|
||||||
|
|
||||||
|
// StepID 关联的计划步骤ID
|
||||||
|
StepID uint `gorm:"not null;column:step_id;index" json:"step_id"`
|
||||||
|
|
||||||
|
// DeviceID 关联的设备ID
|
||||||
|
DeviceID uint `gorm:"not null;column:device_id;index" json:"device_id"`
|
||||||
|
|
||||||
|
// TargetValue 目标值
|
||||||
|
TargetValue float64 `gorm:"not null;column:target_value" json:"target_value"`
|
||||||
|
|
||||||
|
// ActualValue 实际值
|
||||||
|
ActualValue *float64 `gorm:"column:actual_value" json:"actual_value,omitempty"`
|
||||||
|
|
||||||
|
// Status 步骤状态(待执行/执行中/已完成/失败)
|
||||||
|
Status string `gorm:"not null;column:status" json:"status"`
|
||||||
|
|
||||||
|
// StartedAt 开始执行时间
|
||||||
|
StartedAt *time.Time `gorm:"column:started_at" json:"started_at,omitempty"`
|
||||||
|
|
||||||
|
// FinishedAt 完成时间
|
||||||
|
FinishedAt *time.Time `gorm:"column:finished_at" json:"finished_at,omitempty"`
|
||||||
|
|
||||||
|
// CreatedAt 创建时间
|
||||||
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
||||||
|
|
||||||
|
// UpdatedAt 更新时间
|
||||||
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
||||||
|
|
||||||
|
// DeletedAt 删除时间(用于软删除)
|
||||||
|
DeletedAt gorm.DeletedAt `gorm:"index;column:deleted_at" json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName 指定FeedingExecutionStep模型对应的数据库表名
|
||||||
|
func (FeedingExecutionStep) TableName() string {
|
||||||
|
return "feeding_execution_steps"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user