浏览代码

增加递增数据类型的发送

luoguangyi 3 年之前
父节点
当前提交
46a8fc55a5

+ 1 - 1
src/main/java/com/persagy/simulator_gaopin/Constant.java

@@ -355,7 +355,7 @@ public class Constant {
                         group.data_type = contentList.get(2).toLowerCase();
                         group.period_second = NumberUtil.parseInt(contentList.get(3));
                         if (group.data_type.equals("double")) {
-                        } else if (group.data_type.equals("integer") || group.data_type.equals("boolean") || group.data_type.equals("enum")) {
+                        } else if (group.data_type.equals("integer") || group.data_type.equals("boolean") || group.data_type.equals("enum")|| group.data_type.equals("acc")) {
                         } else {
                             continue;
                         }

+ 23 - 2
src/main/java/com/persagy/simulator_gaopin/SimulatorUtil.java

@@ -1,10 +1,15 @@
 package com.persagy.simulator_gaopin;
 
 import java.io.ByteArrayInputStream;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.logging.Handler;
 
+import cn.hutool.core.util.RandomUtil;
 import org.antlr.runtime.ANTLRInputStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.tree.CommonTree;
@@ -19,9 +24,10 @@ import com.persagy.simulator.MeterSimulatorScanner;
 import com.persagy.simulator.MeterSimulatorWalker;
 
 public class SimulatorUtil {
+	public static final Map<String, Double> accMap = new HashMap<>();
 	static DecimalFormat df = new DecimalFormat("#.##");
 
-	public synchronized static Object getValue(EntityGroup group, String meter, int funcid, String data_type, Date curr_time) throws Exception {
+	public synchronized static Object getValue(EntityGroup group, String meter, int funcid, String data_type, Date curr_time,String key) throws Exception {
 		int hash = BKDRHash.getHashCode(meter + "_" + funcid);
 		Object dataString;
 		if (data_type.equalsIgnoreCase("BOOLEAN") || data_type.equalsIgnoreCase("ENUM")) {
@@ -40,7 +46,22 @@ public class SimulatorUtil {
 				MeterSimulatorWalker walker = Constant.walkerMap.get(formula_name);
 				dataString = (int) SimulatorUtil.getData(curr_time, walker, params).data;
 			}
-		} else {
+		}else if (data_type.equalsIgnoreCase("ACC")) {
+			if (group.lower_limit != null && group.upper_limit != null) {
+				double value = accMap.getOrDefault(key, group.lower_limit.doubleValue()) + RandomUtil.randomDouble(group.upper_limit.doubleValue(), 2, RoundingMode.HALF_UP);
+				accMap.put(key,value);
+				dataString =value;
+			}if (group.lower_limit != null) {
+				double value = accMap.getOrDefault(key, group.lower_limit.doubleValue()) + RandomUtil.randomDouble(3.0, 2, RoundingMode.HALF_UP);
+				accMap.put(key,value);
+				dataString =value;
+			} else {
+				double value = accMap.getOrDefault(key, 0.0)+ RandomUtil.randomDouble(3.0,2, RoundingMode.HALF_UP);
+				accMap.put(key,value);
+				dataString =value;
+
+			}
+		}else {
 			JSONArray formula_param = Constant.formula_paramMap.get(data_type);
 			int tmp_index = hash % formula_param.size();
 			if (tmp_index < 0) {

+ 1 - 1
src/main/java/com/persagy/simulator_gaopin/Thread_report.java

@@ -102,7 +102,7 @@ public class Thread_report extends Thread {
 		if (group.rel_set_sign != null && Constant.setDataMap.containsKey(key)) {
 			dataString = "" + Constant.setDataMap.get(key).data;
 		} else {
-			dataString = SimulatorUtil.getValue(group, meter, funcid, data_type, curr_time);
+			dataString = SimulatorUtil.getValue(group, meter, funcid, data_type, curr_time,key);
 			Constant.reportDataMap.get(building.id + "-" + meter + "-" + funcid).data = Double.parseDouble(dataString.toString());
 		}
 		ParserEntity packet = new ParserEntity();

+ 2 - 1
src/main/java/com/persagy/util/FastJsonUtil.java

@@ -107,8 +107,9 @@ public class FastJsonUtil {
 		if (value instanceof Float) {
 			if (((Float) value).isInfinite() || ((Float) value).isNaN())
 				return "null";
-			else
+			else {
 				return value.toString();
+			}
 		}
 
 		if (value instanceof Number)

二进制
src/main/resources/report.xlsx