feat(diagram): DiagramVo 增 positions 布局单源字段
This commit is contained in:
@@ -123,6 +123,11 @@ public final class FlowModels {
|
|||||||
private List<EdgeVo> edges;
|
private List<EdgeVo> edges;
|
||||||
/** 画布坐标(nodeId→{x,y},设计器保存时透传;空=查看器自行自动布局) */
|
/** 画布坐标(nodeId→{x,y},设计器保存时透传;空=查看器自行自动布局) */
|
||||||
private Map<String, Map<String, Integer>> layout;
|
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 口径有值) */
|
/** 示意图节点(label/subLabel 已按视图解析好,前端只画不解析;state 仅 instance 口径有值) */
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -59,6 +60,7 @@ public class FlowDiagramService {
|
|||||||
private final FlwRouteLogRepository routeLogRepository;
|
private final FlwRouteLogRepository routeLogRepository;
|
||||||
private final FlowEngine flowEngine;
|
private final FlowEngine flowEngine;
|
||||||
private final OpenApiUserClient userClient;
|
private final OpenApiUserClient userClient;
|
||||||
|
private final DiagramLayoutService diagramLayoutService;
|
||||||
|
|
||||||
/** flowGuid 分支:最高已发布版(查询范式同 OapiFlowService.getFlow) */
|
/** flowGuid 分支:最高已发布版(查询范式同 OapiFlowService.getFlow) */
|
||||||
public FlowModels.DiagramVo byGuid(Long schId, String flowGuid, String mode) {
|
public FlowModels.DiagramVo byGuid(Long schId, String flowGuid, String mode) {
|
||||||
@@ -140,6 +142,17 @@ public class FlowDiagramService {
|
|||||||
edges.add(ev);
|
edges.add(ev);
|
||||||
}
|
}
|
||||||
vo.setEdges(edges);
|
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 布局)
|
// 画布坐标透传(设计器保存;缺失时前端自行 Kahn 布局)
|
||||||
if (model.layout != null && !model.layout.isEmpty()) {
|
if (model.layout != null && !model.layout.isEmpty()) {
|
||||||
Map<String, Map<String, Integer>> layout = new HashMap<>();
|
Map<String, Map<String, Integer>> layout = new HashMap<>();
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class FlowDiagramServiceTest {
|
|||||||
mock(com.yunhai.flowcenter.repository.FlwInstanceRepository.class),
|
mock(com.yunhai.flowcenter.repository.FlwInstanceRepository.class),
|
||||||
taskRepository, ccRepository,
|
taskRepository, ccRepository,
|
||||||
mock(com.yunhai.flowcenter.repository.FlwRouteLogRepository.class),
|
mock(com.yunhai.flowcenter.repository.FlwRouteLogRepository.class),
|
||||||
engine, userClient);
|
engine, userClient, new DiagramLayoutService());
|
||||||
}
|
}
|
||||||
|
|
||||||
private FlwDef def(String json) {
|
private FlwDef def(String json) {
|
||||||
|
|||||||
Reference in New Issue
Block a user