123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package crontab
- import (
- "encoding/json"
- "fmt"
- "kpt-pasture/model"
- "testing"
- )
- func TestEntry_SameTimePlan(t *testing.T) {
- neckActiveHabit := make([]*model.NeckActiveHabit, 0)
- neckActiveHabit = append(neckActiveHabit, &model.NeckActiveHabit{
- Id: 14489593,
- CowId: 71,
- High: 1611,
- Rumina: 32,
- Intake: 67,
- FilterHigh: 0,
- FilterRumina: 0,
- FilterChew: 0,
- }, &model.NeckActiveHabit{
- Id: 14490832,
- CowId: 71,
- High: 1295,
- Rumina: 26,
- Intake: 46,
- FilterRumina: 0,
- FilterHigh: 0,
- FilterChew: 0,
- })
- var (
- filterValues = make(map[int64]*model.NeckActiveHabit)
- )
- // 活动量滤波
- for _, v := range neckActiveHabit {
- prev, ok := filterValues[v.CowId]
- if !ok {
- if v.FilterHigh <= 0 {
- v.FilterHigh = v.High
- }
- if v.FilterRumina <= 0 {
- v.FilterRumina = v.Rumina
- }
- if v.FilterChew <= 0 {
- v.FilterChew = v.Rumina + v.Intake
- }
- filterValues[v.CowId] = v
- continue
- }
- if v.FilterHigh <= 0 {
- v.FilterHigh = int32(mqtt.computeIfPositiveElse(float64(v.High), float64(prev.FilterHigh), 0.23, 0.77))
- }
- if v.FilterRumina <= 0 {
- v.FilterRumina = int32(mqtt.computeIfPositiveElse(float64(v.Rumina), float64(prev.FilterRumina), 0.33, 0.67))
- }
- if v.FilterChew <= 0 {
- v.FilterChew = int32(mqtt.computeIfPositiveElse(float64(v.Rumina+v.Intake), float64(prev.FilterChew), 0.33, 0.67))
- }
- // 更新过滤值
- filterValues[v.CowId] = v
- }
- b, _ := json.Marshal(neckActiveHabit)
- fmt.Println(string(b))
- }
|