From 0e6b6d9f45922ba8c540f3460b13982e023dbdbc Mon Sep 17 00:00:00 2001 From: MHW Date: Mon, 13 Apr 2026 16:16:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=A1=8C=E4=B8=BA=E6=A0=91?= =?UTF-8?q?=E6=89=80=E5=B1=9E=E5=B9=B3=E5=8F=B0=E7=9A=84=E4=B8=8B=E5=B1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY_OFFLINE.md | 114 ++++++++++++++++++ .../behaviour/BehaviortreeController.java | 14 +++ .../com/solution/system/domain/Platform.java | 31 +++++ .../system/domain/PlatformCommunication.java | 40 ++++++ .../mapper/PlatformCommunicationMapper.java | 16 +++ .../system/mapper/PlatformMapper.java | 24 ++++ .../system/service/IBehaviortreeService.java | 7 ++ .../service/impl/BehaviortreeServiceImpl.java | 36 ++++++ .../system/PlatformCommunicationMapper.xml | 13 ++ .../mapper/system/PlatformMapper.xml | 23 ++++ 10 files changed, 318 insertions(+) create mode 100644 DEPLOY_OFFLINE.md create mode 100644 auto-solution-behaviour/src/main/java/com/solution/system/domain/Platform.java create mode 100644 auto-solution-behaviour/src/main/java/com/solution/system/domain/PlatformCommunication.java create mode 100644 auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformCommunicationMapper.java create mode 100644 auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformMapper.java create mode 100644 auto-solution-behaviour/src/main/resources/mapper/system/PlatformCommunicationMapper.xml create mode 100644 auto-solution-behaviour/src/main/resources/mapper/system/PlatformMapper.xml diff --git a/DEPLOY_OFFLINE.md b/DEPLOY_OFFLINE.md new file mode 100644 index 0000000..522cbdb --- /dev/null +++ b/DEPLOY_OFFLINE.md @@ -0,0 +1,114 @@ +# Docker 离线部署说明(方式 A) + +执行 `docker compose up -d` 即可启动。 + +## 1. 交付清单 + +请将以下内容放在同一目录(示例:`app/`): + +- `docker-compose.yml` +- `.env`(或将 `.env.example` 复制为 `.env` 后修改) +- `bundle-images.tar`(包含 `auto-solution-admin`、`mysql:8.0`、`redis:7-alpine`) +- `docker/mysql/init/01-ruoyi-table.sql` +- `docker/mysql/init/02-ruoyi-extra.sql` +- `docker/mysql/init/03-data.sql` + +目录示例: + +```text +app/ +├─ docker-compose.yml +├─ .env +├─ bundle-images.tar +└─ docker/ + └─ mysql/ + └─ init/ + ├─ 00-create-db.sql + ├─ 03-data.sql +``` + +## 2. 首次部署 + +在 `app` 目录执行: + +```bash +docker load -i bundle-images.tar +docker compose down -v +docker compose up -d +``` + +说明: + +- `down -v` 会删除旧数据卷,确保 MySQL 首次初始化时执行 `docker/mysql/init` 下的 SQL。 +- SQL 执行顺序按文件名字典序,务必保持 `01 -> 02 -> 03`。 + +## 3. 启动验证 + +```bash +docker ps +docker inspect autosolution-mysql --format '{{.State.Health.Status}}' +docker logs --tail 100 autosolution-mysql +docker logs --tail 100 autosolution-app +``` + +期望结果: + +- `autosolution-mysql` 状态为 `healthy` +- `autosolution-app` 状态为 `Up` + +## 4. 访问地址 + +- 后端默认端口:`1777` +- 访问地址:`http://<服务器IP>:1777` + +## 5. 常见问题 + +### 5.1 `Table 'autosolution_db.sys_config' doesn't exist` + +原因:初始化 SQL 未执行或执行失败。 + +处理: + +1. 确认 `docker/mysql/init` 下 SQL 文件存在且顺序正确 +2. 执行: + +```bash +docker compose down -v +docker compose up -d +``` + +3. 查看 MySQL 日志定位 SQL 报错: + +```bash +docker logs --tail 300 autosolution-mysql +``` + +### 5.2 `dependency failed to start: container autosolution-mysql is unhealthy` + +原因:MySQL 未通过健康检查(通常是 SQL 未执行完成或报错)。 + +处理: + +```bash +docker logs --tail 300 autosolution-mysql +``` + +根据日志修复 SQL 后重新 `down -v` 再启动。 + +## 6. 版本升级 + +替换新的 `bundle-images.tar`(及必要 SQL)后执行: + +```bash +docker load -i bundle-images.tar +docker compose down +docker compose up -d +``` + +如果本次升级包含库初始化变更并要求重建,请改用: + +```bash +docker compose down -v +docker compose up -d +``` + 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 c664e37..e7e17d0 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 @@ -134,4 +134,18 @@ public class BehaviortreeController extends BaseController return toAjax(behaviortreeService.deleteBehaviortreeByIds(ids)); } + /** + * 根据行为树id获取该行为树的下属 + * @param treeId + * @return + */ + @ApiOperation("根据行为树id获取该行为树的下属") + @PreAuthorize("@ss.hasPermi('system:behaviortree:query')") + @GetMapping("/underling/{treeId}") + public AjaxResult getUnderling(@PathVariable Integer treeId) + { + return success(behaviortreeService.getUnderling(treeId)); + } + + } diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/domain/Platform.java b/auto-solution-behaviour/src/main/java/com/solution/system/domain/Platform.java new file mode 100644 index 0000000..277803b --- /dev/null +++ b/auto-solution-behaviour/src/main/java/com/solution/system/domain/Platform.java @@ -0,0 +1,31 @@ +package com.solution.system.domain; + + +import lombok.Data; + +/** + * 平台表 + */ +@Data +public class Platform { + + /** + * 主键 + */ + private Integer id; + + /** + * 平台名称 + */ + private String name; + + /** + * 描述 + */ + private String description; + + /** + * 平台出现在想定上的想定id + */ + private Integer scenarioId; +} \ No newline at end of file diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/domain/PlatformCommunication.java b/auto-solution-behaviour/src/main/java/com/solution/system/domain/PlatformCommunication.java new file mode 100644 index 0000000..09f5bbd --- /dev/null +++ b/auto-solution-behaviour/src/main/java/com/solution/system/domain/PlatformCommunication.java @@ -0,0 +1,40 @@ +package com.solution.system.domain; + +import lombok.Data; + +/** + * 平台通信关系表 + */ +@Data +public class PlatformCommunication { + + /** + * 主键ID + */ + private Integer id; + + /** + * 指挥平台名称/ID + */ + private String commandPlatform; + + /** + * 下属平台名称/ID + */ + private String subordinatePlatform; + + /** + * 指挥通信方式/内容 + */ + private String commandComm; + + /** + * 下属通信方式/内容 + */ + private String subordinateComm; + + /** + * 想定ID + */ + private Integer scenaryId; +} \ No newline at end of file diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformCommunicationMapper.java b/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformCommunicationMapper.java new file mode 100644 index 0000000..4ad4a79 --- /dev/null +++ b/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformCommunicationMapper.java @@ -0,0 +1,16 @@ +package com.solution.system.mapper; + +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface PlatformCommunicationMapper { + + /** + * 根据平台name获取平台下属英文名 + * @param name + * @return + */ + List getUnderlingBytreeId(String name); +} diff --git a/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformMapper.java b/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformMapper.java new file mode 100644 index 0000000..7b89208 --- /dev/null +++ b/auto-solution-behaviour/src/main/java/com/solution/system/mapper/PlatformMapper.java @@ -0,0 +1,24 @@ +package com.solution.system.mapper; + +import com.solution.system.domain.Platform; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface PlatformMapper { + + /** + * 根据行为树id获取行为树所属平台 + * @param id + * @return + */ + Platform getPlatformByTreeId(Long id); + + /** + * 根据下属平台英文名获取中文名返回 + * @param underlingEnglishName + * @return + */ + List selectPlatformChineseName(List underlingEnglishName); +} 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 583124e..6c99d6d 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,4 +62,11 @@ public interface IBehaviortreeService * @return 结果 */ public int deleteBehaviortreeById(Long id); + + /** + * 根据行为树id获取该行为树的下属 + * @param treeId + * @return + */ + List getUnderling(Integer treeId); } 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 07b58ad..e95e38e 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 @@ -2,8 +2,12 @@ package com.solution.system.service.impl; import java.util.List; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.solution.common.constant.ExceptionConstants; +import com.solution.system.domain.Platform; +import com.solution.system.mapper.PlatformCommunicationMapper; +import com.solution.system.mapper.PlatformMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.solution.system.mapper.BehaviortreeMapper; @@ -22,6 +26,12 @@ public class BehaviortreeServiceImpl implements IBehaviortreeService @Autowired private BehaviortreeMapper behaviortreeMapper; + @Autowired + private PlatformCommunicationMapper platformCommunicationMapper; + + @Autowired + private PlatformMapper platformMapper; + @Override public Behaviortree findOneByPlatformId(Integer platformId) { @@ -99,4 +109,30 @@ public class BehaviortreeServiceImpl implements IBehaviortreeService { return behaviortreeMapper.deleteBehaviortreeById(id); } + + /** + * 根据行为树id获取该行为树的下属 + * @param treeId + * @return + */ + @Override + public List getUnderling(Integer treeId) { + if(null == treeId){ + throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION); + } + Behaviortree behaviortree = behaviortreeMapper.selectBehaviortreeById(Long.valueOf(treeId)); + if(ObjectUtil.isEmpty(behaviortree) && null == behaviortree.getId()){ + throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION); + } + //根据行为树id获取行为树所属平台 + Platform platform = platformMapper.getPlatformByTreeId(behaviortree.getId()); + //根据平台name获取平台下属英文名 + List underlingEnglishName = platformCommunicationMapper.getUnderlingBytreeId(platform.getName()); + //根据下属平台英文名获取中文名返回 + List underlingChineseName = platformMapper.selectPlatformChineseName(underlingEnglishName); + if(CollUtil.isEmpty(underlingChineseName)){ + throw new RuntimeException("该平台暂无下属"); + } + return underlingChineseName; + } } diff --git a/auto-solution-behaviour/src/main/resources/mapper/system/PlatformCommunicationMapper.xml b/auto-solution-behaviour/src/main/resources/mapper/system/PlatformCommunicationMapper.xml new file mode 100644 index 0000000..c9e9a11 --- /dev/null +++ b/auto-solution-behaviour/src/main/resources/mapper/system/PlatformCommunicationMapper.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/auto-solution-behaviour/src/main/resources/mapper/system/PlatformMapper.xml b/auto-solution-behaviour/src/main/resources/mapper/system/PlatformMapper.xml new file mode 100644 index 0000000..e5d3368 --- /dev/null +++ b/auto-solution-behaviour/src/main/resources/mapper/system/PlatformMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file