Browse Source

小数处理

menglu 3 years ago
parent
commit
d1ff345800

+ 1 - 1
ibms-data-sdk/pom.xml

@@ -214,7 +214,7 @@
 		<dependency>
 			<groupId>com.persagy</groupId>
 			<artifactId>sailfish</artifactId>
-			<version>0.0.29</version>
+			<version>0.0.30</version>
 		</dependency>
 	</dependencies>
 

+ 17 - 16
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java

@@ -39,7 +39,7 @@ public class RWDLoadUtil {
 		{
 			JSONArray classArray = FastJsonReaderUtil.Instance().ReadJSONArray(new File(validPath + Constant.getSeperator() + "classArray.json"));
 			{
-				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet SceneDataSet = new SceneDataSet(false, "rwd/class");
 				SceneDataSet.set = RWDUtil.array2SDOList(classArray);
 				Repository.classArray = SceneDataSet;
 			}
@@ -95,7 +95,7 @@ public class RWDLoadUtil {
 							array.add(info);
 						}
 					}
-					SceneDataSet SceneDataSet = new SceneDataSet(false);
+					SceneDataSet SceneDataSet = new SceneDataSet(false, "rwd/info/" + code);
 					SceneDataSet.set = RWDUtil.array2SDOList(array);
 					infoArrayDic.put(code, SceneDataSet);
 					infoJsonArray.put(code, array);
@@ -109,6 +109,7 @@ public class RWDLoadUtil {
 
 		String objectPath = validPath + Constant.getSeperator() + "object";
 		{
+			Repository.objectArrayAll = new SceneDataSet(false, "rwd/object/all");
 			File root = new File(objectPath);
 			File[] files = root.listFiles();
 			Map<String, SceneDataSet> objectArrayDic = new ConcurrentHashMap<String, SceneDataSet>();
@@ -165,7 +166,7 @@ public class RWDLoadUtil {
 					arrayItem.put("数据字典类型名称", className);
 					Repository.id2object.put(id, arrayItem);
 				}
-				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet SceneDataSet = new SceneDataSet(false, "rwd/object/" + code);
 				SceneDataSet infoArray = Repository.infoArrayDic.get(code);
 				for (SceneDataObject infoJSON : infoArray.set) {
 					if (RWDUtil.getInfoType(infoJSON) != 0) {
@@ -184,7 +185,7 @@ public class RWDLoadUtil {
 				String objType = Repository.code2objTypeMap.get(code);
 				if (objType != null) {
 					if (!objectArrayDic.containsKey(objType)) {
-						objectArrayDic.put(objType, new SceneDataSet(false));
+						objectArrayDic.put(objType, new SceneDataSet(false, "rwd/object/" + objType));
 					}
 					objectArrayDic.get(objType).set.addAll(SceneDataSet.set);
 					for (String col : SceneDataSet.getColChange().keySet()) {
@@ -219,19 +220,19 @@ public class RWDLoadUtil {
 			for (File dir : dirs) {
 				File[] files = dir.listFiles();
 				Map<String, SceneDataSet> oneDic = new ConcurrentHashMap<String, SceneDataSet>();
-				SceneDataSet graphCodeSet = new SceneDataSet(false);
+				SceneDataSet graphCodeSet = new SceneDataSet(false, "rwd/relation/" + dir.getName());
 				for (File file : files) {
 					int index_ = file.getName().indexOf('.');
 					String code = file.getName().substring(0, index_);
 					log.info(relationPath + Constant.getSeperator() + "" + dir.getName() + Constant.getSeperator() + file.getName());
 					JSONArray array = FastJsonReaderUtil.Instance().ReadJSONArray(
 							new File(relationPath + Constant.getSeperator() + "" + dir.getName() + Constant.getSeperator() + file.getName()));
-					SceneDataSet SceneDataSet = new SceneDataSet(false);
+					SceneDataSet SceneDataSet = new SceneDataSet(false, "rwd/relation/" + dir.getName() + "/" + code);
 					SceneDataSet.set = RWDUtil.array2SDOList(array);
 					oneDic.put(code, SceneDataSet);
 					graphCodeSet.set.addAll(SceneDataSet.set);
 					if (!relCodeDic.containsKey(code)) {
-						relCodeDic.put(code, new SceneDataSet(false));
+						relCodeDic.put(code, new SceneDataSet(false, "rwd/relation/" + code));
 					}
 					relCodeDic.get(code).set.addAll(SceneDataSet.set);
 					Repository.relationAll.set.addAll(SceneDataSet.set);
@@ -560,7 +561,7 @@ public class RWDLoadUtil {
 		{
 			JSONArray classArray = FastJsonReaderUtil.Instance().ReadJSONArray(new File(validPath + Constant.getSeperator() + "classArray.json"));
 			{
-				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet SceneDataSet = new SceneDataSet(false, "zkt-class");
 				SceneDataSet.set = RWDUtil.array2SDOList(classArray);
 				Repository.ZKTClassArray = SceneDataSet;
 			}
@@ -578,7 +579,7 @@ public class RWDLoadUtil {
 				log.info(objectPath + Constant.getSeperator() + ibmsSceneCode + " " + ibmsClassCode);
 				JSONArray array = FastJsonReaderUtil.Instance().ReadJSONArray(
 						new File(objectPath + Constant.getSeperator() + ibmsSceneCode + Constant.getSeperator() + ibmsClassCode + ".json"));
-				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet SceneDataSet = new SceneDataSet(false, "zkt-object" + "/" + ibmsSceneCode + "/" + ibmsClassCode);
 				SceneDataSet infoArray = Repository.infoArrayDic.get(code);
 				for (SceneDataObject infoJSON : infoArray.set) {
 					if (RWDUtil.getInfoType(infoJSON) != 0) {
@@ -628,7 +629,7 @@ public class RWDLoadUtil {
 		}
 		{
 			JSONArray array = FastJsonReaderUtil.Instance().ReadJSONArray(new File(validPath + Constant.getSeperator() + "alarmTypeArray.json"));
-			SceneDataSet SceneDataSet = new SceneDataSet(false);
+			SceneDataSet SceneDataSet = new SceneDataSet(false, "ibms-alarm-type");
 			SceneDataSet.set = RWDUtil.array2SDOList(array);
 			Repository.ZKTAlarmTypeArray = SceneDataSet;
 		}
@@ -636,7 +637,7 @@ public class RWDLoadUtil {
 			JSONArray alarmConfigArray = FastJsonReaderUtil.Instance()
 					.ReadJSONArray(new File(validPath + Constant.getSeperator() + "zkt_alarm_config.json"));
 			{
-				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet SceneDataSet = new SceneDataSet(false, "alarmConfig");
 				SceneDataSet.set = RWDUtil.array2SDOList(alarmConfigArray);
 				Repository.alarmConfigArray = SceneDataSet;
 			}
@@ -653,7 +654,7 @@ public class RWDLoadUtil {
 					alarmConfigTriggerArray.add(item);
 				}
 			}
-			SceneDataSet alarmConfigTrigger = new SceneDataSet(false);
+			SceneDataSet alarmConfigTrigger = new SceneDataSet(false, "alarmConfig" + "/" + "configTrigger");
 			alarmConfigTrigger.set = RWDUtil.array2SDOList(alarmConfigTriggerArray);
 			Repository.alarmConfigTrigger = alarmConfigTrigger;
 		}
@@ -667,7 +668,7 @@ public class RWDLoadUtil {
 				JSONObject arrayItem = array.getJSONObject(i);
 				arrayItem.put("id", arrayItem.get("logicalGroupingId"));
 			}
-			SceneDataSet SceneDataSet = new SceneDataSet(false);
+			SceneDataSet SceneDataSet = new SceneDataSet(false, "ibms-group");
 			SceneDataSet.set = RWDUtil.array2SDOList(array);
 			Repository.IBMSGroupArray = SceneDataSet;
 		}
@@ -688,7 +689,7 @@ public class RWDLoadUtil {
 				log.info(infoPath + Constant.getSeperator() + file.getName());
 				try {
 					JSONArray array = FastJsonReaderUtil.Instance().ReadJSONArray(new File(infoPath + Constant.getSeperator() + file.getName()));
-					SceneDataSet SceneDataSet = new SceneDataSet(false);
+					SceneDataSet SceneDataSet = new SceneDataSet(false, "ibms-group-object" + "/" + product + "/" + code);
 					SceneDataSet.set = RWDUtil.array2SDOList(array);
 					infoArrayDic.put(code, SceneDataSet);
 				} catch (Exception e) {
@@ -922,14 +923,14 @@ public class RWDLoadUtil {
 		{
 			JSONArray classArray = FastJsonReaderUtil.Instance()
 					.ReadJSONArray(new File(validPath + Constant.getSeperator() + "info-point-list.json"));
-			SceneDataSet SceneDataSet = new SceneDataSet(false);
+			SceneDataSet SceneDataSet = new SceneDataSet(false, "info-point-list");
 			SceneDataSet.set = RWDUtil.array2SDOList(classArray);
 			Repository.InfoPointListArray = SceneDataSet;
 		}
 		{
 			JSONArray classArray = FastJsonReaderUtil.Instance()
 					.ReadJSONArray(new File(validPath + Constant.getSeperator() + "info-point-relation.json"));
-			SceneDataSet SceneDataSet = new SceneDataSet(false);
+			SceneDataSet SceneDataSet = new SceneDataSet(false, "info-point-relation");
 			SceneDataSet.set = RWDUtil.array2SDOList(classArray);
 			Repository.InfoPointRelationArray = SceneDataSet;
 		}

+ 21 - 7
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/websocket/IOTWebSocketClient.java

@@ -10,7 +10,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.ibms.core.data.SceneDataPrimitive;
 import com.persagy.ibms.core.data.SceneDataValue;
-import com.persagy.ibms.core.util.DataUtil;
 import com.persagy.ibms.data.sdk.service.websocket.server.WebSocketUtil;
 import com.persagy.ibms.data.sdk.util.RepositoryContainer;
 
@@ -74,6 +73,9 @@ public class IOTWebSocketClient extends WebSocketClient {
 					String meter = splits[i + 1];
 					String funcid = splits[i + 2];
 					String value = splits[i + 3];
+					if (value.endsWith(".0")) {
+						value = value.substring(0, value.length() - ".0".length());
+					}
 					try {
 						SceneDataValue sdvInner = new SceneDataValue(null, null, null, null);
 						sdvInner.finish = true;
@@ -86,9 +88,13 @@ public class IOTWebSocketClient extends WebSocketClient {
 						SceneDataValue data = RepositoryContainer.RepositoryBase.point2sdv.get(meter + "-" + funcid);
 						if (type.equals("iot")) {
 							try {
-								data.value_prim.value = Double.parseDouble(value);
-							} catch (Exception e) {
-								// log.error(e.getMessage(),e);
+								data.value_prim.value = Long.parseLong(value);
+							} catch (Exception e1) {
+								try {
+									data.value_prim.value = Double.parseDouble(value);
+								} catch (Exception e) {
+									data.value_prim.value = value;
+								}
 							}
 						} else if (type.equals("text")) {
 							data.value_prim.value = value;
@@ -107,6 +113,9 @@ public class IOTWebSocketClient extends WebSocketClient {
 					String meter = splits[i + 1];
 					String funcid = splits[i + 2];
 					String value = splits[i + 3];
+					if (value.endsWith(".0")) {
+						value = value.substring(0, value.length() - ".0".length());
+					}
 					try {
 						SceneDataValue sdvInner = new SceneDataValue(null, null, null, null);
 						SceneDataValue exist_sdv = RepositoryContainer.RepositoryBase.set2sdv.putIfAbsent(meter + "-" + funcid, sdvInner);
@@ -114,9 +123,14 @@ public class IOTWebSocketClient extends WebSocketClient {
 							RepositoryContainer.RepositoryBase.sdv2set.putIfAbsent(sdvInner, meter + "-" + funcid);
 						}
 						SceneDataValue data = RepositoryContainer.RepositoryBase.set2sdv.get(meter + "-" + funcid);
-						double dataValue = Double.parseDouble(value);
-						if (data.value_prim.value == null || dataValue != DataUtil.primitive2double(data.value_prim.value)) {
-							data.value_prim.value = dataValue;
+						try {
+							data.value_prim.value = Long.parseLong(value);
+						} catch (Exception e1) {
+							try {
+								data.value_prim.value = Double.parseDouble(value);
+							} catch (Exception e) {
+								data.value_prim.value = value;
+							}
 						}
 					} catch (Exception e) {
 						// log.info("onMessage" + "\t" + meter + "-" + funcid + "\t" + value);