work_cron_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package crontab
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "kpt-pasture/model"
  6. "testing"
  7. )
  8. func TestEntry_SameTimePlan(t *testing.T) {
  9. neckActiveHabit := make([]*model.NeckActiveHabit, 0)
  10. neckActiveHabit = append(neckActiveHabit, &model.NeckActiveHabit{
  11. Id: 14489593,
  12. CowId: 71,
  13. High: 1611,
  14. Rumina: 32,
  15. Intake: 67,
  16. FilterHigh: 0,
  17. FilterRumina: 0,
  18. FilterChew: 0,
  19. }, &model.NeckActiveHabit{
  20. Id: 14490832,
  21. CowId: 71,
  22. High: 1295,
  23. Rumina: 26,
  24. Intake: 46,
  25. FilterRumina: 0,
  26. FilterHigh: 0,
  27. FilterChew: 0,
  28. })
  29. var (
  30. filterValues = make(map[int64]*model.NeckActiveHabit)
  31. )
  32. // 活动量滤波
  33. for _, v := range neckActiveHabit {
  34. prev, ok := filterValues[v.CowId]
  35. if !ok {
  36. if v.FilterHigh <= 0 {
  37. v.FilterHigh = v.High
  38. }
  39. if v.FilterRumina <= 0 {
  40. v.FilterRumina = v.Rumina
  41. }
  42. if v.FilterChew <= 0 {
  43. v.FilterChew = v.Rumina + v.Intake
  44. }
  45. filterValues[v.CowId] = v
  46. continue
  47. }
  48. if v.FilterHigh <= 0 {
  49. v.FilterHigh = int32(mqtt.computeIfPositiveElse(float64(v.High), float64(prev.FilterHigh), 0.23, 0.77))
  50. }
  51. if v.FilterRumina <= 0 {
  52. v.FilterRumina = int32(mqtt.computeIfPositiveElse(float64(v.Rumina), float64(prev.FilterRumina), 0.33, 0.67))
  53. }
  54. if v.FilterChew <= 0 {
  55. v.FilterChew = int32(mqtt.computeIfPositiveElse(float64(v.Rumina+v.Intake), float64(prev.FilterChew), 0.33, 0.67))
  56. }
  57. // 更新过滤值
  58. filterValues[v.CowId] = v
  59. }
  60. b, _ := json.Marshal(neckActiveHabit)
  61. fmt.Println(string(b))
  62. }