menglu 3 lat temu
rodzic
commit
5533944f85

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

@@ -211,7 +211,7 @@
 		<dependency>
 			<groupId>com.persagy</groupId>
 			<artifactId>sailfish</artifactId>
-			<version>0.0.10</version>
+			<version>0.0.11</version>
 		</dependency>
 	</dependencies>
 

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

@@ -108,6 +108,12 @@ public class RestApi {
 		return result;
 	}
 
+	@PostMapping(path = { "/general_query", "/zkt-sdk/general_query" }, produces = "application/json;charset=UTF-8")
+	public String general_query(@RequestBody String param, HttpServletRequest request) {
+		String result = RestUtil.general_query(param);
+		return result;
+	}
+
 	@PostMapping(path = { "/post", "/zkt-sdk/post" }, produces = "application/json;charset=UTF-8")
 	public String post(@RequestBody String param, HttpServletRequest request) {
 		String ip = RestUtil.getIp(request);

+ 34 - 1
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -22,6 +22,7 @@ import com.persagy.ibms.core.data.SceneDataValue;
 import com.persagy.ibms.core.data.SceneProperty;
 import com.persagy.ibms.core.util.ComputeUtil;
 import com.persagy.ibms.core.util.FastJsonReaderUtil;
+import com.persagy.ibms.core.util.FilterUtil;
 import com.persagy.ibms.core.util.IntWrapper;
 import com.persagy.ibms.core.util.LogUtil;
 import com.persagy.ibms.core.util.QueryAssist;
@@ -58,7 +59,7 @@ public class RestUtil {
 				Content = sdv.toJSON(true, read_level == 0 ? -1 : read_level);
 			} else {
 				SceneDataPrimitive sdv = (SceneDataPrimitive) queryResult;
-				Content = sdv.value;			
+				Content = sdv.value;
 			}
 			result.put("Result", "success");
 			result.put("Content", Content);
@@ -75,6 +76,38 @@ public class RestUtil {
 		return JSONObject.toJSONString(result, SerializerFeature.WriteMapNullValue);
 	}
 
+	public static String general_query(String param) {
+		try {
+			JSONObject sql_json = JSON.parseObject(param);
+			JSONObject query_json;
+			if (sql_json.containsKey("query_json")) {
+				query_json = sql_json.getJSONObject("query_json");
+			} else {
+				String QueryName = sql_json.getString("QueryName");
+				RepositoryImpl Repository = RepositoryContainer.instance;
+				query_json = Repository.general_queryMap.get(QueryName);
+			}
+			JSONObject params = sql_json.getJSONObject("params");
+			JSONObject CriteriaObject = query_json.getJSONObject("Criteria");
+			List<String> refPropertyList = new ArrayList<String>();
+			JSONObject CriteriaNew = (JSONObject) FilterUtil.parseCriteria(CriteriaObject, params, refPropertyList);
+			JSONObject query_json_new = new JSONObject();
+			for (String key : query_json.keySet()) {
+				if (key.equals("Criteria")) {
+					query_json_new.put(key, CriteriaNew);
+				} else {
+					query_json_new.put(key, query_json.get(key));
+				}
+			}
+			String result = RestUtil.query(JSONObject.toJSONString(query_json_new, SerializerFeature.WriteMapNullValue));
+			return result;
+		} catch (Exception e) {
+			e.printStackTrace();
+			String error = LogUtil.GetExceptionStackTrace(e);
+			return error;
+		}
+	}
+
 	public static String showTree() {
 		RepositoryImpl Repository = RepositoryContainer.instance;
 		JSONObject JSON = (JSONObject) Repository.objectData.toJSON(-1);

+ 34 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDRepositoryUtil.java

@@ -1,8 +1,12 @@
 package com.persagy.ibms.data.sdk.util;
 
 import java.io.File;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.ibms.core.data.SceneObject;
 import com.persagy.ibms.core.data.SceneProperty;
@@ -44,8 +48,24 @@ public class RWDRepositoryUtil {
 
 		log.warn("LoadConfig");
 		SceneObject sceneObject = new SceneObject();
-		JSONObject sceneJSON = FastJsonReaderUtil.Instance().ReadJSONObject(new File(Constant.getLatestPath(Constant.config, false)));
-		FastJsonUtil.Set_JavaObject(sceneJSON, sceneObject);
+		{
+			JSONObject sceneJSON_ori = FastJsonReaderUtil.Instance().ReadJSONObject(new File(Constant.getLatestPath(Constant.config, false)));
+			JSONArray PropertyList_ori = sceneJSON_ori.getJSONArray("PropertyList");
+			JSONObject sceneJSON = new JSONObject();
+			JSONArray PropertyList = new JSONArray();
+			for (int i = 0; i < PropertyList_ori.size(); i++) {
+				JSONObject Property = PropertyList_ori.getJSONObject(i);
+				String PropertyName = Property.getString("PropertyName");
+				if (PropertyName.equals("general_query")) {
+					JSONObject custom_object = Property.getJSONObject("custom_object");
+					parse_general_query(Repository, custom_object);
+				} else {
+					PropertyList.add(Property);
+				}
+			}
+			sceneJSON.put("PropertyList", PropertyList);
+			FastJsonUtil.Set_JavaObject(sceneJSON, sceneObject);
+		}
 		Repository.sceneObject = sceneObject;
 
 		Repository.property2SDV_enable = true;
@@ -63,4 +83,16 @@ public class RWDRepositoryUtil {
 		Repository.property2SDV.clear();
 	}
 
+	private static void parse_general_query(RepositoryImpl Repository, JSONObject custom_object) {
+		Map<String, JSONObject> general_queryMap = new HashMap<String, JSONObject>();
+		JSONArray PropertyList = custom_object.getJSONArray("PropertyList");
+		for (int i = 0; i < PropertyList.size(); i++) {
+			JSONObject Property = PropertyList.getJSONObject(i);
+			String PropertyName = Property.getString("PropertyName");
+			String query_sql = Property.getString("query_sql");
+			JSONObject query_sql_json = JSON.parseObject(query_sql);
+			general_queryMap.put(PropertyName, query_sql_json);
+		}
+		Repository.general_queryMap = general_queryMap;
+	}
 }

+ 1 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryImpl.java

@@ -11,6 +11,7 @@ import com.persagy.ibms.core.data.SceneDataValue;
 import com.persagy.ibms.core.util.RepositoryBase;
 
 public class RepositoryImpl extends RepositoryBase {
+	public Map<String, JSONObject> general_queryMap;
 	public RepositoryProject RepositoryBase;
 
 	// 对象类型,true表示有二级类型