modelRT/pool/concurrency_anchor_parse.go

44 lines
1.2 KiB
Go
Raw Normal View History

2024-12-18 16:25:49 +08:00
// Package pool define concurrency call function in ants
package pool
import (
"fmt"
"modelRT/config"
"modelRT/diagram"
2024-12-18 16:25:49 +08:00
"go.uber.org/zap"
)
var AnchorFunc = func(anchorConfig interface{}) {
logger := zap.L()
paramConfig, ok := anchorConfig.(config.AnchorParamConfig)
if !ok {
logger.Error("conversion model anchor param config type failed")
return
}
calculateFunc := paramConfig.CalculateFunc
for {
// TODO 通过 api 循环获取 vlaue 实时值
var value float32
anchorName, err := diagram.GetAnchorValue(paramConfig.UUID)
if err != nil {
logger.Error("can not get anchor value from map by uuid", zap.String("uuid", paramConfig.UUID), zap.Error(err))
continue
}
2024-12-18 16:25:49 +08:00
if anchorName != paramConfig.AnchorName {
logger.Error("anchor name not equal param config anchor value", zap.String("map_anchor_name", anchorName), zap.String("param_anchor_name", paramConfig.AnchorName))
continue
}
upperLimitVal := paramConfig.CompareValUpperLimit
lowerlimitVal := paramConfig.CompareValLowerLimit
compareValue := calculateFunc(value, paramConfig.CalculateParams...)
if compareValue > upperLimitVal || compareValue < lowerlimitVal {
fmt.Println("log warning")
}
}
2024-12-18 16:25:49 +08:00
}