123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- package model
- import (
- "fmt"
- "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
- type BarnBehaviorCurveResponse struct {
- Code int32 `json:"code"`
- Msg string `json:"msg"`
- Data *BarnBehaviorCurveItem `json:"data"`
- }
- 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(LayoutMinute)
- }
- res.DateTime = append(res.DateTime, dateTime)
- res.Rumina = append(res.Rumina, v.RuminaRate)
- res.Intake = append(res.Intake, v.IntakeRate)
- res.Rest = append(res.Rest, v.RestRate)
- res.WeekAvgRumina = append(res.WeekAvgRumina, v.WeekRuminaRate)
- res.WeekAvgIntake = append(res.WeekAvgIntake, v.WeekIntakeRate)
- res.WeekAvgReset = append(res.WeekAvgReset, v.WeekRestRate)
- ruminaMaxShadow := float32(v.WeekRuminaRate + v.RuminaStd) //- float32(v.WeekRuminaRate-v.RuminaStd)
- ruminaMinShadow := float32(v.WeekRuminaRate - v.RuminaStd)
- if ruminaMinShadow < 0 {
- ruminaMinShadow = 0
- }
- res.WeekAvgRuminaMaxShadow = append(res.WeekAvgRuminaMaxShadow, ruminaMaxShadow)
- res.WeekAvgRuminaMinShadow = append(res.WeekAvgRuminaMinShadow, ruminaMinShadow)
- intakeMaxShadow := float32(v.WeekIntakeRate + v.IntakeStd) //- float32(v.WeekIntakeRate-v.IntakeStd)
- intakeMinShadow := float32(v.WeekIntakeRate - v.IntakeStd)
- if intakeMinShadow < 0 {
- intakeMinShadow = 0
- }
- res.WeekAvgIntakeMaxShadow = append(res.WeekAvgIntakeMaxShadow, intakeMaxShadow)
- res.WeekAvgIntakeMinShadow = append(res.WeekAvgIntakeMinShadow, intakeMinShadow)
- restMaxShadow := float32(v.WeekRestRate + v.RestStd) //- float32(v.WeekRestRate-v.RestStd)
- restMinShadow := float32(v.WeekRestRate - v.RestStd)
- if restMinShadow < 0 {
- restMinShadow = 0
- }
- res.WeekAvgRestMaxShadow = append(res.WeekAvgRestMaxShadow, restMaxShadow)
- res.WeekAvgRestMinShadow = append(res.WeekAvgRestMinShadow, restMinShadow)
- }
- 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"`
- }
- type BarnBehaviorCurveItem struct {
- EventTime *EventTime `json:"eventTime"`
- DateTime []string `json:"dateTime"`
- Headers []string `json:"headers"`
- Rumina []int32 `json:"rumina"`
- Intake []int32 `json:"intake"`
- Rest []int32 `json:"rest"`
- WeekAvgRumina [][]string `json:"weekAvgRumina"`
- WeekAvgIntake [][]string `json:"weekAvgIntake"`
- WeekAvgReset [][]string `json:"weekAvgReset"`
- }
- type EventTime struct {
- FeedTime []string `json:"feedTime"`
- MilkTime []string `json:"milkTime"`
- }
- func (p PenBehaviorSlice) ToPB2() *BarnBehaviorCurveItem {
- res := &BarnBehaviorCurveItem{
- EventTime: &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([][]string, 0),
- WeekAvgIntake: make([][]string, 0),
- WeekAvgReset: make([][]string, 0),
- }
- for i, v := range p {
- dateTime := ""
- if v.ActiveTime != "" {
- dt, _ := util.TimeParseLocal(LayoutTime, v.ActiveTime)
- dateTime = dt.Format(LayoutMinute)
- }
- res.DateTime = append(res.DateTime, dateTime)
- res.Rumina = append(res.Rumina, v.RuminaRate)
- res.Intake = append(res.Intake, v.IntakeRate)
- res.Rest = append(res.Rest, v.RestRate)
- weekRuminaRate, weekIntakeRate, weekRestRate := make([]string, 0), make([]string, 0), make([]string, 0)
- weekRuminaRate = append(weekRuminaRate, v.ActiveTime, fmt.Sprintf("%d", v.WeekRuminaRate), fmt.Sprintf("%d", v.PenId), v.HeatDate, fmt.Sprintf("%d", v.Frameid), fmt.Sprintf("%d", v.RuminaStd))
- weekRuminaRate = append(weekRuminaRate, v.ActiveTime, fmt.Sprintf("%d", v.WeekIntakeRate), fmt.Sprintf("%d", v.PenId), v.HeatDate, fmt.Sprintf("%d", v.Frameid), fmt.Sprintf("%d", v.IntakeStd))
- weekRestRate = append(weekRestRate, v.ActiveTime, fmt.Sprintf("%d", v.WeekRestRate), fmt.Sprintf("%d", v.PenId), v.HeatDate, fmt.Sprintf("%d", v.Frameid), fmt.Sprintf("%d", v.RestStd))
- res.WeekAvgRumina[i] = append(res.WeekAvgRumina[i], weekRuminaRate...)
- res.WeekAvgIntake[i] = append(res.WeekAvgIntake[i], weekIntakeRate...)
- res.WeekAvgReset[i] = append(res.WeekAvgReset[i], weekRestRate...)
- }
- return res
- }
|