feat(diagram): DiagramVo 增 positions 布局单源字段

This commit is contained in:
chenxing
2026-10-03 13:51:45 +08:00
parent cacdd4ee14
commit 09c3c0c38c
3 changed files with 19 additions and 1 deletions
@@ -123,6 +123,11 @@ public final class FlowModels {
private List<EdgeVo> edges;
/** 画布坐标(nodeId→{x,y},设计器保存时透传;空=查看器自行自动布局) */
private Map<String, Map<String, Integer>> layout;
/**
* 布局单源(2026-10-03 三视图统一):nodeId → {x,y,w,h}(内容区坐标,min 归零)。
* 查看端(前端 SVG / PNG)一律以此为准;layout(设计器画布坐标)已废弃,兼容期仍下发。
*/
private Map<String, Map<String, Integer>> positions;
}
/** 示意图节点(label/subLabel 已按视图解析好,前端只画不解析;state 仅 instance 口径有值) */
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -59,6 +60,7 @@ public class FlowDiagramService {
private final FlwRouteLogRepository routeLogRepository;
private final FlowEngine flowEngine;
private final OpenApiUserClient userClient;
private final DiagramLayoutService diagramLayoutService;
/** flowGuid 分支:最高已发布版(查询范式同 OapiFlowService.getFlow) */
public FlowModels.DiagramVo byGuid(Long schId, String flowGuid, String mode) {
@@ -140,6 +142,17 @@ public class FlowDiagramService {
edges.add(ev);
}
vo.setEdges(edges);
// 布局单源(2026-10-03 三视图统一):与 PNG 同源,查看端以此为准
Map<String, Map<String, Integer>> positions = new LinkedHashMap<>();
diagramLayoutService.layout(nodes, edges).forEach((id, b) -> {
Map<String, Integer> p = new LinkedHashMap<>();
p.put("x", b[0]);
p.put("y", b[1]);
p.put("w", b[2]);
p.put("h", b[3]);
positions.put(id, p);
});
vo.setPositions(positions);
// 画布坐标透传(设计器保存;缺失时前端自行 Kahn 布局)
if (model.layout != null && !model.layout.isEmpty()) {
Map<String, Map<String, Integer>> layout = new HashMap<>();