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)) }