Forráskód Böngészése

refactor: modify data collection frequency limit

HeWang 6 hónapja
szülő
commit
f8ce72ea18

+ 14 - 0
.idea/dataSources.xml

@@ -15,5 +15,19 @@
       <jdbc-url>jdbc:redis://36.110.106.156:6379/0</jdbc-url>
       <working-dir>$ProjectFileDir$</working-dir>
     </data-source>
+    <data-source source="LOCAL" name="dataclosedloop@36.110.106.156" uuid="cf5c8d28-0670-425d-af03-a6bf1b888cec">
+      <driver-ref>mysql.8</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:mysql://36.110.106.156:3306/dataclosedloop</jdbc-url>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+    <data-source source="LOCAL" name="pji_desktop@10.14.85.240" uuid="a6377c8d-eff0-4172-836c-f79e4bd0b4e7">
+      <driver-ref>mysql.8</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:mysql://10.14.85.240:3306/pji_desktop</jdbc-url>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
   </component>
 </project>

+ 1 - 0
aarch64/pjibot_guide/common/config/c_cloud.go

@@ -63,6 +63,7 @@ type DataDirStruct struct {
 
 type cloudConfig struct {
 	CollectLimit          CollectLimitStruct `yaml:"collect-limit"`
+	CollectNumPlus        CollectLimitStruct `yaml:"collect-num-plus"`
 	DataDir               DataDirStruct      `yaml:"data-dir"`
 	MapBufFiles           []string           `yaml:"map-buf-files"`
 	FullCollect           bool               `yaml:"full-collect"`

+ 1 - 0
aarch64/pjibot_guide/common/config/c_local.go

@@ -20,6 +20,7 @@ type restartCmd struct {
 type localConfig struct {
 	Node                 node       `yaml:"node"`                    // 节点信息
 	RosparamPath         string     `yaml:"rosparam-path"`           // 获取oss配置的url
+	CollectLimitFlag     int        `yaml:"collect-limit-flag"`      // 数采频率限制标志
 	UrlGetOssConfig      string     `yaml:"url-get-oss-config"`      // 获取oss配置的url
 	OssBasePrefix        string     `yaml:"oss-base-prefix"`         // 云端配置文件的位置
 	CloudConfigFilename  string     `yaml:"cloud-config-filename"`   // 云端配置文件名称

+ 23 - 0
aarch64/pjibot_guide/common/service/rosbag_upload.go

@@ -7,6 +7,8 @@ import (
 	"cicv-data-closedloop/common/domain"
 	"cicv-data-closedloop/common/entity"
 	"cicv-data-closedloop/common/util"
+	commonUtil "cicv-data-closedloop/common/util"
+	"encoding/json"
 	"fmt"
 	"os"
 	"path/filepath"
@@ -212,6 +214,8 @@ outLoop:
 			//commonConfig.OssMutex.Unlock()
 		}
 
+		// 数据库中采集数量加一
+		collectNumPlus()
 		// 删除本地所有已上传的bag文件
 		c_log.GlobalLogger.Infof("结束处理窗口,【Lable】=%v,【FaultTime】=%v,【Length】=%v", currentTimeWindow.Labels, currentTimeWindow.FaultTime, currentTimeWindow.Length)
 		c_log.GlobalLogger.Infof("待处理窗口个数为:%v", len(entity.TimeWindowConsumerQueue))
@@ -224,3 +228,22 @@ outLoop:
 		}
 	}
 }
+
+func collectNumPlus() {
+	responseString, err := commonUtil.HttpPostJsonWithHeaders(
+		commonConfig.CloudConfig.CollectNumPlus.Url,
+		map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
+		map[string]string{
+			"snCode": commonConfig.LocalConfig.SecretKey,
+		},
+	)
+	if err != nil {
+		c_log.GlobalLogger.Error("发送http请求修改采集数量失败:", err)
+	}
+	// 解析JSON字符串到Response结构体
+	var resp entity.Response
+	err = json.Unmarshal([]byte(responseString), &resp)
+	if err != nil {
+		c_log.GlobalLogger.Error("解析修改采集数量结果失败:", err)
+	}
+}

+ 32 - 27
aarch64/pjibot_guide/master/package/service/produce_window.go

@@ -141,36 +141,41 @@ 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("采集数量已超过限额,当前周期内不再采集。", resp.Code)
-		return false
+	// 如果开启了采集频率限制,则云端判断采集数量是否超过限额
+	if commonConfig.LocalConfig.CollectLimitFlag == 1 {
+		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("采集数量已超过限额,当前周期内不再采集。", resp.Code)
+			return false
+		}
 	}
+
+	// 本地判断是否存在正在处理的数据
 	if len(entity.TimeWindowConsumerQueue) != 0 {
-		c_log.GlobalLogger.Info("存在正在处理的数据,此次不再采集。", resp.Code)
+		c_log.GlobalLogger.Info("存在正在处理的数据,此次不再采集。")
 		return false
 	}
 

+ 2 - 0
aarch64/pjibot_guide/引导机器人默认配置文件-cloud-config.yaml

@@ -5,6 +5,8 @@ collect-limit:
   week: 3
   month: 12
   year: 144
+collect-num-plus:
+  url: http://36.110.106.142:12341/web_server/collect_limit/plus_collect_num
 monitor:
   url: http://36.110.106.142:12341/web_server/monitor/insert
 platform:

+ 2 - 0
aarch64/pjibot_guide/引导机器人默认配置文件-local-config.yaml

@@ -3,6 +3,8 @@ node:
   name: node1
   ip: 192.168.1.104
 rosparam-path: /opt/ros/melodic/bin/rosparam
+# 数采频率限制标志
+collect-limit-flag: 0 # 0 - 关闭数采频率限制  1 - 开启数采频率限制
 # 获取oss连接信息的接口url
 url-get-oss-config: http://36.110.106.156:18379/oss/pji?token=nXonLUcMtGcrQqqKiyygIwyVbvizE0wD
 # 朴津机器人数据前缀