فهرست منبع

rwd: 修改实时数据\分精度数据\控制接口请求参数对应信息点值不是表号功能号时的报错

yaoll 4 سال پیش
والد
کامیت
6349110d9a

+ 7 - 2
dmp-rwd/src/main/java/com/persagy/dmp/rwd/service/iot/CurrentIotService.java

@@ -10,6 +10,7 @@ import com.persagy.dmp.common.http.HttpUtils;
 import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.rwd.config.RwdConstants;
 import com.persagy.dmp.rwd.model.iot.CurrentDataModel;
+import com.persagy.dmp.rwd.util.MeterUtils;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.stereotype.Service;
@@ -67,12 +68,16 @@ public class CurrentIotService extends BaseIotService {
 //			}
 
 			String infoCodeValue = getInfoCodeValue(groupCode, projectId, model.getObjectId(), infoCode);
-			if (infoCodeValue == null) {
+			if (infoCodeValue == null || "".equals(infoCode.trim())) {
 				model.setError("value of infoCode[" + model.getObjectId() + ":" + infoCode + "] is null");
 				continue;
 			}
-
+			// 判断信息点的值是不是表号-功能号格式
 			model.setInfoValue(infoCodeValue);
+			if (!MeterUtils.matchFormat(infoCodeValue)) {
+				model.setError("value of infoCode[" + model.getObjectId() + ":" + infoCode + "][ " + infoCodeValue + "] 不是正确的表号功能号");
+				continue;
+			}
 			parameters.add(new PointParam(model.getMeter(), model.getFunction()));
 		}
 

+ 12 - 2
dmp-rwd/src/main/java/com/persagy/dmp/rwd/service/iot/HistoryIotService.java

@@ -6,14 +6,18 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.common.json.JacksonMapper;
 import com.persagy.common.web.ListResponse;
-import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.common.http.HttpUtils;
+import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.rwd.config.RwdConstants;
 import com.persagy.dmp.rwd.model.iot.history.InfoCodeModel;
 import com.persagy.dmp.rwd.model.iot.history.RequestModel;
+import com.persagy.dmp.rwd.util.MeterUtils;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 @Service
 public class HistoryIotService extends BaseIotService {
@@ -79,6 +83,12 @@ public class HistoryIotService extends BaseIotService {
 			param.setError("value of infoCode[" + objectId + ":" + infoCode + "] is null");
 			return;
 		}
+		// 判断信息点的值是不是表号-功能号格式
+		if (!MeterUtils.matchFormat(infoCodeValue)) {
+			param.setStatus("error");
+			param.setError("value of infoCode[" + objectId + ":" + infoCode + "][ " + infoCodeValue + "] 不是正确的表号功能号");
+			return;
+		}
 
 		int idx = infoCodeValue.lastIndexOf("-");
 		if (idx == -1) {

+ 8 - 3
dmp-rwd/src/main/java/com/persagy/dmp/rwd/service/iot/SettingIotService.java

@@ -6,10 +6,11 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.common.json.JacksonMapper;
 import com.persagy.common.web.ListResponse;
-import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.common.http.HttpUtils;
+import com.persagy.dmp.config.DmpParameterStorage;
 import com.persagy.dmp.rwd.config.RwdConstants;
 import com.persagy.dmp.rwd.model.iot.SettingDataModel;
+import com.persagy.dmp.rwd.util.MeterUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -42,10 +43,14 @@ public class SettingIotService extends BaseIotService {
 				continue;
 			}
 
-			int idx = infoCodeValue.lastIndexOf("-");
-			if (idx == -1) {
+			// 判断信息点的值是不是表号-功能号格式
+			if (!MeterUtils.matchFormat(infoCodeValue)) {
+				model.setStatus("error");
+				model.setError("value of infoCode[" + objectId + ":" + infoCode + "][ " + infoCodeValue + "] 不是正确的表号功能号");
 				continue;
 			}
+
+			int idx = infoCodeValue.lastIndexOf("-");
 			String meter = infoCodeValue.substring(0, idx);
 			String function = infoCodeValue.substring(idx + 1);
 			model.setMeter(meter);

+ 19 - 0
dmp-rwd/src/main/java/com/persagy/dmp/rwd/util/MeterUtils.java

@@ -0,0 +1,19 @@
+package com.persagy.dmp.rwd.util;
+
+/**
+ * @author: yaoll
+ * @date: 2020-12-16
+ * @verison: 1.0
+ */
+public class MeterUtils {
+
+	public static boolean matchFormat(String infoCodeValue){
+		// 判断信息点的值是不是表号-功能号格式
+		// 包含中划线且中划线不在开头结尾
+		int idx = infoCodeValue.indexOf("-");
+		if (idx < 1 || idx == infoCodeValue.length() - 1) {
+			return false;
+		}
+		return true;
+	}
+}