diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneRoleServiceImpl.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneRoleServiceImpl.java index 30245b54..deb5bea8 100644 --- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneRoleServiceImpl.java +++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneRoleServiceImpl.java @@ -85,123 +85,124 @@ public class SceneRoleServiceImpl implements ISceneRoleService { // 连线信息 String edgeStr = sceneRole.getContent(); JSONObject edgeObj = JSONObject.parseObject(edgeStr); - // 节点坐标, 类型信息 用于下方区分出 开始, 结束, 普通 三种节点类型 - JSONArray nodeArray = JSONArray.parseArray(edgeObj.get("nodes").toString()); - // 循环节点信息取出开始与结束的id - String startId = ""; - String endId = ""; - for (int j=0; j> paramsList = new ArrayList<>(); - // 在新增的时候进行数据拼装. 避免查询时拼接消耗时间 - 节点拼接 - for (int i=0; i tmp = new HashMap<>(); - // 以节点做为基础进行拼装 - JSONObject node = nodeArray.getJSONObject(i); - tmp.put("questionId", node.getString("id")); - // 处理nodeId, 并更改开始与结束 - if (startId.equals(node.getString("id"))) { - tmp.put("nodeId", "1"); - } else if (endId.equals(node.getString("id"))) { - tmp.put("nodeId", "-1"); - } else { - tmp.put("nodeId", node.getString("id")); - } + // 线坐标, 来源, 目标信息 + JSONArray edgeArray = JSONArray.parseArray(edgeObj.get("edges").toString()); + // 节点+坐标值信息 + String valueArrayStr = sceneRole.getValueArray(); + JSONArray valueArray = JSONArray.parseArray(valueArrayStr); + + List> paramsList = new ArrayList<>(); + // 在新增的时候进行数据拼装. 避免查询时拼接消耗时间 - 节点拼接 + for (int i = 0; i < nodeArray.size(); i++) { + Map tmp = new HashMap<>(); + // 以节点做为基础进行拼装 + JSONObject node = nodeArray.getJSONObject(i); + tmp.put("questionId", node.getString("id")); + // 处理nodeId, 并更改开始与结束 + if (startId.equals(node.getString("id"))) { + tmp.put("nodeId", "1"); + } else if (endId.equals(node.getString("id"))) { + tmp.put("nodeId", "-1"); + } else { + tmp.put("nodeId", node.getString("id")); + } - // 循环线信息获取来源, 目标信息 - Set tmpSet = new HashSet(); - for (int j=0; j tmp = new HashMap<>(); - // 以线做为基础进行拼装 - JSONObject edge = edgeArray.getJSONObject(i); - tmp.put("questionId", edge.get("id")); - tmp.put("nodeId", edge.get("id")); - - // 循环线信息获取来源, 目标信息 - Set tmpSet = new HashSet(); - for (int j=0; j tmp = new HashMap<>(); + // 以线做为基础进行拼装 + JSONObject edge = edgeArray.getJSONObject(i); + tmp.put("questionId", edge.get("id")); + tmp.put("nodeId", edge.get("id")); + + // 循环线信息获取来源, 目标信息 + Set tmpSet = new HashSet(); + for (int j = 0; j < edgeArray.size(); j++) { + JSONObject edge2 = edgeArray.getJSONObject(j); + // 先通过来源id和节点进行匹配 , 匹配上后, 当前id便是节点需要钱我 + // 作为 指向 -1 的倒数第二个节点需要单度处理下 + if (edge2.get("id").equals(edge.get("id"))) { + if ("1".equals(tmp.get("nodeId"))) { + continue; + } else { + tmpSet.add(edge.get("targetNodeId")); + } } } - } - tmp.put("outs", tmpSet); + tmp.put("outs", tmpSet); - // 填充节点信息的数据 - tmp.putAll(this.fillValueJson(valueArray, edge.getString("id"))); - paramsList.add(tmp); - } + // 填充节点信息的数据 + tmp.putAll(this.fillValueJson(valueArray, edge.getString("id"))); + paramsList.add(tmp); + } - // 单独处理下 指向 -1 的最后一个节点 - String qId = "-1"; - String sId = "-1"; - for (Map m : paramsList) { - if ("-1".equals(m.get("nodeId"))) { - qId = m.get("questionId").toString(); // 07 - for (int j=0; j m : paramsList) { + if ("-1".equals(m.get("nodeId"))) { + qId = m.get("questionId").toString(); // 07 + for (int j = 0; j < edgeArray.size(); j++) { + JSONObject edge = edgeArray.getJSONObject(j); + if (edge.get("targetNodeId").equals(qId)) { + // 找到指向结束节点的节点 + sId = edge.getString("sourceNodeId"); + } } } } - } - // 根据 获得的sId修改节点只接修改指向 - for (Map m : paramsList) { - if (sId.equals(m.get("questionId").toString())) { - Set tp = new HashSet(); - tp.add(qId); - m.put("outs", tp); - } - // 将结束节点node改为 google 减少小程序端代码的修改 - if ("-1".equals(m.get("nodeId"))) { - m.put("nodeId", m.get("questionId")); - m.put("questionId", "google"); + // 根据 获得的sId修改节点只接修改指向 + for (Map m : paramsList) { + if (sId.equals(m.get("questionId").toString())) { + Set tp = new HashSet(); + tp.add(qId); + m.put("outs", tp); + } + // 将结束节点node改为 google 减少小程序端代码的修改 + if ("-1".equals(m.get("nodeId"))) { + m.put("nodeId", m.get("questionId")); + m.put("questionId", "google"); + } } - } - - sceneRole.setResJson(JSON.toJSONString(paramsList)); + sceneRole.setResJson(JSON.toJSONString(paramsList)); + } UserBean userBean = userApi.getCurrentUser(); if (Objects.nonNull(userBean)) { sceneRole.setUpdateBy(userBean.getUserName());