Przeglądaj źródła

1、远程控制保存日志
2、子系统联通保存日志

lirong 2 lat temu
rodzic
commit
fde1caa0b3

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

@@ -88,8 +88,8 @@ public class RestApi {
 	}
 
 	@PostMapping(path = { "/subsystem_connect_status", "/zkt-sdk/subsystem_connect_status" }, produces = "application/json;charset=UTF-8")
-	public String subsystem_connect_status(HttpServletRequest request) {
-		String result = RestUtil.subsystem_connect_status();
+	public String subsystem_connect_status(@RequestBody String param,HttpServletRequest request) {
+		String result = RestUtil.subsystem_connect_status(param);
 		return result;
 	}
 

+ 35 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -251,7 +251,10 @@ public class RestUtil {
 		return JSONObject.toJSONString(result, SerializerFeature.WriteMapNullValue);
 	}
 
-	public static String subsystem_connect_status() {
+	public static String subsystem_connect_status(String param) {
+		JSONObject paramObject = JSON.parseObject(param);
+		String userId = (String) paramObject.get("userId");
+		String userName = (String) paramObject.get("userName");
 		JSONArray subsystemStatusList = new JSONArray();
 		try {
 			subsystemStatusList = queryOcssiConfigsubsystemStatusList();
@@ -277,6 +280,8 @@ public class RestUtil {
 			}
 		}
 		JSONArray subsystem_connect_status_array=new JSONArray();
+		StringBuffer sb = new StringBuffer();
+		sb.append( "[" + userName + "]:");
 		for (int i = 0; i < subsystemStatusList.size(); i++) {
 			JSONObject item = (JSONObject) subsystemStatusList.get(i);
 			String ibmsSceneCode = item.getString("ibmsSceneCode");
@@ -284,9 +289,37 @@ public class RestUtil {
 			if(itemObject!=null)
 			{
 				subsystem_connect_status_array.add(itemObject.toJSON(2));
-				
+				Object connectName = itemObject.get("名称").value_prim.value;
+				String connectStatus = itemObject.get("连接状态").value_prim.value.toString();
+				sb.append("[" + connectName + "]");
+				if(connectStatus.equals("1"))
+				{
+					sb.append("[连接成功]");
+				}else
+				{
+					sb.append("[连接失败]");
+				}
+				sb.append("、");
 			}
 		}
+		JSONObject postParam = new JSONObject();
+		postParam.put("logSource", "sys");
+		postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+		postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+		if (userId != null) {
+			postParam.put("userId", userId);
+		}
+		if (userName != null) {
+			postParam.put("userName", userName);
+		}
+		postParam.put("module", "shop");
+		postParam.put("systemType", "connectionstatus");
+		postParam.put("details", sb.toString());
+		try {
+			ControlUtil.saveOperationLog(postParam);
+		} catch (Exception e) {
+			log.error(e.getMessage(), e);
+		}
 		return JSONArray.toJSONString(subsystem_connect_status_array);
 	}
 

+ 394 - 392
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java

@@ -17,412 +17,414 @@ import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class ControlUtil {
-	public static void setControlValue(SceneDataObject object, JSONObject infoValueSet) {
-		String id = (String) object.get("id").value_prim.value;
-		JSONObject existValue = RepositoryContainer.RepositoryProject.ObjCtrlValueMap.putIfAbsent(id, infoValueSet);
-		if (existValue != null) {
-			for (String info_code : infoValueSet.keySet()) {
-				existValue.put(info_code, infoValueSet.get(info_code));
-			}
-		}
-	}
+    public static void setControlValue(SceneDataObject object, JSONObject infoValueSet) {
+        String id = (String) object.get("id").value_prim.value;
+        JSONObject existValue = RepositoryContainer.RepositoryProject.ObjCtrlValueMap.putIfAbsent(id, infoValueSet);
+        if (existValue != null) {
+            for (String info_code : infoValueSet.keySet()) {
+                existValue.put(info_code, infoValueSet.get(info_code));
+            }
+        }
+    }
 
-	public static JSONObject getControlValue(RepositoryImpl Repository, JSONArray path) throws Exception {
-		JSONObject result = new JSONObject();
-		Object valueObject = ComputeUtil.getValueObject(Repository, path);
-		List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
-		if (valueObject instanceof SceneDataValue) {
-			SceneDataValue currData = (SceneDataValue) valueObject;
-			if (currData.value_array != null) {
-				sdoList.addAll(currData.value_array.set);
-			} else if (currData.value_object != null) {
-				sdoList.add(currData.value_object);
-			} else {
-				throw new Exception();
-			}
-		} else {
-			SceneDataObject currData = (SceneDataObject) valueObject;
-			sdoList.add(currData);
-		}
-		Map<String, Boolean> all_info_code = new ConcurrentHashMap<String, Boolean>();
-		for (SceneDataObject object : sdoList) {
-			String id = (String) object.get("id").value_prim.value;
-			if (RepositoryContainer.RepositoryProject.ObjCtrlValueMap.containsKey(id)) {
-				JSONObject infoValueSet = RepositoryContainer.RepositoryProject.ObjCtrlValueMap.get(id);
-				for (String info_code : infoValueSet.keySet()) {
-					all_info_code.putIfAbsent(info_code, true);
-				}
-			}
-		}
-		for (String info_code : all_info_code.keySet()) {
-			boolean all_exist = true;
-			boolean all_equal = true;
-			Object first_info_value = null;
-			for (SceneDataObject object : sdoList) {
-				if (!object.containsKey(info_code)) {
-					all_exist = false;
-					break;
-				}
-				Object info_value = object.get(info_code).value_prim.value;
-				if (first_info_value == null) {
-					first_info_value = info_value;
-				} else {
-					if (!first_info_value.toString().equals(info_value)) {
-						all_equal = false;
-						break;
-					}
-				}
-			}
-			if (all_exist && all_equal) {
-				result.put(info_code, first_info_value);
-			}
-		}
-		return result;
-	}
+    public static JSONObject getControlValue(RepositoryImpl Repository, JSONArray path) throws Exception {
+        JSONObject result = new JSONObject();
+        Object valueObject = ComputeUtil.getValueObject(Repository, path);
+        List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
+        if (valueObject instanceof SceneDataValue) {
+            SceneDataValue currData = (SceneDataValue) valueObject;
+            if (currData.value_array != null) {
+                sdoList.addAll(currData.value_array.set);
+            } else if (currData.value_object != null) {
+                sdoList.add(currData.value_object);
+            } else {
+                throw new Exception();
+            }
+        } else {
+            SceneDataObject currData = (SceneDataObject) valueObject;
+            sdoList.add(currData);
+        }
+        Map<String, Boolean> all_info_code = new ConcurrentHashMap<String, Boolean>();
+        for (SceneDataObject object : sdoList) {
+            String id = (String) object.get("id").value_prim.value;
+            if (RepositoryContainer.RepositoryProject.ObjCtrlValueMap.containsKey(id)) {
+                JSONObject infoValueSet = RepositoryContainer.RepositoryProject.ObjCtrlValueMap.get(id);
+                for (String info_code : infoValueSet.keySet()) {
+                    all_info_code.putIfAbsent(info_code, true);
+                }
+            }
+        }
+        for (String info_code : all_info_code.keySet()) {
+            boolean all_exist = true;
+            boolean all_equal = true;
+            Object first_info_value = null;
+            for (SceneDataObject object : sdoList) {
+                if (!object.containsKey(info_code)) {
+                    all_exist = false;
+                    break;
+                }
+                Object info_value = object.get(info_code).value_prim.value;
+                if (first_info_value == null) {
+                    first_info_value = info_value;
+                } else {
+                    if (!first_info_value.toString().equals(info_value)) {
+                        all_equal = false;
+                        break;
+                    }
+                }
+            }
+            if (all_exist && all_equal) {
+                result.put(info_code, first_info_value);
+            }
+        }
+        return result;
+    }
 
-	public static JSONArray set(String userId, String userName, RepositoryImpl Repository, JSONArray path, JSONObject infoValueSet,
-			String controlReason) throws Exception {
-		JSONArray result;
-		Object valueObject = ComputeUtil.getValueObject(Repository, path);
-		List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
-		if (valueObject instanceof SceneDataValue) {
-			SceneDataValue currData = (SceneDataValue) valueObject;
-			if (currData.value_array != null) {
-				SceneDataValue detail = currData.parentObjectData.get("详情");
-				result = setInner(Repository, detail, currData.value_array.set, infoValueSet, sdoList);
-			} else if (currData.value_object != null) {
-				result = set(Repository, currData.value_object, infoValueSet, sdoList);
-			} else {
-				throw new Exception();
-			}
-		} else {
-			SceneDataObject currData = (SceneDataObject) valueObject;
-			result = set(Repository, currData, infoValueSet, sdoList);
-		}
+    public static JSONArray set(String userId, String userName, RepositoryImpl Repository, JSONArray path, JSONObject infoValueSet,
+                                String controlReason) throws Exception {
+        JSONArray result;
+        Object valueObject = ComputeUtil.getValueObject(Repository, path);
+        List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
+        if (valueObject instanceof SceneDataValue) {
+            SceneDataValue currData = (SceneDataValue) valueObject;
+            if (currData.value_array != null) {
+                SceneDataValue detail = currData.parentObjectData.get("详情");
+                result = setInner(Repository, detail, currData.value_array.set, infoValueSet, sdoList);
+            } else if (currData.value_object != null) {
+                result = set(Repository, currData.value_object, infoValueSet, sdoList);
+            } else {
+                throw new Exception();
+            }
+        } else {
+            SceneDataObject currData = (SceneDataObject) valueObject;
+            result = set(Repository, currData, infoValueSet, sdoList);
+        }
 
-		ControlUtil.saveBatchOperationLog(userId, userName, sdoList, infoValueSet, result, controlReason, Repository);
-		// ControlUtil.saveOperationLog(userId, userName, sdoList, infoValueSet, result);
+        ControlUtil.saveBatchOperationLog(userId, userName, sdoList, infoValueSet, result, controlReason, Repository);
+        // ControlUtil.saveOperationLog(userId, userName, sdoList, infoValueSet, result);
 
-		return result;
-	}
+        return result;
+    }
 
-	public static void saveOperationLog(String userId, String userName, List<SceneDataObject> sdoList, JSONObject infoValueSet, JSONArray points) {
-		try {
-			JSONObject postParam = new JSONObject();
-			postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
-			postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
-			if (userId == null || userId.length() == 0) {
-				postParam.put("userId", "systemId");
-			} else {
-				postParam.put("userId", userId);
-			}
-			if (userName == null || userName.length() == 0) {
-				postParam.put("userName", "系统");
-			} else {
-				postParam.put("userName", userName);
-			}
-			if (sdoList.size() == 1) {
-				SceneDataObject sdo = sdoList.get(0);
-				postParam.put("objId", sdo.get("id").value_prim.value);
-			} else {
-				JSONArray objs = new JSONArray();
-				for (SceneDataObject sdo : sdoList) {
-					objs.add(sdo.get("id").value_prim.value);
-				}
-				postParam.put("objs", objs);
-			}
-			{
-				SceneDataObject sdo = sdoList.get(0);
-				Object objType = sdo.get("objType").value_prim.value;
-				Object objName = sdo.get("ibmsxianshimingcheng").value_prim.value;
-				Object systemCode = null;
-				String classCode = (String) sdo.get("classCode").value_prim.value;
-				Object belongSystem = sdo.get("所属场景").value_prim.value;
+    public static void saveOperationLog(String userId, String userName, List<SceneDataObject> sdoList, JSONObject infoValueSet, JSONArray points) {
+        try {
+            JSONObject postParam = new JSONObject();
+            postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+            postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+            if (userId == null || userId.length() == 0) {
+                postParam.put("userId", "systemId");
+            } else {
+                postParam.put("userId", userId);
+            }
+            if (userName == null || userName.length() == 0) {
+                postParam.put("userName", "系统");
+            } else {
+                postParam.put("userName", userName);
+            }
+            if (sdoList.size() == 1) {
+                SceneDataObject sdo = sdoList.get(0);
+                postParam.put("objId", sdo.get("id").value_prim.value);
+            } else {
+                JSONArray objs = new JSONArray();
+                for (SceneDataObject sdo : sdoList) {
+                    objs.add(sdo.get("id").value_prim.value);
+                }
+                postParam.put("objs", objs);
+            }
+            {
+                SceneDataObject sdo = sdoList.get(0);
+                Object objType = sdo.get("objType").value_prim.value;
+                Object objName = sdo.get("ibmsxianshimingcheng").value_prim.value;
+                Object systemCode = null;
+                String classCode = (String) sdo.get("classCode").value_prim.value;
+                Object belongSystem = sdo.get("所属场景").value_prim.value;
 
-				List<SceneDataObject> infoList = RepositoryContainer.instance.infoArrayDic.get(classCode).set;
-				postParam.put("objType", objType);
-				postParam.put("objName", objName);
-				postParam.put("systemCode", systemCode);
-				postParam.put("classCode", classCode);
-				postParam.put("functionType", "remoteControl");
-				StringBuffer sb = new StringBuffer();
-				for (String key : infoValueSet.keySet()) {
-					Object infoValue = infoValueSet.get(key);
-					SceneDataObject infoDef = null;
-					for (SceneDataObject infoDefInner : infoList) {
-						String code = (String) infoDefInner.get("code").value_prim.value;
-						if (code.equals(key)) {
-							infoDef = infoDefInner;
-							break;
-						}
-					}
-					String infoName = key;
-					if (infoDef != null) {
-						infoName = (String) infoDef.get("name").value_prim.value;
-						infoValue = ControlUtil.value2CanRead(infoDef, infoValue);
-					}
-					sb.append("[" + infoName + "]" + "设为:" + "[" + infoValue + "]");
-					sb.append(";");
-				}
-				JSONArray success_points = new JSONArray();
-				JSONArray failure_points = new JSONArray();
-				for (int i = 0; i < points.size(); i++) {
-					JSONObject point = points.getJSONObject(i);
-					String status = (String) point.get("status");
-					if (status.equals("finish:success")) {
-						success_points.add(point);
-					} else {
-						failure_points.add(point);
-					}
-				}
-				sb.append("控制结果:" + points.size() + "个控制指令" + (success_points.size() > 0 ? ("," + success_points.size() + "个成功") : "")
-						+ (failure_points.size() > 0 ? ("," + failure_points.size() + "个失败") : ""));
-				postParam.put("operateDetail", "【" + belongSystem + "】:" + objName + "-" + sb.toString());
-				postParam.put("sourceType", 1);
-			}
-			saveOperationLog(postParam);
-		} catch (Exception e) {
-			log.error(e.getMessage(), e);
-		}
-	}
+                List<SceneDataObject> infoList = RepositoryContainer.instance.infoArrayDic.get(classCode).set;
+                postParam.put("objType", objType);
+                postParam.put("objName", objName);
+                postParam.put("systemCode", systemCode);
+                postParam.put("classCode", classCode);
+                postParam.put("functionType", "remoteControl");
+                StringBuffer sb = new StringBuffer();
+                for (String key : infoValueSet.keySet()) {
+                    Object infoValue = infoValueSet.get(key);
+                    SceneDataObject infoDef = null;
+                    for (SceneDataObject infoDefInner : infoList) {
+                        String code = (String) infoDefInner.get("code").value_prim.value;
+                        if (code.equals(key)) {
+                            infoDef = infoDefInner;
+                            break;
+                        }
+                    }
+                    String infoName = key;
+                    if (infoDef != null) {
+                        infoName = (String) infoDef.get("name").value_prim.value;
+                        infoValue = ControlUtil.value2CanRead(infoDef, infoValue);
+                    }
+                    sb.append("[" + infoName + "]" + "设为:" + "[" + infoValue + "]");
+                    sb.append(";");
+                }
+                JSONArray success_points = new JSONArray();
+                JSONArray failure_points = new JSONArray();
+                for (int i = 0; i < points.size(); i++) {
+                    JSONObject point = points.getJSONObject(i);
+                    String status = (String) point.get("status");
+                    if (status.equals("finish:success")) {
+                        success_points.add(point);
+                    } else {
+                        failure_points.add(point);
+                    }
+                }
+                sb.append("控制结果:" + points.size() + "个控制指令" + (success_points.size() > 0 ? ("," + success_points.size() + "个成功") : "")
+                        + (failure_points.size() > 0 ? ("," + failure_points.size() + "个失败") : ""));
+                postParam.put("operateDetail", "【" + belongSystem + "】:" + objName + "-" + sb.toString());
+                postParam.put("sourceType", 1);
+            }
+            saveOperationLog(postParam);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
 
-	public static void saveBatchOperationLog(String userId, String userName, List<SceneDataObject> sdoList, JSONObject infoValueSet, JSONArray points,
-			String controlReason, RepositoryImpl Repository) {
-		try {
-			JSONArray postParamArray = new JSONArray();
-			for (int i = 0; i < sdoList.size(); i++) {
-				JSONObject postParam;
-                 postParam = new JSONObject();
-				 JSONObject postParam2=new JSONObject();
-				postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
-				postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
-				if (userId != null) {
-					postParam.put("userId", userId);
-				}
-				if (userName != null) {
-					postParam.put("userName", userName);
-				}
-					SceneDataObject sdo = sdoList.get(i);
-					postParam.put("objId", sdo.get("id").value_prim.value);
-					Object objType = sdo.get("objType").value_prim.value;
-					Object objName = sdo.get("ibmsxianshimingcheng").value_prim.value;
-					Object localId = sdo.get("localId").value_prim.value;
-					Object systemCode = sdo.get("ibmsSceneCode").value_prim.value;
-					String classCode = (String) sdo.get("classCode").value_prim.value;
-					Object belongSystem = sdo.get("所属场景").value_prim.value;
-					List<SceneDataObject> infoList = RepositoryContainer.instance.infoArrayDic.get(classCode).set;
-					postParam.put("objType", objType);
-					postParam.put("objName", objName);
-					postParam.put("localId", localId);
-					postParam.put("systemCode", systemCode);
-					postParam.put("systemName", belongSystem);
-					postParam.put("classCode", classCode);
-					postParam.put("functionType", "remoteControl");
-					StringBuffer sb = new StringBuffer();
-					for (String key : infoValueSet.keySet()) {
-						Object infoValue = infoValueSet.get(key);
-						SceneDataObject infoDef = null;
-						for (SceneDataObject infoDefInner : infoList) {
-							String code = (String) infoDefInner.get("code").value_prim.value;
-							if (code.equals(key)) {
-								infoDef = infoDefInner;
-								break;
-							}
-						}
-						String infoName = key;
-						if (infoDef != null) {
-							infoName = (String) infoDef.get("name").value_prim.value;
-							infoValue = ControlUtil.value2CanRead(infoDef, infoValue);
-						}
-						sb.append("[" + infoName + "]" + "设为:" + "[" + infoValue + "]");
-						sb.append(";");
-						if(controlReason!=null&&!controlReason.isEmpty())
-						{
-							if (infoDef.get("code").value_prim.value.equals("manualAutoSet")) {
-								sb.append("原因:" + controlReason + ";");
-							}
-						}
-						String id = (String) sdo.get("id").value_prim.value;
-						JSONObject obj = Repository.id2object.get(id);
-						String objInfoValue = (String) obj.get(key);
-						if (objInfoValue != null && objInfoValue.length() > 0) {
-							int index_ = objInfoValue.lastIndexOf("-");
-							String meter = objInfoValue.substring(0, index_);
-							int funcid = Integer.parseInt(objInfoValue.substring(index_ + 1));
-							JSONObject point = (JSONObject) points.stream()
-									.filter(x -> JSONObject.parseObject(x.toString()).get("meter").equals(meter)
-											&& JSONObject.parseObject(x.toString()).get("funcid").equals(funcid))
-									.findFirst().get();
-							String status = (String) point.get("status");
-							if (status.equals("finish:success")) {
-								sb.append("控制结果:成功;");
-							} else {
-								sb.append("控制结果:失败;");
-							}
-						}
-					}
-					for (int j=1;j<=2;j++){
-						postParam2=JSONObject.parseObject(postParam.toJSONString());
-						if(j==1)
-						{
-							postParam2.put("operateDetail", "【" + belongSystem + "】:" + objName + "-" + sb.toString());
-							postParam2.put("sourceType", j);
-						}
-						else
-						{
-							postParam2.put("operateDetail", sb.toString());
-							postParam2.put("sourceType", j);
-						}
-						postParamArray.add(postParam2);
-					}
-			}
-			saveBatchOperationLog(postParamArray);
-		} catch (Exception e) {
-			log.error(e.getMessage(), e);
-		}
-	}
+    public static void saveBatchOperationLog(String userId, String userName, List<SceneDataObject> sdoList, JSONObject infoValueSet, JSONArray points,
+                                             String controlReason, RepositoryImpl Repository) {
+        try {
+            JSONArray postParamArray = new JSONArray();
+            for (int i = 0; i < sdoList.size(); i++) {
+                JSONObject postParam;
+                postParam = new JSONObject();
+                JSONObject postParam2 = new JSONObject();
+                postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+                postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+                if (userId != null) {
+                    postParam.put("userId", userId);
+                }
+                if (userName != null) {
+                    postParam.put("userName", userName);
+                }
+                SceneDataObject sdo = sdoList.get(i);
+                Object ibmsxianshimingcheng = sdo.get("ibmsxianshimingcheng").value_prim.value;
+                Object ibmsxianshibianma = sdo.get("ibmsxianshibianma").value_prim.value;
+                Object ibmsSceneCode = sdo.get("ibmsSceneCode").value_prim.value;
+                Object ibmsClassCode = sdo.get("ibmsClassCode").value_prim.value;
+                String classCode = (String) sdo.get("classCode").value_prim.value;
+                Object ibmsSceneName = sdo.get("所属场景").value_prim.value;
+                Object ibmsClassName = sdo.get("对象类型").value_prim.value;
+                List<SceneDataObject> infoList = RepositoryContainer.instance.infoArrayDic.get(classCode).set;
+                postParam.put("deviceName", ibmsxianshimingcheng);
+                postParam.put("deviceCode", ibmsxianshibianma);
+                postParam.put("ibmsSceneCode", ibmsSceneCode);
+                postParam.put("ibmsSceneName", ibmsSceneName);
+                postParam.put("ibmsClassCode", ibmsClassCode);
+                postParam.put("ibmsClassName", ibmsClassName);
+                postParam.put("module", "general");
+                postParam.put("classCode", classCode);
+                postParam.put("systemType", "control");
+//                postParam.put("token", "");
+                StringBuffer sb = new StringBuffer();
+                for (String key : infoValueSet.keySet()) {
+                    Object infoValue = infoValueSet.get(key);
+                    SceneDataObject infoDef = null;
+                    for (SceneDataObject infoDefInner : infoList) {
+                        String code = (String) infoDefInner.get("code").value_prim.value;
+                        if (code.equals(key)) {
+                            infoDef = infoDefInner;
+                            break;
+                        }
+                    }
+                    String infoName = key;
+                    if (infoDef != null) {
+                        infoName = (String) infoDef.get("name").value_prim.value;
+                        infoValue = ControlUtil.value2CanRead(infoDef, infoValue);
+                    }
+                    sb.append("[" + infoName + "]" + "设为:" + "[" + infoValue + "]");
+                    sb.append(";");
+                    if (controlReason != null && !controlReason.isEmpty()) {
+                        if (infoDef.get("code").value_prim.value.equals("manualAutoSet")) {
+                            sb.append("原因:" + controlReason + ";");
+                        }
+                    }
+                    String id = (String) sdo.get("id").value_prim.value;
+                    JSONObject obj = Repository.id2object.get(id);
+                    String objInfoValue = (String) obj.get(key);
+                    if (objInfoValue != null && objInfoValue.length() > 0) {
+                        int index_ = objInfoValue.lastIndexOf("-");
+                        String meter = objInfoValue.substring(0, index_);
+                        int funcid = Integer.parseInt(objInfoValue.substring(index_ + 1));
+                        JSONObject point = (JSONObject) points.stream()
+                                .filter(x -> JSONObject.parseObject(x.toString()).get("meter").equals(meter)
+                                        && JSONObject.parseObject(x.toString()).get("funcid").equals(funcid))
+                                .findFirst().get();
+                        String status = (String) point.get("status");
+                        if (status.equals("finish:success")) {
+                            sb.append("控制结果:成功;");
+                        } else {
+                            sb.append("控制结果:失败;");
+                        }
+                    }
+                }
+                for (int j = 1; j <= 2; j++) {
+                    postParam2 = JSONObject.parseObject(postParam.toJSONString());
+                    if (j == 1) {
+                        postParam2.put("details", "【" + ibmsSceneName + "】:" + ibmsxianshimingcheng + "-" + sb.toString());
+                        postParam2.put("logSource", "user");
+                    } else {
+                        postParam2.put("details", sb.toString());
+                        postParam2.put("logSource", "sys");
+                    }
+                    postParamArray.add(postParam2);
+                }
+            }
+            saveBatchOperationLog(postParamArray);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
 
-	public static Object value2CanRead(SceneDataObject infoDef, Object infoValue) {
-		if (infoDef.containsKey("dataSource")) {
-			JSONArray dataSource = (JSONArray) infoDef.get("dataSource").value_prim.value;
-			for (int i = 0; i < dataSource.size(); i++) {
-				JSONObject item = (JSONObject) dataSource.get(i);
-				String code = item.getString("code");
-				double value1 = Double.parseDouble(infoValue.toString());
-				double value2 = Double.parseDouble(code);
-				if (value1 == value2) {
-					String name = item.getString("name");
-					return name;
-				}
-			}
-			return infoValue;
-		} else {
-			return infoValue;
-		}
-	}
+    public static Object value2CanRead(SceneDataObject infoDef, Object infoValue) {
+        if (infoDef.containsKey("dataSource")) {
+            JSONArray dataSource = (JSONArray) infoDef.get("dataSource").value_prim.value;
+            for (int i = 0; i < dataSource.size(); i++) {
+                JSONObject item = (JSONObject) dataSource.get(i);
+                String code = item.getString("code");
+                double value1 = Double.parseDouble(infoValue.toString());
+                double value2 = Double.parseDouble(code);
+                if (value1 == value2) {
+                    String name = item.getString("name");
+                    return name;
+                }
+            }
+            return infoValue;
+        } else {
+            return infoValue;
+        }
+    }
 
-	private static void saveOperationLog(JSONObject postParam) throws Exception {
-		String post_url = Constant.zkt_control_url + "/operationLog/saveOperationLog";
-		String post_result = HttpClientUtil.instance("zkt_control").post(post_url, postParam.toJSONString());
-		JSONObject result = JSON.parseObject(post_result);
-		log.debug(result.toJSONString());
-	}
+    public static void saveOperationLog(JSONObject postParam) throws Exception {
+        String post_url = Constant.zkt_monitor_url + "/operatorLog/save";
+        System.out.println("保存日志url:" + post_url);
+        System.out.println("保存日志boby:" + postParam.toJSONString());
+        String post_result = HttpClientUtil.instance("zkt_control").post(post_url, postParam.toJSONString());
+        JSONObject result = JSON.parseObject(post_result);
+        log.debug(result.toJSONString());
+    }
 
-	private static void saveBatchOperationLog(JSONArray postParam) throws Exception {
-		String post_url = Constant.zkt_control_url + "/operationLog/saveBatchOperationLog";
-		System.out.println("保存日志url:"+post_url );
-		System.out.println("保存日志boby:"+postParam.toJSONString() );
-		String post_result = HttpClientUtil.instance("zkt_control").post(post_url, postParam.toJSONString());
-		JSONObject result = JSON.parseObject(post_result);
-		log.debug(result.toJSONString());
-	}
+    //批量保存日志
+    private static void saveBatchOperationLog(JSONArray postParam) throws Exception {
+        String post_url = Constant.zkt_monitor_url + "/operatorLog/saveBatch";
+        System.out.println("保存日志url:" + post_url);
+        System.out.println("保存日志boby:" + postParam.toJSONString());
+        String post_result = HttpClientUtil.instance("zkt_control").post(post_url, postParam.toJSONString());
+        JSONObject result = JSON.parseObject(post_result);
+        log.debug(result.toJSONString());
+    }
 
-	private static JSONArray set(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, List<SceneDataObject> sdoList)
-			throws Exception {
-		JSONArray result;
-		if (object.containsKey("清单")) {
-			SceneDataValue list = object.get("清单");
-			SceneDataValue detail = object.get("详情");
-			result = setInner(Repository, detail, list.value_array.set, infoValueSet, sdoList);
-		} else {
-			result = setInner(Repository, object, infoValueSet, sdoList);
-		}
-		return result;
-	}
+    private static JSONArray set(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, List<SceneDataObject> sdoList)
+            throws Exception {
+        JSONArray result;
+        if (object.containsKey("清单")) {
+            SceneDataValue list = object.get("清单");
+            SceneDataValue detail = object.get("详情");
+            result = setInner(Repository, detail, list.value_array.set, infoValueSet, sdoList);
+        } else {
+            result = setInner(Repository, object, infoValueSet, sdoList);
+        }
+        return result;
+    }
 
-	private static JSONArray setInner(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, List<SceneDataObject> sdoList)
-			throws Exception {
-		JSONArray points = new JSONArray();
-		setControlValue(object, infoValueSet);
-		build_points(Repository, object, infoValueSet, points);
-		sdoList.add(object);
-		build_object(object, infoValueSet);
-		JSONArray result = post(points);
-		return result;
-	}
+    private static JSONArray setInner(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, List<SceneDataObject> sdoList)
+            throws Exception {
+        JSONArray points = new JSONArray();
+        setControlValue(object, infoValueSet);
+        build_points(Repository, object, infoValueSet, points);
+        sdoList.add(object);
+        build_object(object, infoValueSet);
+        JSONArray result = post(points);
+        return result;
+    }
 
-	private static JSONArray setInner(RepositoryImpl Repository, SceneDataValue detail, List<SceneDataObject> objectArray, JSONObject infoValueSet,
-			List<SceneDataObject> sdoList) throws Exception {
-		if (detail != null) {
-			build_object(detail.value_object, infoValueSet);
-		}
-		JSONArray points = new JSONArray();
-		for (SceneDataObject object : objectArray) {
-			setControlValue(object, infoValueSet);
-			build_points(Repository, (SceneDataObject) object, infoValueSet, points);
-			sdoList.add(object);
-			build_object((SceneDataObject) object, infoValueSet);
-		}
-		JSONArray result = post(points);
-		return result;
-	}
+    private static JSONArray setInner(RepositoryImpl Repository, SceneDataValue detail, List<SceneDataObject> objectArray, JSONObject infoValueSet,
+                                      List<SceneDataObject> sdoList) throws Exception {
+        if (detail != null) {
+            build_object(detail.value_object, infoValueSet);
+        }
+        JSONArray points = new JSONArray();
+        for (SceneDataObject object : objectArray) {
+            setControlValue(object, infoValueSet);
+            build_points(Repository, (SceneDataObject) object, infoValueSet, points);
+            sdoList.add(object);
+            build_object((SceneDataObject) object, infoValueSet);
+        }
+        JSONArray result = post(points);
+        return result;
+    }
 
-	private static void build_points(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, JSONArray points) {
-		String id = (String) object.get("id").value_prim.value;
-		JSONObject obj = Repository.id2object.get(id);
-		for (String key : infoValueSet.keySet()) {
-			String infoValue = (String) obj.get(key);
-			if (infoValue != null && infoValue.length() > 0) {
-				int index_ = infoValue.lastIndexOf("-");
-				String meter = infoValue.substring(0, index_);
-				int funcid = Integer.parseInt(infoValue.substring(index_ + 1));
-				JSONObject point = new JSONObject();
-				if (key.equals("manualAutoSet")) {
-					point.put("virtual", true);
-				}
-				point.put("meter", meter);
-				point.put("funcid", funcid);
-				point.put("data", infoValueSet.get(key));
-				points.add(point);
-			}
-		}
-	}
+    private static void build_points(RepositoryImpl Repository, SceneDataObject object, JSONObject infoValueSet, JSONArray points) {
+        String id = (String) object.get("id").value_prim.value;
+        JSONObject obj = Repository.id2object.get(id);
+        for (String key : infoValueSet.keySet()) {
+            String infoValue = (String) obj.get(key);
+            if (infoValue != null && infoValue.length() > 0) {
+                int index_ = infoValue.lastIndexOf("-");
+                String meter = infoValue.substring(0, index_);
+                int funcid = Integer.parseInt(infoValue.substring(index_ + 1));
+                JSONObject point = new JSONObject();
+                if (key.equals("manualAutoSet")) {
+                    point.put("virtual", true);
+                }
+                point.put("meter", meter);
+                point.put("funcid", funcid);
+                point.put("data", infoValueSet.get(key));
+                points.add(point);
+            }
+        }
+    }
 
-	private static void build_object(SceneDataObject object, JSONObject infoValueSet) {
-		for (String key : infoValueSet.keySet()) {
-			SceneDataValue sdv = object.get(key);
-			if (sdv != null) {
-				sdv.value_prim = new SceneDataPrimitive();
-				sdv.value_prim.value = infoValueSet.get(key);
-			}
-		}
-	}
+    private static void build_object(SceneDataObject object, JSONObject infoValueSet) {
+        for (String key : infoValueSet.keySet()) {
+            SceneDataValue sdv = object.get(key);
+            if (sdv != null) {
+                sdv.value_prim = new SceneDataPrimitive();
+                sdv.value_prim.value = infoValueSet.get(key);
+            }
+        }
+    }
 
-	private static JSONArray post(JSONArray points) throws Exception {
-		JSONObject postJSON = new JSONObject();
-		postJSON.put("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
-		postJSON.put("points", points);
-		if (Constant.control_mode.equals("sync")) {
-			String post_url = Constant.iot_project_url + "/sync_pointsetbatch_post";
-			log.debug(postJSON.toJSONString());
-			System.out.println("url1:"+post_url);
-			System.out.println("boby1:"+postJSON.toJSONString());
-			String post_result = HttpClientUtil.instance("iot_project").post(post_url, postJSON.toJSONString());
-			System.out.println("result1:"+postJSON.toJSONString());
-			JSONObject result = JSON.parseObject(post_result);
-			JSONArray result_points = (JSONArray) result.get("points");
-			log.debug(post_result);
-			return result_points;
-		} else {
-			String post_url = Constant.iot_project_url + "/pointsetbatch_post";
-			log.debug(postJSON.toJSONString());
-			String post_result = HttpClientUtil.instance("iot_project").post(post_url, postJSON.toJSONString());
-			System.out.println("url1:"+post_url);
-			System.out.println("boby1:"+postJSON.toJSONString());
-			System.out.println("result2:"+postJSON.toJSONString());
-			JSONObject result = JSON.parseObject(post_result);
-			JSONArray result_points = (JSONArray) result.get("points");
-			for (int i = 0; i < result_points.size(); i++) {
-				JSONObject item = result_points.getJSONObject(i);
-				String status = item.getString("status");
-				if (status.endsWith("start:sent")) {
-					item.put("status", "finish:success");
-				}else if (status.endsWith("success")) {
-					item.put("status", "finish:success");
-				}
-			}
-			log.debug(post_result);
-			return result_points;
-		}
-	}
+    private static JSONArray post(JSONArray points) throws Exception {
+        JSONObject postJSON = new JSONObject();
+        postJSON.put("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
+        postJSON.put("points", points);
+        if (Constant.control_mode.equals("sync")) {
+            String post_url = Constant.iot_project_url + "/sync_pointsetbatch_post";
+            log.debug(postJSON.toJSONString());
+            System.out.println("url1:" + post_url);
+            System.out.println("boby1:" + postJSON.toJSONString());
+            String post_result = HttpClientUtil.instance("iot_project").post(post_url, postJSON.toJSONString());
+            System.out.println("result1:" + postJSON.toJSONString());
+            JSONObject result = JSON.parseObject(post_result);
+            JSONArray result_points = (JSONArray) result.get("points");
+            log.debug(post_result);
+            return result_points;
+        } else {
+            String post_url = Constant.iot_project_url + "/pointsetbatch_post";
+            log.debug(postJSON.toJSONString());
+            String post_result = HttpClientUtil.instance("iot_project").post(post_url, postJSON.toJSONString());
+            System.out.println("url1:" + post_url);
+            System.out.println("boby1:" + postJSON.toJSONString());
+            System.out.println("result2:" + postJSON.toJSONString());
+            JSONObject result = JSON.parseObject(post_result);
+            JSONArray result_points = (JSONArray) result.get("points");
+            for (int i = 0; i < result_points.size(); i++) {
+                JSONObject item = result_points.getJSONObject(i);
+                String status = item.getString("status");
+                if (status.endsWith("start:sent")) {
+                    item.put("status", "finish:success");
+                } else if (status.endsWith("success")) {
+                    item.put("status", "finish:success");
+                }
+            }
+            log.debug(post_result);
+            return result_points;
+        }
+    }
 }

+ 64 - 79
ibms-data-sdk/src/main/resources/config.xml

@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <root>
     <compute_thread_count>16</compute_thread_count>
-    <compute_thread_sdv_interval>10</compute_thread_sdv_interval>
+    <compute_thread_sdv_interval>100</compute_thread_sdv_interval>
     <http_interval>0</http_interval>
 
-    <groupCode>WD</groupCode>
-	<!--临港:Pj3101150010;龙岗:Pj4403070003-->
-    <projectId>Pj3101150010</projectId>
+	<groupCode>XG</groupCode>
+	 <projectId>Pj5001120003</projectId>
     <sdk_version>SDK-D</sdk_version>
     
     <!-- 控制模式:同步sync 异步async -->
@@ -15,36 +14,34 @@
     <iot_round_d_to enable="true" length="1"/>
 
     <config path="D-config" refresh_enable="true" refresh_interval_second="60"/>
-    <physical_world path="D-physical_world" refresh_enable="true" refresh_interval_second="3600"/>
-    <zkt_physical_world path="D-zkt_physical_world" enable="true" refresh_enable="true" refresh_interval_second="3600"/>
+    <physical_world path="D-physical_world" refresh_enable="false" refresh_interval_second="3600"/>
+    <zkt_physical_world path="D-zkt_physical_world" enable="true" refresh_enable="false" refresh_interval_second="3600"/>
     <ibms_physical_world path="D-ibms_physical_world" enable="true" refresh_enable="true" refresh_interval_second="60"/>
-	<!-- version值选择 old、new、network   -->
-    <info_point path="D-info-point" enable="true" version="new" refresh_enable="true" refresh_interval_second="60"/>
+    <info_point path="D-info-point" enable="true" version="new" refresh_enable="true" refresh_interval_second="600"/>
 
-	<!-- zkt-dmp的服务地址 -->
-	<zkt_dmp url="http://192.168.100.76:9976/" compress="true" />
+<!-- zkt-dmp的服务地址 -->
+	<zkt_dmp url="http://183.230.202.111:30076/" compress="true" />
 	<!-- zkt-monitor的服务地址 -->
-	<zkt_monitor url="http://192.168.100.33:9909/zkt-monitor/" compress="true" />
+	<zkt_monitor url="http://ibmsdev.persagy.com/zkt-monitor/" compress="true"/>
 	<!-- zkt-control的服务地址 -->
-	<zkt_control url="http://192.168.100.33:9909/zkt-control/" />
+	<zkt_control url="http://183.230.202.111:30000/zkt-control/" />
 	<!-- iot-collect的服务地址 -->
-	<iot_collect url="http://192.168.100.33:9909/iot-collect/" />
+	<iot_collect url="http://183.230.202.111:30000/iot-collect/" />
 	<!-- iot-project的websocket地址 -->
-	<iot_websocket url="ws://192.168.100.33:8858/websocket" />
+	<iot_websocket url="ws://183.230.202.111:30018/websocket" />
+	<!-- <iot_websocket url="ws://localhost:8858/websocket" /> -->
 	<!-- iot-project的服务地址 -->
-	<iot_project url="http://192.168.100.33:9909/iot-project/" />
+	<iot_project url="http://183.230.202.111:30000/iot-project/" />
+	<!-- <iot_project url="http://localhost:7101/" /> -->
 	<!-- adm-project的服务地址 -->
 	<adm_project url="http://39.102.40.239:28888/" />
 	<!-- 报警的websocket地址、url服务地址、 service_name服务名(旧版本是zkt-alarm;新版本是ibms-alarm) -->
-	<alarm enable="true" websocket="ws://192.168.100.76:8870/webSocketServer" url="http://192.168.100.33:9909/ibms-alarm/" service_name="ibms-alarm" />
-	<!-- person-center的服务地址 -->
-	<person_center url="http://39.102.40.239:9970/person-center/" />
-	<!-- 天气服务地址 -->
-	<weather url="http://114.215.64.204:9090/EMS_Weather/" />
+	<!-- <alarm enable="true" websocket="ws://183.230.202.111:30070/webSocketServer" url="http://183.230.202.111:30000/ibms-alarm/" service_name="ibms-alarm" /> -->
+	<alarm enable="true" websocket="ws://192.168.100.102:30052/webSocketServer" url="http://ibmsdev.persagy.com/ibms-alarm/" service_name="ibms-alarm" />
+	<person_center url="http://183.230.202.111:30000/person-center/"/>
+    <weather url="http://114.215.64.204:9090/EMS_Weather/"/>
 	<!-- 标尺服务地址 -->
-	<scaleplate url="http://develop.persagy.com/calendar/dye/sdk/" enable="true" />
-	<!-- ibms_config配置服务,读取后台配置 -->
-	<ibms_config url="http://ibmsdev.persagy.com/ibms-config/" enable="true" />
+	<scaleplate url="http://39.102.40.239:9971/dye/sdk/" enable="true" />
 
     <!-- 场景/产品模块编码与后台tab页名称的对应关系 -->
     <SceneCode2TabName sceneCode="ggzm" tabName="公共照明"/>
@@ -57,18 +54,10 @@
     <info_replace objType="system" from="localId" to="ibmsxianshibianma"/>
     <info_replace objType="system" from="localName" to="ibmsxianshimingcheng"/>
     <!-- 非万达用下面四行 -->
-	<!--
     <info_replace objType="space" from="localId" to="ibmsxianshibianma" />
     <info_replace objType="space" from="localName" to="ibmsxianshimingcheng" />
     <info_replace objType="equipment" from="localId" to="ibmsxianshibianma" />
     <info_replace objType="equipment" from="localName" to="ibmsxianshimingcheng" />
-	-->
-    <!-- 万达用下面四行 -->
-    <info_replace objType="space" from="wD_huiyunbendibianma" to="ibmsxianshibianma" />
-    <info_replace objType="space" from="wD_huiyunbendimingcheng" to="ibmsxianshimingcheng" />
-    <info_replace objType="equipment" from="wD_huiyunbendibianma" to="ibmsxianshibianma" />
-    <info_replace objType="equipment" from="wD_huiyunbendimingcheng" to="ibmsxianshimingcheng" />
-
 
     <!-- 子系统连接状态里面,产品模块黑名单 -->
     <!--
@@ -107,131 +96,123 @@
 	<ConfigRelation graphCode="ArchForArch" relCode="Sp2Sp" objFrom="space" objTo="space" nameInFrom="服务于空间" multiplicityFrom="n" nameInTo="被空间服务" multiplicityTo="n" />
 
 	<!-- 中转服务的编码、请求类型、url服务地址(根据实际情况添加) -->
-	<Redirect code="获取报警时长" http_request_type="get" url="http://39.102.43.179:9982/alarmTime/query">
+	<Redirect code="获取报警时长" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/alarmTime/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="香港置地最近24小时功率" http_request_type="post" url="http://39.102.43.179:9982/energy/24data/list">
+	<Redirect code="香港置地最近24小时功率" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/energy/24data/list">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="香港置地首页能耗数据" http_request_type="post" url="http://39.102.43.179:9982/energy/query">
+	<Redirect code="香港置地首页能耗数据" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/energy/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询能源系统数据" http_request_type="post" url="http://39.102.43.179:9982/energySystem/query">
+	<Redirect code="查询能源系统数据" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/energySystem/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询楼层平均温度" http_request_type="get" url="http://39.102.43.179:9982/floorAvgTemperature/query">
+	<Redirect code="查询楼层平均温度" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/floorAvgTemperature/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询详细信息列表" http_request_type="get" url="http://39.102.43.179:9982/itemDataList/query">
+	<Redirect code="查询详细信息列表" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/itemDataList/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询详细信息月份列表" http_request_type="get" url="http://39.102.43.179:9982/itemMonthDataList/query">
+	<Redirect code="查询详细信息月份列表" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/itemMonthDataList/query">
 		<!-- 中转服务的header,有几项就写几行 -->
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询项目概括" http_request_type="get" url="http://39.102.43.179:9982/projectSummary/query">
+	<Redirect code="查询项目概括" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/projectSummary/query">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="获取数据质量总览" http_request_type="get" url="http://39.102.43.179:9982/qualityTotal/query">
+	<Redirect code="获取数据质量总览" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/qualityTotal/query">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询温控平台数据" http_request_type="post" url="http://39.102.43.179:9982/temperatureControl/query">
+	<Redirect code="查询温控平台数据" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/temperatureControl/query">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询温控平台数据v2" http_request_type="post" url="http://39.102.43.179:9982/temperatureControl/query/v2">
+	<Redirect code="查询温控平台数据v2" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/temperatureControl/query/v2">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询温控平台数据v3" http_request_type="post" url="http://39.102.43.179:9982/temperatureControl/query/v3">
+	<Redirect code="查询温控平台数据v3" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/temperatureControl/query/v3">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询定额管理" http_request_type="get" url="http://39.102.43.179:9982/weekNeedMatter/query">
+	<Redirect code="查询定额管理" http_request_type="get" url="http://183.230.202.111:30000/zkt-monitor/weekNeedMatter/query">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="查询附近摄像头" http_request_type="post" url="http://192.168.100.33:9909/zkt-monitor/camera/nearest/v2">
+	<Redirect code="查询附近摄像头" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/camera/nearest/v2">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
 	<!--开闭店需配置以下几个地址  url的ip和端口对应zkt-control服务的ip和端口-->
-	<Redirect code="查询子系统配置" http_request_type="post" url="http://192.168.0.33:9980/ocssiConfigsubsystemStatus/queryOcssiConfigsubsystemStatusList">
-		<header key="Content-Type" value="application/json" />
+	<Redirect code="查询子系统配置" http_request_type="post" url="http://183.230.202.111:30000/zkt-control/ocssiConfigsubsystemStatus/queryOcssiConfigsubsystemStatusList">
+		<header key="Content-Type" value="application/json" />F
 	</Redirect>
-	<Redirect code="查询环境配置" http_request_type="post" url="http://192.168.100.33:9909/ocssiConfigenvi/queryOcssiConfigenviList">
-		<header key="Content-Type" value="application/json" />
+	<Redirect code="查询环境配置" http_request_type="post" url="http://183.230.202.111:30000/zkt-control/ocssiConfigenvi/queryOcssiConfigenviList">
+		<header key="Content-Type" value="application/json" />F
 	</Redirect>
-	<Redirect code="查询重点监控配置" http_request_type="post" url="http://192.168.100.33:9909/ocssiConfigfocusMonitor/queryOcssiConfigfocusMonitorList">
+	<Redirect code="查询重点监控配置" http_request_type="post" url="http://183.230.202.111:30000/zkt-control/ocssiConfigfocusMonitor/queryOcssiConfigfocusMonitorList">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="关键设备开关状态" http_request_type="get" url="http://192.168.100.33:9909/ocssiRealTime/listKeyEquipStatus">
+	<Redirect code="关键设备开关状态" http_request_type="get" url="http://183.230.202.111:30000/zkt-control/ocssiRealTime/listKeyEquipStatus">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="设备计划开关状态" http_request_type="get" url="http://192.168.100.33:9909/ocssiRealTime/listEquipPlanStatus">
+	<Redirect code="设备计划开关状态" http_request_type="get" url="http://183.230.202.111:30000/zkt-control/ocssiRealTime/listEquipPlanStatus">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="设备在离线状态" http_request_type="get" url="http://192.168.100.33:9909/ocssiRealTime/listEquipOnlineStatus">
+	<Redirect code="设备在离线状态" http_request_type="get" url="http://183.230.202.111:30000/zkt-control/ocssiRealTime/listEquipOnlineStatus">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
 	<!--退出登录,需配置人员服务的地址和端口-->
-	<Redirect code="退出登录" http_request_type="post" url="http://39.102.40.239:9970/person-center/user/logout">
+	<Redirect code="退出登录" http_request_type="post" url="http://183.230.202.111:30000/person-center/user/logout">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--车位负载率,需配置zkt_monitor服务的地址和接口-->
-	<Redirect code="负载率" http_request_type="post" url="http://192.168.0.33:9982/parklot/loadCurrentRateOfCarport">
+	<Redirect code="负载率" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/parklot/loadCurrentRateOfCarport">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="负载率曲线" http_request_type="post" url="http://192.168.0.33:9982/parklot/load24HRateOfCarport">
+	<Redirect code="负载率曲线" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/parklot/load24HRateOfCarport">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--香港置地登录,需配置zkt_monitor的地址和端口-->
-	<Redirect code="登录" http_request_type="post" url="http://39.102.43.179:9982/zkt-monitor/user/login">
+	<Redirect code="登录" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/user/login">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--香港置地首页环境品质面板,需配置zkt_monitor的地址和端口-->
-	<Redirect code="环境品质" http_request_type="post" url="http://39.102.43.179:9982/environmentQuality/getRealTimeRateUseCache">
+	<Redirect code="环境品质" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/environmentQuality/getRealTimeRateUseCache">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="查询环境达标率列表" http_request_type="post" url="http://39.102.43.179:9982/environmentQuality/queryDetails/list">
+	<Redirect code="查询环境达标率列表" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/environmentQuality/queryDetails/list">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="查询环境达标率图片" http_request_type="post" url="http://39.102.43.179:9982/environmentQuality/queryDetails/pictureData">
+	<Redirect code="查询环境达标率图片" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/environmentQuality/queryDetails/pictureData">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="获取开闭店时间" http_request_type="post" url="http://39.102.43.179:9982/environmentQuality/getMarkOpenAndCloseTime">
+	<Redirect code="获取开闭店时间" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/environmentQuality/getMarkOpenAndCloseTime">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="获取第一条达标率时间" http_request_type="post" url="http://39.102.43.179:9982/environmentQuality/getProjectStartTime">
+	<Redirect code="获取第一条达标率时间" http_request_type="post" url="http://183.230.202.111:30000/zkt-monitor/environmentQuality/getProjectStartTime">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--消防管理模块,需配置ibms-alarm的地址和端口-->
-	<Redirect code="折线图统计" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/fire-alarm-count">
+	<Redirect code="折线图统计" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/fire-alarm-count">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="防火分区统计" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/zone-equ-alarm-count">
+	<Redirect code="防火分区统计" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/zone-equ-alarm-count">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="首页火灾故障报警统计" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/today-alarm-count">
+	<Redirect code="首页火灾故障报警统计" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/today-alarm-count">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
-	<Redirect code="七天报警统计" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/week-count">
+	<Redirect code="七天报警统计" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/week-count">
 		<header key="Content-Type" value="application/json" />
 	</Redirect>
 	<!--热泵系统控制、状态判断,需配置zkt_control的地址和端口-->
-	<Redirect code="系统开关控制" http_request_type="post" url="http://39.102.43.179:9980/airCooledHeatPump/control">
-		<header key="Content-Type" value="application/json"/>
-	</Redirect>
-	<Redirect code="系统状态判断" http_request_type="post" url="http://39.102.43.179:9980/airCooledHeatPump/status">
+	<Redirect code="系统开关控制" http_request_type="post" url="http://183.230.202.111:30000/zkt-control/airCooledHeatPump/control">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<!--下发布撤防指令,需配置zkt_control的地址和端口-->
-	<Redirect code="下发布撤防指令" http_request_type="post" url="http://39.102.43.179:9980/security/zone/order">
-		<header key="Content-Type" value="application/json"/>
-	</Redirect>
-	<!--获取base64验证码,需配置person_center的地址和端口-->
-	<Redirect code="获取验证码" http_request_type="post" url="http://39.102.40.239:9970/person-center/user/getCaptchaBase64">
+	<Redirect code="系统状态判断" http_request_type="post" url="http://183.230.202.111:30000/zkt-control/airCooledHeatPump/status">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--左侧-主动拉取全量的实时报警记录,需配置alarm的地址和端口-->
@@ -263,7 +244,7 @@
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--添加操作日志-->
-	<Redirect code="添加日志" http_request_type="post" url="http://192.168.100.33:9909/zkt-control/operationLog/saveOperationLog">
+	<Redirect code="添加日志" http_request_type="post" url="http://ibmsdev.persagy.com/zkt-control/operationLog/saveOperationLog">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
 	<!--查询指定项目的报警类型列表-->
@@ -314,7 +295,11 @@
 	<Redirect code="下发模式指令" http_request_type="post" url="http://192.168.100.33:9909/zkt-control/logicalGrouping/presentsetByPlanModel">
 		<header key="Content-Type" value="application/json"/>
 	</Redirect>
-	<Redirect code="test-get1" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/list" />
+	<!--系统图可控设备列表-->
+	<Redirect code="查询可控设备" http_request_type="post" url="http://ibmsdev.persagy.com/ibms-config/sysGraphCtrl/querySysGraphCtrlList">
+		<header key="Content-Type" value="application/json"/>
+	</Redirect>
+	<Redirect code="test-get1" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/list" />
 	<Redirect code="test-post1" http_request_type="post" url="http://192.168.4.69:8806/zkt-sdk/post" />
-	<Redirect code="test-get2" http_request_type="get" url="http://39.102.43.179:9993/alarm-record/list?projectId=Pj4403070003&amp;groupCode=WD" />
+	<Redirect code="test-get2" http_request_type="get" url="http://183.230.202.111:30000/ibms-alarm/alarm-record/list?projectId=Pj4403070003&amp;groupCode=WD" />
 </root>