neck_ring_habit_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package mqtt
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "kpt-pasture/model"
  6. "testing"
  7. )
  8. func TestFirstFilterUpdate(t *testing.T) {
  9. newNeckActiveHabitList := []*model.NeckActiveHabit{
  10. {
  11. Id: 1,
  12. NeckRingNumber: "123",
  13. High: 731,
  14. Rumina: 20,
  15. Intake: 0,
  16. Inactive: 65,
  17. Gasp: 1,
  18. Other: 0,
  19. Active: 27,
  20. FilterHigh: 0,
  21. FilterRumina: 0,
  22. FilterChew: 0,
  23. },
  24. {
  25. Id: 2,
  26. NeckRingNumber: "123",
  27. High: 318,
  28. Rumina: 55,
  29. Intake: 2,
  30. Inactive: 99,
  31. Gasp: 1,
  32. Other: 0,
  33. Active: 18,
  34. FilterHigh: 0,
  35. FilterRumina: 0,
  36. FilterChew: 0,
  37. },
  38. {
  39. Id: 2,
  40. NeckRingNumber: "123",
  41. High: 254,
  42. Rumina: 68,
  43. Intake: 0,
  44. Inactive: 114,
  45. Gasp: 22,
  46. Other: 0,
  47. Active: 6,
  48. FilterHigh: 0,
  49. FilterRumina: 0,
  50. FilterChew: 0,
  51. },
  52. }
  53. test(newNeckActiveHabitList)
  54. }
  55. func test(newNeckActiveHabitList []*model.NeckActiveHabit) {
  56. var (
  57. neckRingNumber string
  58. filterHigh float64
  59. filterRumina float64
  60. filterChew float64
  61. )
  62. // 活动量滤波
  63. for _, v := range newNeckActiveHabitList {
  64. if v.FilterHigh > 0 {
  65. filterHigh = float64(v.FilterHigh)
  66. } else {
  67. if v.NeckRingNumber == neckRingNumber {
  68. filterHigh = computeIfPositiveElse(float64(v.High), filterHigh, 0.23, 0.77)
  69. } else {
  70. filterHigh = float64(v.High)
  71. }
  72. }
  73. if v.FilterRumina > 0 {
  74. filterRumina = float64(v.FilterRumina)
  75. } else {
  76. if v.NeckRingNumber == neckRingNumber {
  77. filterRumina = computeIfPositiveElse(float64(v.Rumina), filterRumina, 0.33, 0.67)
  78. } else {
  79. filterRumina = float64(v.Rumina)
  80. }
  81. }
  82. if v.FilterChew > 0 {
  83. filterChew = float64(v.FilterChew)
  84. } else {
  85. if v.NeckRingNumber == neckRingNumber {
  86. filterChew = computeIfPositiveElse(float64(v.Rumina+v.Intake), filterChew, 0.33, 0.67)
  87. } else {
  88. filterChew = float64(v.Rumina + v.Intake)
  89. }
  90. }
  91. // Select("filter_high", "filter_rumina", "filter_chew")
  92. b, _ := json.Marshal(v)
  93. fmt.Println("======v=====", string(b))
  94. }
  95. }