From d187cd0fa46d01ec293e2aba1a1e54fdfab2ec80 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期日, 03 十一月 2024 20:37:26 +0800
Subject: [PATCH] 数据点位过滤修复,使用了计算规则的点位存储_n的。

---
 collect/src/main/java/com/qianwen/mdc/collect/vo/WorkstationDatapointsVO.java    |   73 ++++++++++++++++++++++++++++--------
 collect/src/main/java/com/qianwen/mdc/collect/service/IOTMqttReceiveService.java |   20 +++++----
 collect/src/main/resources/application-dev.yml                                   |    2 
 3 files changed, 69 insertions(+), 26 deletions(-)

diff --git a/collect/src/main/java/com/qianwen/mdc/collect/service/IOTMqttReceiveService.java b/collect/src/main/java/com/qianwen/mdc/collect/service/IOTMqttReceiveService.java
index be25cb6..31b7301 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/service/IOTMqttReceiveService.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/service/IOTMqttReceiveService.java
@@ -19,6 +19,7 @@
 
 @Service
 public class IOTMqttReceiveService {
+	public static final String NEWDP_SUFFIX = "_n";//璁$畻瑙勫垯浣跨敤涔嬪悗鏂版暟鎹偣鐨勭粨灏�
 	private static final Logger log = LoggerFactory.getLogger(IOTMqttReceiveService.class);
 	@Autowired
 	private CollectDataService collectDataService;
@@ -27,6 +28,7 @@
 	private PackedDataService packedDataService;
 	@Autowired
     private WorkstationDatapointsService dpService;
+	
 	/**
 	 * 澶勭悊鏀跺埌鐨勬秷鎭�,瀵瑰簲TelemetryDataPostingConsumer
 	 * @param payload
@@ -54,15 +56,13 @@
         Set<String> keySet = jsonObj.keySet();
         String[] keys = keySet.toArray(new String[] {});
         
-        //WorkstationDatapointsVO dpVo;
         
-        final String NEWDP_SUFFIX = "_n";//璁$畻瑙勫垯浣跨敤涔嬪悗鏂版暟鎹偣鐨勭粨灏�
         for(String key : keys) {
         	String appId = key;//iot绯荤粺涓殑搴旂敤id锛屾湰搴旂敤涓簲璇ョ敤琛ㄥ幓瀵瑰簲
         	
-        	
-        	//TODO 鑾峰彇宸ヤ綅鏁版嵁鐐归厤缃�,鍙繚瀛橀厤缃ソ鐨勬暟鎹偣锛屾病鏈夐厤缃殑閲囬泦鏁版嵁鎶涘純銆�
+        	//鑾峰彇宸ヤ綅鏁版嵁鐐归厤缃�,鍙繚瀛橀厤缃ソ鐨勬暟鎹偣锛屾病鏈夐厤缃殑閲囬泦鏁版嵁鎶涘純銆�
         	final WorkstationDatapointsVO dpVo = dpService.getDatapointsByAppIdFromCache(appId);
+        	//final WorkstationDatapointsVO dpVo = dpService.getDataPointByAppId(appId);
         	if(dpVo == null) {
         		//宸ヤ綅娌℃湁瀹氫箟杩囨暟鎹偣鎴栬�卆ppId涓嶅尮閰�
         		log.warn("appId={}鏈壘鍒版暟鎹偣瀹氫箟璁板綍锛屼涪寮冩暟鎹�",appId);
@@ -86,14 +86,16 @@
 	        	
 	        	Set<String> valueKeySet = values.keySet();
 	        	valueKeySet.forEach(valueKey ->{
-	        		String oriValueKey = valueKey;;//鐢变簬浣跨敤璁$畻瑙勫垯鐨勯噰闆嗙偣鍚嶇О浼氬悗闈㈠鍔犱竴涓�"_n",鎵�浠ヨ繖涓猳riValueKey浠h〃娌℃湁澧炲姞"_n"鐨�
-	        		if(StringUtils.endsWith(valueKey, NEWDP_SUFFIX)) {
-	        			oriValueKey = StringUtils.removeEnd(valueKey, NEWDP_SUFFIX);
-	        		}
-	        		if(!dpVo.containsDataPoint(oriValueKey)) {
+	        		if(!dpVo.containsDataPoint(valueKey)) {
 	    				//濡傛灉涓嶅瓨鍦ㄨ鏁版嵁鐐归厤缃紝璇ユ暟鎹洿鎺ュ拷鐣�
 	    				return;
 	    			}
+	        		
+	        		String oriValueKey = valueKey;//鐢变簬浣跨敤璁$畻瑙勫垯鐨勯噰闆嗙偣鍚嶇О浼氬悗闈㈠鍔犱竴涓�"_n",鎵�浠ヨ繖涓猳riValueKey浠h〃娌℃湁澧炲姞"_n"鐨�
+	        		if(StringUtils.endsWith(valueKey, NEWDP_SUFFIX)) {
+	        			oriValueKey = StringUtils.removeEnd(valueKey, NEWDP_SUFFIX);
+	        		}
+	        		
 	        		tdataItem.addPoint(oriValueKey,values.getString(valueKey));//浣跨敤鍘熷閰嶇疆鐐逛繚鎸佷繚瀛樻暟鎹�
 	        	});
 	        	
diff --git a/collect/src/main/java/com/qianwen/mdc/collect/vo/WorkstationDatapointsVO.java b/collect/src/main/java/com/qianwen/mdc/collect/vo/WorkstationDatapointsVO.java
index 7404419..251727e 100644
--- a/collect/src/main/java/com/qianwen/mdc/collect/vo/WorkstationDatapointsVO.java
+++ b/collect/src/main/java/com/qianwen/mdc/collect/vo/WorkstationDatapointsVO.java
@@ -10,7 +10,6 @@
 import com.alibaba.fastjson.JSONObject;
 
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONUtil;
 import io.swagger.annotations.ApiModelProperty;
 
 
@@ -42,6 +41,8 @@
     
     //private List<DataPoint> points = null;
     private List<String> points = new ArrayList<>();
+    
+    private List<DataPoint> dpList = new ArrayList<>();
 
 	public WorkstationDatapointsVO(long workstationId, String appId,String dpConfig) {
 		super();
@@ -60,13 +61,18 @@
 		
 		points = new ArrayList<>();
 		JSONObject ptObj;
+		String dpName;
 		for(int i=0;i<ptArr.size();i++) {
 			ptObj = ptArr.getJSONObject(i);
 			
-			//DataPoint dp = new DataPoint();
-			//dp.setDpName(ptObj.getString("dpName"));
+			dpName = ptObj.getString("dpName");
+			points.add(dpName);
 			
-			points.add(ptObj.getString("dpName"));
+			DataPoint dp = new DataPoint();
+			dp.setDpName(dpName);
+			dp.setRuleContent(ptObj.getString("ruleContent"));
+			dpList.add(dp);
+			
 		}
 	}
 
@@ -108,28 +114,51 @@
 	 * @param dpName
 	 * @return
 	 */
-	public boolean containsDataPoint(String dpName) {
+	public boolean containsDataPointOld(String dpName) {
 		if(ObjectUtil.isEmpty(points)) {
 			return false;
 		}
 		
 		return points.contains(dpName);
-		/*
-		for(String dpn : points) {
-			if(StringUtils.equals(dpn, dpName)) {
-				return true;
+		
+	}
+
+	public boolean containsDataPoint(String receiveDpName) {
+		if(ObjectUtil.isEmpty(dpList)) {
+			return false;
+		}
+		if(receiveDpName.startsWith("DeviceStatus")) {
+			System.out.println("recname="+receiveDpName);
+		}
+		for(DataPoint dp : dpList) {
+			//鏃犺绠楄鍒欙紝鐩存帴鏁版嵁鐐瑰悕绉板尮閰�
+			if(!dp.hasRuleContent()){
+				if(StringUtils.equals(dp.getDpName(), receiveDpName)){
+					return true;
+				}
+				
+			}else {
+				//鏈夎绠楄鍒欙紝鐢ㄦ暟鎹偣鍚嶇О_n鍖归厤
+				if(StringUtils.equals(dp.getDpName()+"_n", receiveDpName)) {
+					return true;
+				}
 			}
 		}
 		return false;
-		*/
+		
 	}
-
-    
 }
-/*
-class DataPoint{
-	private String dpName;
 
+class DataPoint implements Serializable{
+	private String dpName;
+	private String ruleContent;
+	
+	/**
+	 * 鏁版嵁鐐规槸鍚﹀寘鍚绠楄鍒�
+	 */
+	public boolean hasRuleContent() {
+		return StringUtils.isNotBlank(StringUtils.trim(ruleContent));
+	}
 	public String getDpName() {
 		return dpName;
 	}
@@ -137,7 +166,19 @@
 	public void setDpName(String dpName) {
 		this.dpName = dpName;
 	}
+
+	public String getRuleContent() {
+		return ruleContent;
+	}
+
+	public void setRuleContent(String ruleContent) {
+		this.ruleContent = ruleContent;
+	}
+	@Override
+	public String toString() {
+		return "DataPoint [dpName=" + dpName + ", ruleContent=" + ruleContent + "]";
+	}
 	
 	
 }
-*/
+
diff --git a/collect/src/main/resources/application-dev.yml b/collect/src/main/resources/application-dev.yml
index d47b0e7..a824160 100644
--- a/collect/src/main/resources/application-dev.yml
+++ b/collect/src/main/resources/application-dev.yml
@@ -27,7 +27,7 @@
   # mysql
 datasource:
   type: mysql
-  url: jdbc:mysql://120.46.212.231:3306/smart_boot?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+  url: jdbc:mysql://120.46.212.231:3306/smartman?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
   port: 3306
   username: qwmdc
   password: Kknd_1234

--
Gitblit v1.9.3