feat(diagram): DiagramVo 增 positions 布局单源字段
This commit is contained in:
@@ -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<>();
|
||||
|
||||
@@ -111,7 +111,7 @@ class FlowDiagramServiceTest {
|
||||
mock(com.yunhai.flowcenter.repository.FlwInstanceRepository.class),
|
||||
taskRepository, ccRepository,
|
||||
mock(com.yunhai.flowcenter.repository.FlwRouteLogRepository.class),
|
||||
engine, userClient);
|
||||
engine, userClient, new DiagramLayoutService());
|
||||
}
|
||||
|
||||
private FlwDef def(String json) {
|
||||
|
||||
Reference in New Issue
Block a user