Browse Source

历史回放接口实现到一半

menglu 4 years ago
parent
commit
e6fea1902e

+ 18 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java

@@ -90,12 +90,6 @@ public class RestApi {
 		return result;
 	}
 
-	@PostMapping(path = { "/fjd_query", "/zkt-sdk/fjd_query" }, produces = "application/json;charset=UTF-8")
-	public String fjd_query(@RequestBody String param) {
-		String result = RestUtil.fjd_query(param);
-		return result;
-	}
-
 	@PostMapping(path = { "/wrapper_post", "/zkt-sdk/wrapper_post" }, produces = "application/json;charset=UTF-8")
 	public String wrapper_post(@RequestBody String param) {
 		String result = RestUtil.wrapper_post(param);
@@ -113,4 +107,22 @@ public class RestApi {
 		String result = RestUtil.wrapper_control(param);
 		return result;
 	}
+
+	@PostMapping(path = { "/fjd_query", "/zkt-sdk/fjd_query" }, produces = "application/json;charset=UTF-8")
+	public String fjd_query(@RequestBody String param) {
+		String result = RestUtil.fjd_query(param);
+		return result;
+	}
+	
+	@PostMapping(path = { "/history_fjd_query", "/zkt-sdk/history_fjd_query" }, produces = "application/json;charset=UTF-8")
+	public String fjd_query_history(@RequestBody String param) {
+		String result = RestUtil.fjd_query_history(param);
+		return result;
+	}
+	
+	@PostMapping(path = { "/path_array_history_fjd_query", "/zkt-sdk/history_fjd_query" }, produces = "application/json;charset=UTF-8")
+	public String path_array_history_fjd_query(@RequestBody String param) {
+		String result = RestUtil.path_array_history_fjd_query(param);
+		return result;
+	}
 }

+ 70 - 24
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -581,33 +581,35 @@ public class RestUtil {
 		if (time_to.getTime() - time_from.getTime() < 1000L * 60 * 60 * 6) {
 			time_from = new Date(time_from.getTime() - (1000L * 60 * 60 * 12));
 		}
+		JSONObject parseObject = JSON.parseObject(param);
+		String objId = parseObject.getString("objId");
+		String code = parseObject.getString("code");
+		String pointString = RepositoryBase.info2point.get(objId).get(code);
+		int index_ = pointString.lastIndexOf('-');
+		String meter = pointString.substring(0, index_);
+		int funcid = Integer.parseInt(pointString.substring(index_ + 1));
+		String result = fjd_query_history(meter, funcid, sdf.format(time_from), sdf.format(time_to));
+		return result;
+	}
 
