From 5276a6b16fdf0e345bd0a952abc998c1bf4e3725 Mon Sep 17 00:00:00 2001 From: MHW Date: Mon, 13 Apr 2026 14:19:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=A1=8C=E4=B8=BA=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../behaviour/BehaviortreeController.java | 3 +- .../web/core/BehaviortreeProcessor.java | 73 +++++++++++++++++++ .../system/service/IBehaviortreeService.java | 7 -- .../service/impl/BehaviortreeServiceImpl.java | 20 ----- 4 files changed, 75 insertions(+), 28 deletions(-) diff --git a/auto-solution-admin/src/main/java/com/solution/web/controller/behaviour/BehaviortreeController.java b/auto-solution-admin/src/main/java/com/solution/web/controller/behaviour/BehaviortreeController.java index 9af1ee2..c664e37 100644 --- a/auto-solution-admin/src/main/java/com/solution/web/controller/behaviour/BehaviortreeController.java +++ b/auto-solution-admin/src/main/java/com/solution/web/controller/behaviour/BehaviortreeController.java @@ -106,7 +106,8 @@ public class BehaviortreeController extends BaseController @PostMapping("/copy") public AjaxResult copy(@RequestBody Behaviortree behaviortree) { - return toAjax(behaviortreeService.copy(behaviortree)); + //return toAjax(behaviortreeService.copy(behaviortree)); + return toAjax(behaviortreeProcessor.copy(behaviortree)); } /** 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 52f3bb2..32185af 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 @@ -8,8 +8,10 @@ package com.solution.web.core; * that was distributed with this source code. */ +import cn.hutool.core.util.ObjectUtil; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.solution.common.constant.ExceptionConstants; import com.solution.system.domain.*; import com.solution.system.service.IBehaviortreeService; import com.solution.system.service.INodeconnectionService; @@ -76,7 +78,59 @@ public class BehaviortreeProcessor { } private void processGraph(Behaviortree behaviortree) { + //代码丢失 原:libertyspy 改:MHW + Graph graph = null; + try { + graph = objectMapper.readValue(behaviortree.getXmlContent(), Graph.class); + } catch (Exception e) { + // skip + e.printStackTrace(); + } + if (null == graph) { + return; + } + + // 插入节点 treenodeinstance + Map instanceKeyMap = new HashMap<>(); + Map nodeKeyIndexMap = new HashMap<>(); + Map nodesMap = new HashMap<>(); + if (graph.hasNodes()) { + Long index = 0L; + for (GraphNode node : graph.getNodes()) { + nodesMap.put(node.getKey(), node); + + Treenodeinstance instance = createNodeInstance(behaviortree, node); + treenodeinstanceService.insertTreenodeinstance(instance); + instanceKeyMap.put(node.getKey(), instance); + + if (node.hasParameters()) { + 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); + + index++; + } + } + + // 插入连线 nodeconnection + if (graph.hasEdges()) { + for (GraphEdge edge : graph.getEdges()) { + Nodeconnection connection = createConnection(behaviortree, edge, nodesMap, instanceKeyMap, nodeKeyIndexMap); + nodeconnectionService.insertNodeconnection(connection); + } + } } private Nodeconnection createConnection(Behaviortree behaviortree, GraphEdge edge, @@ -173,4 +227,23 @@ public class BehaviortreeProcessor { } + /** + * 复制行为树 + * @param behaviortree + * @return + */ + public int copy(Behaviortree behaviortree) { + if(ObjectUtil.isEmpty(behaviortree)){ + throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION); + } + String name = behaviortree.getName(); + String newName = name + "_" + behaviortree.getId(); + + String englishName = behaviortree.getEnglishName(); + String newEnglishName = englishName + "_" + behaviortree.getId(); + behaviortree.setEnglishName(newEnglishName); + behaviortree.setName(newName); + + return this.create(behaviortree); + } } diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/service/IBehaviortreeService.java b/auto-solution-behaviour/src/main/java/com/solution/system/service/IBehaviortreeService.java index 8e1479d..583124e 100644 --- a/auto-solution-behaviour/src/main/java/com/solution/system/service/IBehaviortreeService.java +++ b/auto-solution-behaviour/src/main/java/com/solution/system/service/IBehaviortreeService.java @@ -62,11 +62,4 @@ public interface IBehaviortreeService * @return 结果 */ public int deleteBehaviortreeById(Long id); - - /** - * 复制行为树 - * @param behaviortree - * @return - */ - int copy(Behaviortree behaviortree); } diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/service/impl/BehaviortreeServiceImpl.java b/auto-solution-behaviour/src/main/java/com/solution/system/service/impl/BehaviortreeServiceImpl.java index ebc3904..07b58ad 100644 --- a/auto-solution-behaviour/src/main/java/com/solution/system/service/impl/BehaviortreeServiceImpl.java +++ b/auto-solution-behaviour/src/main/java/com/solution/system/service/impl/BehaviortreeServiceImpl.java @@ -99,24 +99,4 @@ public class BehaviortreeServiceImpl implements IBehaviortreeService { return behaviortreeMapper.deleteBehaviortreeById(id); } - - /** - * 复制行为树 - * @param behaviortree - * @return - */ - @Override - public int copy(Behaviortree behaviortree) { - if(ObjectUtil.isEmpty(behaviortree)){ - throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION); - } - String name = behaviortree.getName(); - String newName = name + "_" + behaviortree.getId(); - - String englishName = behaviortree.getEnglishName(); - String newEnglishName = englishName + "_" + behaviortree.getId(); - behaviortree.setEnglishName(newEnglishName); - behaviortree.setName(newName); - return behaviortreeMapper.insertBehaviortree(behaviortree); - } }