40 lines
2.2 KiB
Go
40 lines
2.2 KiB
Go
package models
|
||
|
||
import (
|
||
"time"
|
||
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// PigTransferType 定义了猪只迁移的类型
|
||
type PigTransferType string
|
||
|
||
const (
|
||
PigTransferTypeInternal PigTransferType = "群内调栏" // 同一猪群内猪栏间的调动
|
||
PigTransferTypeCrossBatch PigTransferType = "跨群调栏" // 不同猪群间的调动
|
||
PigTransferTypeSale PigTransferType = "销售" // 猪只售出
|
||
PigTransferTypeDeath PigTransferType = "死亡" // 猪只死亡
|
||
PigTransferTypeCull PigTransferType = "淘汰" // 猪只淘汰
|
||
PigTransferTypePurchase PigTransferType = "新购入" // 新购入猪只
|
||
PigTransferTypeDeliveryRoomTransfor PigTransferType = "产房转入" // 产房转入
|
||
// 可以根据业务需求添加更多类型,例如:转出到其他农场等
|
||
)
|
||
|
||
// PigTransferLog 记录了每一次猪只数量在猪栏间的变动事件。
|
||
// 它作为事件溯源的基础,用于推算任意时间点猪栏的猪只数量。
|
||
type PigTransferLog struct {
|
||
gorm.Model
|
||
TransferTime time.Time `gorm:"primaryKey;comment:迁移发生时间" json:"transfer_time"` // 迁移发生时间,作为联合主键
|
||
PigBatchID uint `gorm:"primaryKey;comment:关联的猪群ID" json:"pig_batch_id"` // 关联的猪群ID,作为联合主键
|
||
PenID uint `gorm:"primaryKey;comment:发生变动的猪栏ID" json:"pen_id"` // 发生变动的猪栏ID,作为联合主键
|
||
Quantity int `gorm:"not null;comment:变动数量(正数表示增加,负数表示减少)" json:"quantity"` // 变动数量(正数表示增加,负数减少)
|
||
Type PigTransferType `gorm:"not null;comment:变动类型" json:"type"` // 变动类型,使用枚举类型
|
||
CorrelationID string `gorm:"comment:用于关联一次完整操作(如一次调栏会产生两条日志)" json:"correlation_id"` // 用于关联一次完整操作
|
||
OperatorID uint `gorm:"not null;comment:操作员ID" json:"operator_id"` // 操作员ID
|
||
Remarks string `gorm:"comment:备注" json:"remarks"`
|
||
}
|
||
|
||
func (p PigTransferLog) TableName() string {
|
||
return "pig_transfer_logs"
|
||
}
|