|
@@ -4,9 +4,11 @@ import (
|
|
|
commonConfig "cicv-data-closedloop/aarch64/pji/common/config"
|
|
|
commonService "cicv-data-closedloop/aarch64/pji/common/service"
|
|
|
masterConfig "cicv-data-closedloop/aarch64/pji/master/package/config"
|
|
|
+ "cicv-data-closedloop/amd64/dispatch_server/package/util"
|
|
|
"cicv-data-closedloop/common/config/c_log"
|
|
|
"cicv-data-closedloop/common/entity"
|
|
|
commonUtil "cicv-data-closedloop/common/util"
|
|
|
+ "encoding/json"
|
|
|
"github.com/bluenviron/goroslib/v2"
|
|
|
"github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
|
|
|
"sync"
|
|
@@ -37,9 +39,11 @@ func PrepareTimeWindowProducerQueue() {
|
|
|
for _, f := range masterConfig.RuleOfObstacleDetection {
|
|
|
faultLabel = f(data)
|
|
|
if faultLabel != "" {
|
|
|
- saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
- subscribersTimes[i] = time.Now()
|
|
|
- break
|
|
|
+ if canCollect() {
|
|
|
+ saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
+ subscribersTimes[i] = time.Now()
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
subscribersMutexes[i].Unlock()
|
|
@@ -118,3 +122,34 @@ func getTopicsOfNode(faultLabel string) (masterTopics []string, slaveTopics []st
|
|
|
}
|
|
|
return faultCodeTopics, nil
|
|
|
}
|
|
|
+
|
|
|
+// 判断采集包数量是否超过限额
|
|
|
+func canCollect() bool {
|
|
|
+ responseString, err := commonUtil.HttpPostJsonWithHeaders(
|
|
|
+ commonConfig.CloudConfig.CollectLimit.Url,
|
|
|
+ map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
|
+ map[string]string{
|
|
|
+ "snCode": commonConfig.LocalConfig.SecretKey,
|
|
|
+ "collectLimitDay": util.ToString(commonConfig.CloudConfig.CollectLimit.Day),
|
|
|
+ "collectLimitWeek": util.ToString(commonConfig.CloudConfig.CollectLimit.Week),
|
|
|
+ "collectLimitMonth": util.ToString(commonConfig.CloudConfig.CollectLimit.Month),
|
|
|
+ "collectLimitYear": util.ToString(commonConfig.CloudConfig.CollectLimit.Year),
|
|
|
+ },
|
|
|
+ )
|
|
|
+ if err != nil {
|
|
|
+ c_log.GlobalLogger.Error("发送http请求获取是否允许采集失败:", err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ // 解析JSON字符串到Response结构体
|
|
|
+ var resp entity.Response
|
|
|
+ err = json.Unmarshal([]byte(responseString), &resp)
|
|
|
+ if err != nil {
|
|
|
+ c_log.GlobalLogger.Error("解析是否允许采集接口返回结果失败:", err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if resp.Code != 200 { // 不是200 代表不允许采集
|
|
|
+ c_log.GlobalLogger.Info("采集数量已超过限额,当前周期内不再采集。")
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+}
|