pref(flow): 优化流程保存后的数据更新逻辑和子流程的数据处理逻辑

master
钟良源 3 months ago
parent a340e1ff4b
commit d7ca2dbd3b

@ -7,7 +7,7 @@ import {
Node, Node,
Edge Edge
} from '@xyflow/react'; } from '@xyflow/react';
import { refPublish, setMainFlow, setMainFlowNew, setSubFlowNew } from '@/api/appRes'; import { getAppInfoNew, setMainFlowNew, setSubFlowNew } from '@/api/appRes';
import { Message } from '@arco-design/web-react'; import { Message } from '@arco-design/web-react';
import { nodeTypeMap, registerNodeType } from '@/components/FlowEditor/node'; import { nodeTypeMap, registerNodeType } from '@/components/FlowEditor/node';
import { convertFlowData, reverseConvertFlowData, revertFlowData } from '@/utils/convertFlowData'; import { convertFlowData, reverseConvertFlowData, revertFlowData } from '@/utils/convertFlowData';
@ -22,7 +22,7 @@ import {
updateEventListOld, updateEventListOld,
addRuntimeLog, addRuntimeLog,
clearRuntimeLogs, clearRuntimeLogs,
updateRuntimeId updateRuntimeId, updateFlowData
} from '@/store/ideContainer'; } from '@/store/ideContainer';
import { import {
validateAllNodes, validateAllNodes,
@ -912,18 +912,24 @@ export const useFlowCallbacks = (
}; };
} }
else if (nodeType === 'SUB') { else if (nodeType === 'SUB') {
const flowMainData = flowData[currentAppData.id]?.main?.components; const flowSubMap = flowData[currentAppData.id]?.subMap || {};
const sameData: any = Object.values(flowMainData).filter((item: any) => { const sameData: any = flowSubMap[newNode.data.compId];
if (item?.component?.compId === newNode.data.compId) return item; if (sameData) {
});
if (sameData.length) {
newNode.data.component = { newNode.data.component = {
...sameData[0].component type: nodeType,
compId: newNode.data.compId,
customDef: JSON.stringify({
dataIns: newNode.data.parameters.dataIns,
dataOuts: newNode.data.parameters.dataOuts,
subflowId: sameData,
name: newNode.data.title
})
}; };
} }
else { else {
newNode.data.component = { newNode.data.component = {
type: nodeType type: nodeType,
compId: newNode.data.compId
}; };
} }
} }
@ -1061,18 +1067,24 @@ export const useFlowCallbacks = (
}; };
} }
else if (nodeType === 'SUB') { else if (nodeType === 'SUB') {
const flowMainData = flowData[currentAppData.id]?.main?.components; const flowSubMap = flowData[currentAppData.id]?.subMap || {};
const sameData: any = Object.values(flowMainData).filter((item: any) => { const sameData: any = flowSubMap[newNode.data.compId];
if (item?.component?.compId === newNode.data.compId) return item; if (sameData) {
});
if (sameData.length) {
newNode.data.component = { newNode.data.component = {
...sameData[0].component type: nodeType,
compId: newNode.data.compId,
customDef: JSON.stringify({
dataIns: newNode.data.parameters.dataIns,
dataOuts: newNode.data.parameters.dataOuts,
subflowId: sameData,
name: newNode.data.title
})
}; };
} }
else { else {
newNode.data.component = { newNode.data.component = {
type: nodeType type: nodeType,
compId: newNode.data.compId
}; };
} }
} }
@ -1174,6 +1186,19 @@ export const useFlowCallbacks = (
...canvasDataMap, ...canvasDataMap,
[currentAppData.id]: { nodes, edges } [currentAppData.id]: { nodes, edges }
})); }));
const appRes: any = await getAppInfoNew(currentAppData.id);
// 更新 flowData 中的数据
dispatch(updateFlowData({ [currentAppData.id]: appRes.data }));
// 同步更新到 canvasDataMap
if (appRes.data.main?.components) {
const { nodes, edges } = convertFlowData(appRes.data.main.components, true);
setNodes(nodes);
setEdges(edges);
dispatch(updateCanvasDataMap({
...canvasDataMap,
[currentAppData.id]: { nodes, edges }
}));
}
} }
else { else {
Message.error(res.message); Message.error(res.message);
@ -1200,6 +1225,19 @@ export const useFlowCallbacks = (
...canvasDataMap, ...canvasDataMap,
[currentAppData.id]: { nodes, edges } [currentAppData.id]: { nodes, edges }
})); }));
const appRes: any = await getAppInfoNew(currentAppData.id);
// 更新 flowData 中的数据
dispatch(updateFlowData({ [currentAppData.id]: appRes.data }));
// 同步更新到 canvasDataMap
if (appRes.data.main?.components) {
const { nodes, edges } = convertFlowData(appRes.data.main.components, true);
setNodes(nodes);
setEdges(edges);
dispatch(updateCanvasDataMap({
...canvasDataMap,
[currentAppData.id]: { nodes, edges }
}));
}
} }
else { else {
Message.error(res.message); Message.error(res.message);

@ -536,7 +536,7 @@ export const reverseConvertFlowData = (nodes: any[], edges: any[], complexKV: an
}; };
// 处理 component 信息 // 处理 component 信息
if (node.type === 'SUB' && !node.customDef) { if (node.type === 'SUB' && !node.data.component.customDef) {
nodeConfig.component = { nodeConfig.component = {
type: 'SUB', type: 'SUB',
compId: node.data.compId, compId: node.data.compId,

Loading…
Cancel
Save