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. DayAvgMilk float32 `json:"dayAvgMilk"`
  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. WeekAvgMilk float32 `json:"weekAvgMilk"`
  18. RuminaStd int32 `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 int32) *PenBehaviorDay {
  28. return &PenBehaviorDay{
  29. PastureId: pastureId,
  30. HeatDate: heatDate,
  31. PenId: penId,
  32. PenName: penName,
  33. CowCount: cowCount,
  34. DayAvgMilk: dayAvgMilk,
  35. DayHigh: dayHigh,
  36. DayRumina: dayRumina,
  37. DayIntake: dayIntake,
  38. DayInactive: dayInactive,
  39. DayGasp: dayGasp,
  40. DayActive: dayActive,
  41. WeekAvgMilk: 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 int32 `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, v.RuminaStd)
  84. }
  85. }
  86. }
  87. return res
  88. }