pen_behavior.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package model
  2. import (
  3. "kpt-pasture/util"
  4. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  5. )
  6. type PenBehavior struct {
  7. Id int64 `json:"id"`
  8. PastureId int64 `json:"pastureId"`
  9. HeatDate string `json:"heatDate"`
  10. ActiveTime string `json:"activeTime"`
  11. Frameid int32 `json:"frameid"`
  12. PenId int32 `json:"penId"`
  13. PenName string `json:"penName"`
  14. CowCount int32 `json:"cowCount"`
  15. AvgHigh int32 `json:"avgHigh"`
  16. SumRumina int32 `json:"sumRumina"`
  17. SumIntake int32 `json:"sumIntake"`
  18. SumRest int32 `json:"sumRest"`
  19. SumGasp int32 `json:"sumGasp"`
  20. RuminaRate int32 `json:"ruminaRate"`
  21. IntakeRate int32 `json:"intakeRate"`
  22. RestRate int32 `json:"restRate"`
  23. GaspRate int32 `json:"gaspRate"`
  24. WeekRuminaRate int32 `json:"weekRuminaRate"`
  25. RuminaStd int32 `json:"ruminaStd"`
  26. WeekIntakeRate int32 `json:"weekIntakeRate"`
  27. IntakeStd int32 `json:"intakeStd"`
  28. WeekRestRate int32 `json:"weekRestRate"`
  29. RestStd int32 `json:"restStd"`
  30. WeekGaspRate int32 `json:"weekGaspRate"`
  31. GaspStd int32 `json:"gaspStd"`
  32. CreatedAt int64 `json:"createdAt"`
  33. UpdatedAt int64 `json:"updatedAt"`
  34. }
  35. func (p *PenBehavior) TableName() string {
  36. return "pen_behavior"
  37. }
  38. func NewPenBehavior(data *PenBehaviorData, activeTime string) *PenBehavior {
  39. return &PenBehavior{
  40. PastureId: data.PastureId,
  41. HeatDate: data.HeatDate,
  42. ActiveTime: activeTime,
  43. Frameid: data.Frameid,
  44. PenId: data.PenId,
  45. PenName: data.PenName,
  46. CowCount: data.CowCount,
  47. AvgHigh: data.AvgHigh,
  48. SumRumina: data.SumRumina,
  49. SumIntake: data.SumIntake,
  50. SumRest: data.SumRest,
  51. SumGasp: data.SumGasp,
  52. RuminaRate: data.RuminaRate,
  53. IntakeRate: data.IntakeRate,
  54. RestRate: data.RestRate,
  55. GaspRate: data.GaspRate,
  56. }
  57. }
  58. type PenBehaviorSlice []*PenBehavior
  59. func (p PenBehaviorSlice) ToPB() *pasturePb.BarnBehaviorCurveItem {
  60. res := &pasturePb.BarnBehaviorCurveItem{
  61. EventTime: &pasturePb.EventTime{
  62. FeedTime: make([]string, 0),
  63. MilkTime: make([]string, 0),
  64. },
  65. DateTime: make([]string, 0),
  66. Rumina: make([]int32, 0),
  67. Intake: make([]int32, 0),
  68. Rest: make([]int32, 0),
  69. WeekAvgRumina: make([]int32, 0),
  70. WeekAvgIntake: make([]int32, 0),
  71. WeekAvgReset: make([]int32, 0),
  72. }
  73. for _, v := range p {
  74. dateTime := ""
  75. if v.ActiveTime != "" {
  76. dt, _ := util.TimeParseLocal(LayoutTime, v.ActiveTime)
  77. dateTime = dt.Format(LayoutHour)
  78. }
  79. res.DateTime = append(res.DateTime, dateTime)
  80. res.Rumina = append(res.Rumina, v.RuminaStd)
  81. res.Intake = append(res.Intake, v.IntakeStd)
  82. res.Rest = append(res.Rest, v.RestStd)
  83. res.WeekAvgRumina = append(res.WeekAvgRumina, v.WeekRuminaRate)
  84. res.WeekAvgIntake = append(res.WeekAvgIntake, v.WeekIntakeRate)
  85. res.WeekAvgReset = append(res.WeekAvgReset, v.WeekRestRate)
  86. }
  87. return res
  88. }
  89. type PenBehaviorData struct {
  90. PastureId int64 `json:"pastureId"`
  91. PenId int32 `json:"penId"`
  92. PenName string `json:"penName"`
  93. HeatDate string `json:"heatDate"`
  94. Frameid int32 `json:"frameid"`
  95. CowCount int32 `json:"cowCount"`
  96. AvgHigh int32 `json:"avgHigh"`
  97. SumRumina int32 `json:"sumRumina"`
  98. SumIntake int32 `json:"sumIntake"`
  99. SumRest int32 `json:"sumRest"`
  100. SumGasp int32 `json:"sumGasp"`
  101. RuminaRate int32 `json:"ruminaRate"`
  102. IntakeRate int32 `json:"intakeRate"`
  103. RestRate int32 `json:"restRate"`
  104. GaspRate int32 `json:"gaspRate"`
  105. }