From 02e9ca26a1824acdbf113b89182413a40a2a5ee8 Mon Sep 17 00:00:00 2001 From: libertyspy Date: Thu, 26 Mar 2026 23:59:15 +0800 Subject: [PATCH] UPDATE: VERSION-20260326 --- .../web/core/BehaviortreeProcessor.java | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/auto-solution-admin/src/main/java/com/solution/web/core/BehaviortreeProcessor.java b/auto-solution-admin/src/main/java/com/solution/web/core/BehaviortreeProcessor.java index d51d846..2c41d49 100644 --- a/auto-solution-admin/src/main/java/com/solution/web/core/BehaviortreeProcessor.java +++ b/auto-solution-admin/src/main/java/com/solution/web/core/BehaviortreeProcessor.java @@ -20,8 +20,11 @@ import com.solution.web.core.graph.GraphEdge; import com.solution.web.core.graph.GraphNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Component @@ -98,10 +101,17 @@ public class BehaviortreeProcessor { instanceKeyMap.put(node.getKey(), instance); if (node.hasParameters()) { - // 插入parameter nodeparameter - for (Templateparameterdef parameter : node.getParameters()) { - Nodeparameter nodeparameter = createNodeParameter(behaviortree, parameter, instance); - nodeparameterService.insertNodeparameter(nodeparameter); + if (node.isMultiable()) { + List nodeparameters = createMultiableNodeparameter(behaviortree, node, instance); + for (Nodeparameter nodeparameter : nodeparameters) { + nodeparameterService.insertNodeparameter(nodeparameter); + } + } else { + // 插入parameter nodeparameter + for (Templateparameterdef parameter : node.getParameters()) { + Nodeparameter nodeparameter = createNodeParameter(behaviortree, parameter, instance); + nodeparameterService.insertNodeparameter(nodeparameter); + } } } nodeKeyIndexMap.put(node.getKey(), index); @@ -148,6 +158,47 @@ public class BehaviortreeProcessor { return connection; } + private List createMultiableNodeparameter(Behaviortree behaviortree, GraphNode node, + Treenodeinstance instance) { + + List nodeparameters = new ArrayList<>(); + + Map> idValues = new HashMap<>(); + List tmpValues = null; + Map> mappedValues = new HashMap<>(); + List tmpDefs = null; + + for (Templateparameterdef parameter : node.getParameters()) { + tmpDefs = mappedValues.get(parameter.getId() ); + if (null == tmpDefs) { + tmpDefs = new ArrayList<>(); + } + tmpDefs.add(parameter); + mappedValues.put(parameter.getId(), tmpDefs); + + tmpValues = idValues.get(parameter.getId() ); + if (null == tmpValues) { + tmpValues = new ArrayList<>(); + } + tmpValues.add(parameter.getDefaultValue()); + idValues.put(parameter.getId(), tmpValues); + } + + int index = 0; + for (Long id : idValues.keySet()) { + tmpValues = idValues.get(id); + Nodeparameter nodeparameter = new Nodeparameter(); + nodeparameter.setTreeId(behaviortree.getId()); + nodeparameter.setNodeInstanceId(instance.getId()); + nodeparameter.setParamDefId(id); + nodeparameter.setValue(StringUtils.collectionToCommaDelimitedString(tmpValues)); + nodeparameter.setGroupIndex(index); + nodeparameters.add(nodeparameter); + index++; + } + return nodeparameters; + } + private Nodeparameter createNodeParameter(Behaviortree behaviortree, Templateparameterdef parameter, Treenodeinstance instance) { Nodeparameter nodeparameter = new Nodeparameter(); @@ -155,6 +206,7 @@ public class BehaviortreeProcessor { nodeparameter.setNodeInstanceId(instance.getId()); nodeparameter.setParamDefId(parameter.getId()); nodeparameter.setValue(parameter.getDefaultValue()); + nodeparameter.setGroupIndex(parameter.getGroupIndex()); return nodeparameter; }