+	public static String fjd_query_history(String param) {
+		JSONObject parseObject = JSON.parseObject(param);
+		String objId = parseObject.getString("objId");
+		String code = parseObject.getString("code");
+		String pointString = RepositoryBase.info2point.get(objId).get(code);
+		int index_ = pointString.lastIndexOf('-');
+		String meter = pointString.substring(0, index_);
+		int funcid = Integer.parseInt(pointString.substring(index_ + 1));
+		String time_from = parseObject.getString("time_from");
+		String time_to = parseObject.getString("time_to");
+		String result = fjd_query_history(meter, funcid, time_from, time_to);
+		return result;
+	}
+
+	public static String fjd_query_history(String meter, int funcid, String time_from, String time_to) {
 		JSONObject result = new JSONObject();
 		try {
-			JSONObject parseObject = JSON.parseObject(param);
-			String objId = parseObject.getString("objId");
-			String code = parseObject.getString("code");
-			String pointString = RepositoryBase.info2point.get(objId + "-" + code);
-			int index_ = pointString.lastIndexOf('-');
-			String meter = pointString.substring(0, index_);
-			int funcid = Integer.parseInt(pointString.substring(index_ + 1));
-			JSONObject pointObject = new JSONObject();
-			pointObject.put("meter", meter);
-			pointObject.put("funcid", funcid);
-			pointObject.put("time_period", "15min");
-			pointObject.put("time_from", sdf.format(time_from));
-			pointObject.put("time_to", sdf.format(time_to));
-			JSONArray points = new JSONArray();
-			points.add(pointObject);
-			JSONObject postJSON = new JSONObject();
-			postJSON.put("building", RepositoryBase.projectId.substring(2));
-			postJSON.put("points", points);
-			String post_url = Constant.iot_collect_url + "fjd_query_batch_post";
-			String post_result = HttpClientUtil.post(post_url, postJSON.toJSONString());
-			JSONObject resultJSON = JSON.parseObject(post_result);
-			JSONArray result_points = (JSONArray) resultJSON.get("points");
-			JSONObject result_point = (JSONObject) result_points.get(0);
-			JSONArray datas = (JSONArray) result_point.get("datas");
+			JSONArray datas = fjd_query_inner(meter, funcid, time_from, time_to);
 			result.put("Content", datas);
 			result.put("Result", "success");
 		} catch (Exception e) {
@@ -620,4 +622,48 @@ public class RestUtil {
 		}
 		return result.toJSONString();
 	}
+
+	public static String path_array_history_fjd_query(String param) {
+		JSONArray result = new JSONArray();
+		JSONObject parseObject = JSON.parseObject(param);
+		String time_from = parseObject.getString("time_from");
+		String time_to = parseObject.getString("time_to");
+		JSONArray Items = parseObject.getJSONArray("Items");
+		for (int i = 0; i < Items.size(); i++) {
+			JSONObject item = (JSONObject) Items.get(i);
+			JSONObject resultItem = new JSONObject();
+			resultItem.put("name", item.get("name"));
+			resultItem.put("path", item.get("path"));
+			resultItem.put("Content", path_query_inner(time_from, time_to, item));
+			result.add(resultItem);
+		}
+		return result.toJSONString();
+	}
+
+	private static JSONArray path_query_inner(String time_from, String time_to, JSONObject parseObject) {
+		JSONArray result = new JSONArray();
+		// TODO
+		return result;
+	}
+
+	private static JSONArray fjd_query_inner(String meter, int funcid, String time_from, String time_to) throws Exception {
+		JSONObject pointObject = new JSONObject();
+		pointObject.put("meter", meter);
+		pointObject.put("funcid", funcid);
+		pointObject.put("time_period", "15min");
+		pointObject.put("time_from", time_from);
+		pointObject.put("time_to", time_to);
+		JSONArray points = new JSONArray();
+		points.add(pointObject);
+		JSONObject postJSON = new JSONObject();
+		postJSON.put("building", RepositoryBase.projectId.substring(2));
+		postJSON.put("points", points);
+		String post_url = Constant.iot_collect_url + "fjd_query_batch_post";
+		String post_result = HttpClientUtil.post(post_url, postJSON.toJSONString());
+		JSONObject resultJSON = JSON.parseObject(post_result);
+		JSONArray result_points = (JSONArray) resultJSON.get("points");
+		JSONObject result_point = (JSONObject) result_points.get(0);
+		JSONArray datas = (JSONArray) result_point.get("datas");
+		return datas;
+	}
 }

+ 4 - 1
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -189,7 +190,9 @@ public class RWDLoadUtil {
 						}
 						String point = (String) value_primitive;
 						if (point != null) {
-							RepositoryBase.info2point.put(obj_id + "-" + Key, point);
+							RepositoryBase.info2point.put(obj_id, new ConcurrentHashMap<String, String>());
+							ConcurrentHashMap<String, String> pointMap = RepositoryBase.info2point.get(obj_id);
+							pointMap.putIfAbsent(Key, point);
 							// 表号功能号改为null
 							{
 								SceneDataValue sdv = new SceneDataValue(Repository, obj, Key, null, true);

+ 3 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryBase.java

@@ -17,7 +17,7 @@ public class RepositoryBase {
 	public static String projectId;
 
 	// IOT采集数据
-	public static ConcurrentHashMap<String, String> info2point = new ConcurrentHashMap<String, String>();
+	public static ConcurrentHashMap<String, ConcurrentHashMap<String, String>> info2point = new ConcurrentHashMap<String, ConcurrentHashMap<String, String>>();
 	public static ConcurrentHashMap<String, SceneDataValue> point2sdv = new ConcurrentHashMap<String, SceneDataValue>();
 	public static ConcurrentHashMap<SceneDataValue, String> sdv2point = new ConcurrentHashMap<SceneDataValue, String>();
 	public static ConcurrentHashMap<String, List<SceneDataBase>> point2curve = new ConcurrentHashMap<String, List<SceneDataBase>>();
@@ -28,8 +28,8 @@ public class RepositoryBase {
 	public static List<SceneDataValue> alarmArray = new ArrayList<SceneDataValue>();
 	public static ConcurrentHashMap<String, SceneDataValue> id2alarmList = new ConcurrentHashMap<String, SceneDataValue>();
 	public static ConcurrentHashMap<String, SceneDataValue> id2alarmCount = new ConcurrentHashMap<String, SceneDataValue>();
-	
-//指定路径的控制值
+
+	// 指定路径的控制值
 	public static ConcurrentHashMap<String, JSONObject> controlValueMap = new ConcurrentHashMap<String, JSONObject>();
 
 }