pen_behavior_day.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package model
  2. import pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  3. type PenBehaviorDay struct {
  4. Id int64 `json:"id"`
  5. PastureId int64 `json:"pastureId"`
  6. HeatDate string `json:"heatDate"`
  7. PenId int32 `json:"penId"`
  8. PenName string `json:"penName"`
  9. CowCount int32 `json:"cowCount"`
  10. DayMilk float32 `json:"dayMilk"`
  11. DayHigh int32 `json:"dayHigh"`
  12. DayRumina int32 `json:"dayRumina"`
  13. DayIntake int32 `json:"dayIntake"`
  14. DayInactive int32 `json:"dayInactive"`
  15. DayGasp int32 `json:"dayGasp"`
  16. DayActive int32 `json:"dayActive"`
  17. WeekMilk float32 `json:"weekMilk"`
  18. RuminaStd float64 `json:"ruminaStd"`
  19. CreatedAt int64 `json:"createdAt"`
  20. UpdatedAt int64 `json:"updatedAt"`
  21. }
  22. func (p *PenBehaviorDay) TableName() string {
  23. return "pen_behavior_day"
  24. }
  25. func NewPenBehaviorDay(pastureId int64, heatDate string, penId int32, penName string, cowCount int32, dayAvgMilk float32,
  26. dayHigh int32, dayRumina int32, dayIntake int32, dayInactive int32, dayGasp int32, dayActive int32, weekAvgMilk float32,
  27. ruminaStd float64) *PenBehaviorDay {
  28. return &PenBehaviorDay{
  29. PastureId: pastureId,
  30. HeatDate: heatDate,
  31. PenId: penId,
  32. PenName: penName,
  33. CowCount: cowCount,
  34. DayMilk: dayAvgMilk,
  35. DayHigh: dayHigh,
  36. DayRumina: dayRumina,
  37. DayIntake: dayIntake,
  38. DayInactive: dayInactive,
  39. DayGasp: dayGasp,
  40. DayActive: dayActive,
  41. WeekMilk: weekAvgMilk,
  42. RuminaStd: ruminaStd,
  43. }
  44. }
  45. type PenBehaviorDaySlice []*PenBehaviorDay
  46. type PenBehaviorDayModel struct {
  47. HeatDate string `json:"heatDate"`
  48. PenId int32 `json:"penId"`
  49. PenName string `json:"penName"`
  50. CowCount int32 `json:"cowCount"`
  51. DayMilk float32 `json:"dayMilk"`
  52. DayHigh int32 `json:"dayHigh"`
  53. DayRumina int32 `json:"dayRumina"`
  54. DayIntake int32 `json:"dayIntake"`
  55. DayInactive int32 `json:"dayInactive"`
  56. DayChew int32 `json:"dayChew"`
  57. DayActive int32 `json:"dayActive"`
  58. DayImmobility int32 `json:"dayImmobility"`
  59. RuminaStd float64 `json:"ruminaStd"`
  60. }
  61. type PenBehaviorDayModelSlice []*PenBehaviorDayModel
  62. func (p PenBehaviorDayModelSlice) ToPB(dataTimeRange []string) *pasturePb.BarnMonitorItem {
  63. res := &pasturePb.BarnMonitorItem{
  64. Headers: dataTimeRange,
  65. DateTime: make([]string, 0),
  66. DayMilk: make([]float32, 0),
  67. DayRumina: make([]int32, 0),
  68. DayIntake: make([]int32, 0),
  69. DayImmobility: make([]int32, 0),
  70. DayGasp: make([]int32, 0),
  71. DayChew: make([]int32, 0),
  72. DayStd: make([]int32, 0),
  73. }
  74. for _, dt := range dataTimeRange {
  75. for _, v := range p {
  76. if dt == v.HeatDate {
  77. res.DateTime = append(res.DateTime, v.HeatDate)
  78. res.DayMilk = append(res.DayMilk, v.DayMilk)
  79. res.DayRumina = append(res.DayRumina, v.DayRumina)
  80. res.DayIntake = append(res.DayIntake, v.DayIntake)
  81. res.DayImmobility = append(res.DayImmobility, v.DayImmobility)
  82. res.DayChew = append(res.DayChew, v.DayChew)
  83. res.DayStd = append(res.DayStd, int32(v.RuminaStd))
  84. }
  85. }
  86. }
  87. return res
  88. }