From 1652df1533e2ae04f8673f304a782ef97cc5c852 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Sun, 5 Oct 2025 21:58:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=97=85=E7=8C=AA=E5=8F=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/infra/database/postgres.go | 2 ++ internal/infra/models/models.go | 1 + internal/infra/models/pig_batch.go | 48 +++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/internal/infra/database/postgres.go b/internal/infra/database/postgres.go index 0dfc003..5f213d0 100644 --- a/internal/infra/database/postgres.go +++ b/internal/infra/database/postgres.go @@ -168,6 +168,7 @@ func (ps *PostgresStorage) creatingHyperTable() error { {models.WeighingBatch{}, "weighing_time"}, {models.WeighingRecord{}, "weighing_time"}, {models.PigTransferLog{}, "transfer_time"}, + {models.PigBatchSickPigLog{}, "happened_at"}, } for _, table := range tablesToConvert { @@ -205,6 +206,7 @@ func (ps *PostgresStorage) applyCompressionPolicies() error { {models.WeighingBatch{}, "pig_batch_id"}, {models.WeighingRecord{}, "weighing_batch_id"}, {models.PigTransferLog{}, "pig_batch_id"}, + {models.PigBatchSickPigLog{}, "pig_batch_id"}, } for _, policy := range policies { diff --git a/internal/infra/models/models.go b/internal/infra/models/models.go index 6b4296a..6f10dbc 100644 --- a/internal/infra/models/models.go +++ b/internal/infra/models/models.go @@ -42,6 +42,7 @@ func GetAllModels() []interface{} { &WeighingBatch{}, &WeighingRecord{}, &PigTransferLog{}, + &PigBatchSickPigLog{}, // Feed Models &RawMaterial{}, diff --git a/internal/infra/models/pig_batch.go b/internal/infra/models/pig_batch.go index c2f02ae..8357e3e 100644 --- a/internal/infra/models/pig_batch.go +++ b/internal/infra/models/pig_batch.go @@ -105,3 +105,51 @@ type WeighingRecord struct { func (WeighingRecord) TableName() string { return "weighing_records" } + +// PigBatchSickPigLogChangeType 定义了病猪变化日志的类型 +type PigBatchSickPigLogChangeType string + +const ( + SickPigChangeTypeAdd PigBatchSickPigLogChangeType = "新增" // 新增病猪 + SickPigChangeTypeRemove PigBatchSickPigLogChangeType = "移除" // 移除病猪 (康复, 死亡, 转出等) +) + +// PigBatchSickPigTreatmentLocation 定义了病猪治疗地点 +type PigBatchSickPigTreatmentLocation string + +const ( + TreatmentLocationOnSite PigBatchSickPigTreatmentLocation = "原地治疗" + TreatmentLocationSickBay PigBatchSickPigTreatmentLocation = "病猪栏治疗" +) + +// PigBatchSickPigReasonType 定义了病猪变化的原因类型 +type PigBatchSickPigReasonType string + +const ( + SickPigReasonTypeIllness PigBatchSickPigReasonType = "患病" // 猪只患病 + SickPigReasonTypeRecovery PigBatchSickPigReasonType = "康复" // 猪只康复 + SickPigReasonTypeDeath PigBatchSickPigReasonType = "死亡" // 猪只死亡 + SickPigReasonTypeEliminate PigBatchSickPigReasonType = "淘汰" // 猪只淘汰 + SickPigReasonTypeTransferIn PigBatchSickPigReasonType = "转入" // 病猪转入当前批次 + SickPigReasonTypeTransferOut PigBatchSickPigReasonType = "转出" // 病猪转出当前批次 (例如转到其他批次或出售) + SickPigReasonTypeOther PigBatchSickPigReasonType = "其他" // 其他原因 +) + +// PigBatchSickPigLog 记录了猪批次中病猪数量的变化日志 +type PigBatchSickPigLog struct { + gorm.Model + PigBatchID uint `gorm:"primaryKey;comment:关联的猪批次ID"` + PenID uint `gorm:"not null;index;comment:所在猪圈ID"` + PigIDs string `gorm:"size:500;comment:涉及的猪只ID列表,逗号分隔"` + ChangeType PigBatchSickPigLogChangeType `gorm:"size:20;not null;comment:变化类型 (新增, 移除)"` + ChangeCount int `gorm:"not null;comment:变化数量, 正数表示新增, 负数表示移除"` + Reason PigBatchSickPigReasonType `gorm:"size:20;not null;comment:变化原因 (如: 患病, 康复, 死亡, 转入, 转出, 其他)"` + Remarks string `gorm:"size:255;comment:备注"` + TreatmentLocation PigBatchSickPigTreatmentLocation `gorm:"size:50;comment:治疗地点"` + OperatorID uint `gorm:"comment:操作员ID"` + HappenedAt time.Time `gorm:"primaryKey;comment:事件发生时间"` +} + +func (PigBatchSickPigLog) TableName() string { + return "pig_batch_sick_pig_logs" +}