package model import ( "kpt-pasture/util" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" ) type PenBehavior struct { Id int64 `json:"id"` PastureId int64 `json:"pastureId"` HeatDate string `json:"heatDate"` ActiveTime string `json:"activeTime"` Frameid int32 `json:"frameid"` PenId int32 `json:"penId"` PenName string `json:"penName"` CowCount int32 `json:"cowCount"` AvgHigh int32 `json:"avgHigh"` SumRumina int32 `json:"sumRumina"` SumIntake int32 `json:"sumIntake"` SumRest int32 `json:"sumRest"` SumGasp int32 `json:"sumGasp"` RuminaRate int32 `json:"ruminaRate"` IntakeRate int32 `json:"intakeRate"` RestRate int32 `json:"restRate"` GaspRate int32 `json:"gaspRate"` WeekRuminaRate int32 `json:"weekRuminaRate"` RuminaStd int32 `json:"ruminaStd"` WeekIntakeRate int32 `json:"weekIntakeRate"` IntakeStd int32 `json:"intakeStd"` WeekRestRate int32 `json:"weekRestRate"` RestStd int32 `json:"restStd"` WeekGaspRate int32 `json:"weekGaspRate"` GaspStd int32 `json:"gaspStd"` CreatedAt int64 `json:"createdAt"` UpdatedAt int64 `json:"updatedAt"` } func (p *PenBehavior) TableName() string { return "pen_behavior" } func NewPenBehavior(data *PenBehaviorData, activeTime string) *PenBehavior { return &PenBehavior{ PastureId: data.PastureId, HeatDate: data.HeatDate, ActiveTime: activeTime, Frameid: data.Frameid, PenId: data.PenId, PenName: data.PenName, CowCount: data.CowCount, AvgHigh: data.AvgHigh, SumRumina: data.SumRumina, SumIntake: data.SumIntake, SumRest: data.SumRest, SumGasp: data.SumGasp, RuminaRate: data.RuminaRate, IntakeRate: data.IntakeRate, RestRate: data.RestRate, GaspRate: data.GaspRate, } } type PenBehaviorSlice []*PenBehavior func (p PenBehaviorSlice) ToPB() *pasturePb.BarnBehaviorCurveItem { res := &pasturePb.BarnBehaviorCurveItem{ EventTime: &pasturePb.EventTime{ FeedTime: make([]string, 0), MilkTime: make([]string, 0), }, DateTime: make([]string, 0), Rumina: make([]int32, 0), Intake: make([]int32, 0), Rest: make([]int32, 0), WeekAvgRumina: make([]int32, 0), WeekAvgIntake: make([]int32, 0), WeekAvgReset: make([]int32, 0), } for _, v := range p { dateTime := "" if v.ActiveTime != "" { dt, _ := util.TimeParseLocal(LayoutTime, v.ActiveTime) dateTime = dt.Format(LayoutHour) } res.DateTime = append(res.DateTime, dateTime) res.Rumina = append(res.Rumina, v.RuminaStd) res.Intake = append(res.Intake, v.IntakeStd) res.Rest = append(res.Rest, v.RestStd) res.WeekAvgRumina = append(res.WeekAvgRumina, v.WeekRuminaRate) res.WeekAvgIntake = append(res.WeekAvgIntake, v.WeekIntakeRate) res.WeekAvgReset = append(res.WeekAvgReset, v.WeekRestRate) } return res } type PenBehaviorData struct { PastureId int64 `json:"pastureId"` PenId int32 `json:"penId"` PenName string `json:"penName"` HeatDate string `json:"heatDate"` Frameid int32 `json:"frameid"` CowCount int32 `json:"cowCount"` AvgHigh int32 `json:"avgHigh"` SumRumina int32 `json:"sumRumina"` SumIntake int32 `json:"sumIntake"` SumRest int32 `json:"sumRest"` SumGasp int32 `json:"sumGasp"` RuminaRate int32 `json:"ruminaRate"` IntakeRate int32 `json:"intakeRate"` RestRate int32 `json:"restRate"` GaspRate int32 `json:"gaspRate"` }