| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 | 
							- package model
 
- import (
 
- 	"fmt"
 
- 	"kpt-pasture/util"
 
- 	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
 
- )
 
- const PenBehaviorMinCowCount = 20
 
- 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"`
 
- 	IsShow         pasturePb.IsShow_Kind `json:"isShow"`
 
- 	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,
 
- 		IsShow:     pasturePb.IsShow_No,
 
- 	}
 
- }
 
- 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
 
- }
 
 
  |